{
  "openapi": "3.0.4",
  "info": {
    "title": "Fulcrum PublicAPI",
    "version": "v1"
  },
  "servers": [
    {
      "url": "https://api.fulcrumpro.com"
    }
  ],
  "paths": {
    "/api/accounting-codes": {
      "post": {
        "tags": [
          "Accounting Code"
        ],
        "summary": "Create an accounting code",
        "operationId": "CreateAccountingCode",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TagCreateBaseDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagCreateBaseDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TagCreateBaseDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TagCreateBaseDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Accounting code created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/accounting-codes/{id}": {
      "get": {
        "tags": [
          "Accounting Code"
        ],
        "summary": "Get an accounting code.",
        "operationId": "GetAccountingCode",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The accounting code for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              }
            }
          },
          "404": {
            "description": "Accounting code did not exist"
          }
        }
      }
    },
    "/api/accounting-codes/list": {
      "post": {
        "tags": [
          "Accounting Code"
        ],
        "summary": "Find accounting codes based on search parameters.",
        "operationId": "ListAccountingCode",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of accounting codes matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/attachments": {
      "post": {
        "tags": [
          "Attachment"
        ],
        "summary": "Create an attachment",
        "operationId": "CreateAttachment",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "Detail.IsNoteAttachment",
                  "File"
                ],
                "type": "object",
                "properties": {
                  "File": {
                    "type": "string",
                    "description": "The file itself",
                    "format": "binary"
                  },
                  "Detail.Owner.Type": {
                    "$ref": "#/components/schemas/CommonEnumOwnerTypeCreateEnum"
                  },
                  "Detail.Owner.Id": {
                    "maxLength": 36,
                    "minLength": 24,
                    "type": "string",
                    "description": "The primary owner id of this attachment."
                  },
                  "Detail.Description": {
                    "maxLength": 200,
                    "minLength": 1,
                    "type": "string",
                    "description": "File description"
                  },
                  "Detail.IsNoteAttachment": {
                    "type": "boolean",
                    "description": "Indicates whether this attachment is bound to a note."
                  },
                  "Detail.Parent.Type": {
                    "$ref": "#/components/schemas/CommonEnumOwnerTypeCreateEnum"
                  },
                  "Detail.Parent.Id": {
                    "maxLength": 36,
                    "minLength": 24,
                    "type": "string",
                    "description": "The primary owner id of this attachment."
                  },
                  "Detail.Metadata": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string",
                      "nullable": true
                    },
                    "description": "Metadata to associate to the attachment."
                  }
                }
              },
              "encoding": {
                "File": {
                  "style": "form"
                },
                "Detail.Owner.Type": {
                  "style": "form"
                },
                "Detail.Owner.Id": {
                  "style": "form"
                },
                "Detail.Description": {
                  "style": "form"
                },
                "Detail.IsNoteAttachment": {
                  "style": "form"
                },
                "Detail.Parent.Type": {
                  "style": "form"
                },
                "Detail.Parent.Id": {
                  "style": "form"
                },
                "Detail.Metadata": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/attachments/remote": {
      "post": {
        "tags": [
          "Attachment"
        ],
        "summary": "Create an attachment based on a remote data endpoint.",
        "operationId": "CreateRemoteAttachment",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentRemoteCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentRemoteCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentRemoteCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentRemoteCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/attachments/{attachmentId}": {
      "delete": {
        "tags": [
          "Attachment"
        ],
        "summary": "Delete a specific attachment",
        "operationId": "DeleteAttachment",
        "parameters": [
          {
            "name": "attachmentId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Attachment did not exist"
          },
          "410": {
            "description": "Attachment record had an invalid Id value"
          }
        }
      },
      "get": {
        "tags": [
          "Attachment"
        ],
        "summary": "Get a specific attachment",
        "operationId": "GetAttachment",
        "parameters": [
          {
            "name": "attachmentId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The attachment for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AttachmentDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/AttachmentDto"
                }
              }
            }
          },
          "404": {
            "description": "Attachment did not exist"
          }
        }
      }
    },
    "/api/attachments/{attachmentId}/download": {
      "get": {
        "tags": [
          "Attachment"
        ],
        "summary": "Download a specific attachment",
        "operationId": "DownloadAttachment",
        "parameters": [
          {
            "name": "attachmentId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "fileName",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The attachment for the given id"
          },
          "404": {
            "description": "Attachment did not exist"
          }
        }
      }
    },
    "/api/attachments/download": {
      "post": {
        "tags": [
          "Attachment"
        ],
        "summary": "Download attachment(s) for a given filter in ZIP format",
        "operationId": "DownloadAttachments",
        "parameters": [
          {
            "name": "fileName",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentRequestFindParameters"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The attachments for the given filter"
          },
          "400": {
            "description": "File extension not supported"
          },
          "404": {
            "description": "No attachments exist"
          }
        }
      }
    },
    "/api/attachments/list": {
      "post": {
        "tags": [
          "Attachment"
        ],
        "summary": "Find attachments based on search parameters.",
        "operationId": "ListAttachment",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AttachmentRequestFindParameters"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "List of attachments matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AttachmentDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AttachmentDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/attachments/certification": {
      "post": {
        "tags": [
          "Attachment Certification"
        ],
        "summary": "Create a certification attachment",
        "operationId": "CreateCertificationAttachment",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "required": [
                  "File"
                ],
                "type": "object",
                "properties": {
                  "File": {
                    "type": "string",
                    "description": "The file itself",
                    "format": "binary"
                  },
                  "Detail.Owner.Type": {
                    "$ref": "#/components/schemas/CommonEnumOwnerTypeCertificationEnum"
                  },
                  "Detail.Owner.Id": {
                    "maxLength": 36,
                    "minLength": 24,
                    "type": "string",
                    "description": "The primary owner id of this attachment."
                  },
                  "Detail.Description": {
                    "maxLength": 200,
                    "minLength": 1,
                    "type": "string",
                    "description": "File description"
                  },
                  "Detail.Metadata": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string",
                      "nullable": true
                    },
                    "description": "Metadata to associate to the attachment."
                  },
                  "Detail.LotId": {
                    "maxLength": 24,
                    "minLength": 24,
                    "type": "string",
                    "description": "Lot id."
                  }
                }
              },
              "encoding": {
                "File": {
                  "style": "form"
                },
                "Detail.Owner.Type": {
                  "style": "form"
                },
                "Detail.Owner.Id": {
                  "style": "form"
                },
                "Detail.Description": {
                  "style": "form"
                },
                "Detail.Metadata": {
                  "style": "form"
                },
                "Detail.LotId": {
                  "style": "form"
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/auth/validate": {
      "get": {
        "tags": [
          "Auth"
        ],
        "summary": "Get details about a token used to authenticate the request",
        "operationId": "GetValidate",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthValidateResultDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/AuthValidateResultDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/capas/{capaId}": {
      "get": {
        "tags": [
          "CAPAs"
        ],
        "summary": "Get a specific CAPA by id.",
        "operationId": "GetCapa",
        "parameters": [
          {
            "name": "capaId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The CAPA for the given id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CAPACapaDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CAPACapaDto"
                }
              }
            }
          },
          "404": {
            "description": "A CAPA with that id does not exist."
          }
        }
      }
    },
    "/api/capas/list": {
      "post": {
        "tags": [
          "CAPAs"
        ],
        "summary": "Finds CAPAs based on search parameters",
        "operationId": "ListCAPA",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CAPARequestCapaListParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CAPARequestCapaListParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CAPARequestCapaListParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CAPARequestCapaListParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoCAPACapaDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoCAPACapaDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/chart-of-accounts/{id}": {
      "get": {
        "tags": [
          "Chart Of Accounts"
        ],
        "summary": "Get an account class.",
        "operationId": "GetChartOfAccounts",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The account for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              }
            }
          },
          "404": {
            "description": "Account did not exist"
          }
        }
      }
    },
    "/api/chart-of-accounts/list": {
      "post": {
        "tags": [
          "Chart Of Accounts"
        ],
        "summary": "Find accounts based on search parameters.",
        "operationId": "ListChartOfAccounts",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of accounts matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/companies/{companyId}": {
      "get": {
        "tags": [
          "Company Info"
        ],
        "summary": "Get info for a specific company.",
        "operationId": "GetCompanyInfo",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The info for the given company id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompanyInfoDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CompanyInfoDto"
                }
              }
            }
          },
          "404": {
            "description": "Company did not exist"
          }
        }
      }
    },
    "/api/companies/list": {
      "post": {
        "tags": [
          "Company Info"
        ],
        "summary": "Find company information based on search parameters.",
        "operationId": "ListCompanyInfo",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CompanyInfoRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompanyInfoRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CompanyInfoRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CompanyInfoRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of company information sets matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CompanyInfoDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CompanyInfoDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/custom-fields/{id}": {
      "get": {
        "tags": [
          "Custom Field"
        ],
        "summary": "Get a custom field.",
        "operationId": "GetCustomField",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The custom field for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldDto"
                }
              }
            }
          },
          "404": {
            "description": "Custom field did not exist"
          }
        }
      }
    },
    "/api/custom-fields/list": {
      "post": {
        "tags": [
          "Custom Field"
        ],
        "summary": "Find custom fields based on search parameters.",
        "operationId": "ListCustomField",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of custom fields matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomFieldDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomFieldDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/customers": {
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Create a new customer",
        "operationId": "CreateCustomer",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Customer created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/customers/{customerId}": {
      "delete": {
        "tags": [
          "Customer"
        ],
        "summary": "Delete a specific customer",
        "operationId": "DeleteCustomer",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Customer did not exist"
          }
        }
      },
      "get": {
        "tags": [
          "Customer"
        ],
        "summary": "Get a specific customer",
        "operationId": "GetCustomer",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The customer for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDto"
                }
              }
            }
          },
          "404": {
            "description": "Customer did not exist"
          }
        }
      },
      "patch": {
        "tags": [
          "Customer"
        ],
        "summary": "Partially update a customer",
        "operationId": "PatchCustomer",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Customer item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDto"
                }
              }
            }
          },
          "404": {
            "description": "Customer did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Customer"
        ],
        "summary": "Update a specific customer",
        "operationId": "UpdateCustomer",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The customer for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerDto"
                }
              }
            }
          },
          "404": {
            "description": "Customer did not exist"
          }
        }
      }
    },
    "/api/customers/list": {
      "post": {
        "tags": [
          "Customer"
        ],
        "summary": "Find customers based on search parameters.",
        "operationId": "ListCustomer",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of customers matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/customer-tiers/{id}": {
      "get": {
        "tags": [
          "Customer Tier"
        ],
        "summary": "Get a customer tier.",
        "operationId": "GetCustomerTier",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The customer tier for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerTierDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerTierDto"
                }
              }
            }
          },
          "404": {
            "description": "Customer tier did not exist"
          }
        }
      }
    },
    "/api/customer-tiers/list": {
      "post": {
        "tags": [
          "Customer Tier"
        ],
        "summary": "Find customer tiers based on search parameters.",
        "operationId": "ListCustomerTier",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerTierRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerTierRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerTierRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerTierRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of customer tiers matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerTierDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerTierDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/customers/{customerId}/addresses": {
      "post": {
        "tags": [
          "Customer Address"
        ],
        "summary": "Create a new customer address",
        "operationId": "CreateCustomerAddress",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CommonAddressCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CommonAddressCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CommonAddressCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CommonAddressCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Customer address created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          },
          "404": {
            "description": "Customer with the given id did not exist"
          }
        }
      }
    },
    "/api/customers/{customerId}/addresses/{customerAddressId}": {
      "delete": {
        "tags": [
          "Customer Address"
        ],
        "summary": "Delete a specific customer address",
        "operationId": "DeleteCustomerAddress",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "customerAddressId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Customer address did not exist"
          },
          "404": {
            "description": "The customer did not exist"
          }
        }
      },
      "get": {
        "tags": [
          "Customer Address"
        ],
        "summary": "Get a specific customer address",
        "operationId": "GetCustomerAddress",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "customerAddressId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The customer address for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerAddressDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerAddressDto"
                }
              }
            }
          },
          "404": {
            "description": "Customer did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Customer Address"
        ],
        "summary": "Update a specific customer address",
        "operationId": "UpdateCustomerAddress",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "customerAddressId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerAddressUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerAddressUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerAddressUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerAddressUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The customer address for the given id"
          },
          "404": {
            "description": "Customer did not exist"
          }
        }
      }
    },
    "/api/customers/{customerId}/addresses/list": {
      "post": {
        "tags": [
          "Customer Address"
        ],
        "summary": "Get a list of addresses for a customer",
        "operationId": "ListCustomerAddress",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of addresses for the given customer id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerAddressDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerAddressDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The customer did not exist"
          }
        }
      }
    },
    "/api/customers/{customerId}/contacts": {
      "post": {
        "tags": [
          "Customer Contact"
        ],
        "summary": "Create a new customer contact",
        "operationId": "CreateCustomerContact",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerContactCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerContactCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerContactCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerContactCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Customer contact created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          },
          "404": {
            "description": "Customer with the given id did not exist"
          }
        }
      }
    },
    "/api/customers/{customerId}/contacts/{contactId}": {
      "delete": {
        "tags": [
          "Customer Contact"
        ],
        "summary": "Delete a specific customer contact",
        "operationId": "DeleteCustomerContact",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The id of the customer to modify contacts for",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "contactId",
            "in": "path",
            "description": "The id of the customer contact.",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Customer contact did not exist"
          },
          "404": {
            "description": "The customer did not exist"
          }
        }
      },
      "get": {
        "tags": [
          "Customer Contact"
        ],
        "summary": "Get a specific customer contact",
        "operationId": "GetCustomerContact",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The id of the customer to modify contacts for",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "contactId",
            "in": "path",
            "description": "The id of the customer contact.",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The customer contact for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerContactDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomerContactDto"
                }
              }
            }
          },
          "404": {
            "description": "Customer or contact did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Customer Contact"
        ],
        "summary": "Update a specific customer contact",
        "operationId": "UpdateCustomerContact",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "The id of the customer to modify contacts for",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "contactId",
            "in": "path",
            "description": "The id of the customer contact.",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The new data to apply to the given index",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerContactUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerContactUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerContactUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomerContactUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The customer for the given id"
          },
          "404": {
            "description": "Customer did not exist or no contact existed at the specified index"
          }
        }
      }
    },
    "/api/customers/{customerId}/contacts/list": {
      "post": {
        "tags": [
          "Customer Contact"
        ],
        "summary": "Get a list of contacts for a customer",
        "operationId": "ListCustomerContact",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of contacts for the given customer id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerContactDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CustomerContactDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The customer did not exist"
          }
        }
      }
    },
    "/api/departments/{id}": {
      "get": {
        "tags": [
          "Department"
        ],
        "summary": "Get a department.",
        "operationId": "GetDepartment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The department for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DepartmentDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/DepartmentDto"
                }
              }
            }
          },
          "404": {
            "description": "Department did not exist"
          }
        }
      }
    },
    "/api/departments/list": {
      "post": {
        "tags": [
          "Department"
        ],
        "summary": "Find departments based on search parameters.",
        "operationId": "ListDepartment",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/DepartmentRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DepartmentRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DepartmentRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DepartmentRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of departments matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DepartmentDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DepartmentDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/equipment/{id}": {
      "get": {
        "tags": [
          "Equipment"
        ],
        "summary": "Get a piece of equipment.",
        "operationId": "GetEquipment",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The equipment for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EquipmentDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/EquipmentDto"
                }
              }
            }
          },
          "404": {
            "description": "Equipment did not exist"
          }
        }
      }
    },
    "/api/equipment/list": {
      "post": {
        "tags": [
          "Equipment"
        ],
        "summary": "Find equipment based on search parameters.",
        "operationId": "ListEquipment",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/EquipmentRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EquipmentRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/EquipmentRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/EquipmentRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of equipment matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EquipmentDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/EquipmentDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/gauge-codes/{id}": {
      "get": {
        "tags": [
          "Gauge Code"
        ],
        "summary": "Get a gauge code.",
        "operationId": "GetGaugeCode",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The gauge code for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              }
            }
          },
          "404": {
            "description": "Gauge code did not exist"
          }
        }
      }
    },
    "/api/gauge-codes/list": {
      "post": {
        "tags": [
          "Gauge Code"
        ],
        "summary": "Find gauge codes based on search parameters.",
        "operationId": "ListGaugeCode",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of gauge codes matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/grade-codes/{id}": {
      "get": {
        "tags": [
          "Grade Code"
        ],
        "summary": "Get a grade code.",
        "operationId": "GetGradeCode",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The grade code for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              }
            }
          },
          "404": {
            "description": "Grade code did not exist"
          }
        }
      }
    },
    "/api/grade-codes/list": {
      "post": {
        "tags": [
          "Grade Code"
        ],
        "summary": "Find grade codes based on search parameters.",
        "operationId": "ListGradeCode",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of grade codes matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/in-process-tracking-field-types/{id}": {
      "get": {
        "tags": [
          "InProcessTrackingFieldType"
        ],
        "summary": "Get an in process tracking field type",
        "operationId": "GetInProcessTrackingFieldType",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The in process tracking field type for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InProcessTrackingFieldTypeDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InProcessTrackingFieldTypeDto"
                }
              }
            }
          },
          "404": {
            "description": "In process tracking field type did not exist"
          }
        }
      }
    },
    "/api/in-process-tracking-field-types": {
      "post": {
        "tags": [
          "InProcessTrackingFieldType"
        ],
        "summary": "Lists in process tracking field types",
        "operationId": "ListInProcessTrackingFieldType",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/InProcessTrackingFieldTypeRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InProcessTrackingFieldTypeRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InProcessTrackingFieldTypeRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InProcessTrackingFieldTypeRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The in process tracking field types",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InProcessTrackingFieldTypeDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InProcessTrackingFieldTypeDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/inventory/list": {
      "post": {
        "tags": [
          "Inventory"
        ],
        "summary": "Find inventory based on search parameters.",
        "operationId": "ListInventory",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of locations matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InventoryDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InventoryDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/inventory/byItem": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Returns on hand counts by item.  Excludes reserved inventory counts by default, but can be included by passing in the ```includeReserved``` query parameter.\nNOTE: If the response does not contain an item identifier, it means there is no quantity on hand.",
        "operationId": "OnHandByItem",
        "parameters": [
          {
            "name": "includeReserved",
            "in": "query",
            "description": "Whether to included reserved inventory into the counts",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "number",
                    "format": "double"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "number",
                    "format": "double"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/inventory/override": {
      "post": {
        "tags": [
          "Inventory"
        ],
        "summary": "Override an inventory's quantity.",
        "operationId": "OverrideInventory",
        "requestBody": {
          "description": "The parameters for the request",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryOverrideDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryOverrideDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryOverrideDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryOverrideDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Inventory override was successfully processed"
          },
          "400": {
            "description": "Validation issues with the request"
          },
          "500": {
            "description": "An unspecified error occurred with the request"
          }
        }
      }
    },
    "/api/inventory/pick": {
      "post": {
        "tags": [
          "Inventory"
        ],
        "summary": "Pick inventory against a specific item.",
        "operationId": "PickInventory",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryPickDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryPickDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryPickDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryPickDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Inventory transaction processed"
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/inventory/availableByItem": {
      "get": {
        "tags": [
          "Inventory"
        ],
        "summary": "Returns quantity available by item. This is the on hand + incoming supply - demand.\nNOTE: If the response does not contain an item identifier, it means there is no quantity on hand.",
        "operationId": "QuantityAvailableByItem",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "number",
                    "format": "double"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "number",
                    "format": "double"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/inventory/receive": {
      "post": {
        "tags": [
          "Inventory"
        ],
        "summary": "Receive inventory for a specific item.",
        "operationId": "ReceiveInventory",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryReceiveDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryReceiveDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryReceiveDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryReceiveDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Inventory transaction processed"
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/inventory-events/{inventoryEventId}": {
      "get": {
        "tags": [
          "Inventory Event"
        ],
        "summary": "Get a specific inventory event",
        "operationId": "GetInventoryEvent",
        "parameters": [
          {
            "name": "inventoryEventId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The inventory event for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryEventsInventoryEventDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryEventsInventoryEventDto"
                }
              }
            }
          },
          "404": {
            "description": "Inventory event did not exist"
          }
        }
      }
    },
    "/api/inventory-events/list": {
      "post": {
        "tags": [
          "Inventory Event"
        ],
        "summary": "Find inventory events based on search parameters.",
        "operationId": "ListInventoryEvent",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryEventRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryEventRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryEventRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryEventRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of inventory events matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoInventoryEventsInventoryEventDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoInventoryEventsInventoryEventDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/inventory-events/{inventoryEventId}/details": {
      "patch": {
        "tags": [
          "Inventory Event Details"
        ],
        "summary": "Partially update an inventory event's details",
        "operationId": "PatchInventoryEventDetails",
        "parameters": [
          {
            "name": "inventoryEventId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Inventory event details item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryEventDetailsDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryEventDetailsDto"
                }
              }
            }
          },
          "404": {
            "description": "Inventory event details did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Inventory Event Details"
        ],
        "summary": "Update a specific inventory event details",
        "operationId": "UpdateInventoryEventDetails",
        "parameters": [
          {
            "name": "inventoryEventId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryEventDetailsUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryEventDetailsUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryEventDetailsUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryEventDetailsUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The inventory event details for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryEventDetailsDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryEventDetailsDto"
                }
              }
            }
          },
          "404": {
            "description": "Inventory event details did not exist"
          }
        }
      },
      "get": {
        "tags": [
          "Inventory Event Details"
        ],
        "summary": "Get a specific inventory event",
        "operationId": "GetInventoryEventDetails",
        "parameters": [
          {
            "name": "inventoryEventId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The inventory event details for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryEventDetailsDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryEventDetailsDto"
                }
              }
            }
          },
          "404": {
            "description": "Inventory event details did not exist"
          }
        }
      }
    },
    "/api/inventory-lots": {
      "post": {
        "tags": [
          "Inventory Lot"
        ],
        "summary": "Create a new inventory lot.",
        "operationId": "CreateInventoryLot",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryLotCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryLotCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryLotCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryLotCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Item created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/inventory-lots/{id}": {
      "get": {
        "tags": [
          "Inventory Lot"
        ],
        "summary": "Get an inventory lot.",
        "operationId": "GetInventoryLot",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The inventory lot for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryLotDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InventoryLotDto"
                }
              }
            }
          },
          "404": {
            "description": "Inventory lot did not exist"
          }
        }
      }
    },
    "/api/inventory-lots/list": {
      "post": {
        "tags": [
          "Inventory Lot"
        ],
        "summary": "Find inventory lots based on search parameters.",
        "operationId": "ListInventoryLot",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryLotRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryLotRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryLotRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryLotRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of inventory lots matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InventoryLotDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InventoryLotDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/inventory-transactions/list": {
      "post": {
        "tags": [
          "Inventory Transactions"
        ],
        "summary": "Finds inventory transactions based on search parameters",
        "operationId": "ListInventoryTransactions",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryTransactionsListParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryTransactionsListParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryTransactionsListParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryTransactionsListParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoInventoryTransactionDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoInventoryTransactionDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/invoices/{invoiceId}": {
      "get": {
        "tags": [
          "Invoice"
        ],
        "summary": "Get a specific invoice",
        "operationId": "GetInvoice",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The invoice for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceDto"
                }
              }
            }
          },
          "404": {
            "description": "Invoice did not exist"
          }
        }
      },
      "patch": {
        "tags": [
          "Invoice"
        ],
        "summary": "Partially update an invoice",
        "operationId": "PatchInvoice",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Invoice item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceDto"
                }
              }
            }
          },
          "404": {
            "description": "Invoice did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Invoice"
        ],
        "summary": "Update an invoice",
        "operationId": "UpdateInvoice",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/InvoiceUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InvoiceUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InvoiceUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InvoiceUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Invoice item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceDto"
                }
              }
            }
          },
          "404": {
            "description": "Invoice did not exist"
          }
        }
      }
    },
    "/api/invoices/list": {
      "post": {
        "tags": [
          "Invoice"
        ],
        "summary": "Find invoices based on search parameters.",
        "operationId": "ListInvoice",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/InvoiceRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InvoiceRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InvoiceRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InvoiceRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of invoices matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/invoices/{invoiceId}/status": {
      "post": {
        "tags": [
          "Invoice"
        ],
        "summary": "Update an invoice status",
        "operationId": "StatusUpdateInvoice",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/InvoiceRequestUpdateStatus"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InvoiceRequestUpdateStatus"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InvoiceRequestUpdateStatus"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InvoiceRequestUpdateStatus"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Invoice cannot be moved to requested status"
          },
          "404": {
            "description": "Invoice did not exist"
          }
        }
      }
    },
    "/api/invoices/{invoiceId}/deposit-adjustment-line-items/{lineItemId}": {
      "get": {
        "tags": [
          "Invoice Deposit Adjustment Line Item"
        ],
        "summary": "Get a specific deposit adjustment line item for an invoice",
        "operationId": "GetDepositAdjustmentLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deposit adjustment line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceDepositAdjustmentLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceDepositAdjustmentLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Invoice or deposit adjustment line item did not exist"
          }
        }
      }
    },
    "/api/invoices/{invoiceId}/deposit-adjustment-line-items/list": {
      "post": {
        "tags": [
          "Invoice Deposit Adjustment Line Item"
        ],
        "summary": "Get a list of deposit adjustment lines items for an invoice",
        "operationId": "ListDepositAdjustmentLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of deposit adjustment line items for the given invoice id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceDepositAdjustmentLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceDepositAdjustmentLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The invoice did not exist"
          }
        }
      }
    },
    "/api/invoices/{invoiceId}/deposit-line-items/{lineItemId}": {
      "get": {
        "tags": [
          "Invoice Deposit Line Item"
        ],
        "summary": "Get a specific deposit line item for an invoice",
        "operationId": "GetInvoiceDepositLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Deposit line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceDepositLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceDepositLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Invoice or deposit line item did not exist"
          }
        }
      }
    },
    "/api/invoices/{invoiceId}/deposit-line-items/list": {
      "post": {
        "tags": [
          "Invoice Deposit Line Item"
        ],
        "summary": "Get a list of deposit lines items for an invoice",
        "operationId": "ListInvoiceDepositLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of deposit line items for the given invoice id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceDepositLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceDepositLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The invoice did not exist"
          }
        }
      }
    },
    "/api/invoices/{invoiceId}/discount-line-item": {
      "get": {
        "tags": [
          "Invoice Discount Line Item"
        ],
        "summary": "Get the discount line item for an invoice",
        "operationId": "GetInvoiceDiscountLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Discount line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceDiscountLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceDiscountLineItemDto"
                }
              }
            }
          },
          "204": {
            "description": "Discount line item does not exist"
          },
          "404": {
            "description": "Invoice did not exist"
          }
        }
      }
    },
    "/api/invoices/{invoiceId}/fee-line-items/{lineItemId}": {
      "get": {
        "tags": [
          "Invoice Fee Line Item"
        ],
        "summary": "Get a specific fee line item for an invoice",
        "operationId": "GetInvoiceFeeLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Fee line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceFeeLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceFeeLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Invoice or fee line items did not exist"
          }
        }
      },
      "patch": {
        "tags": [
          "Invoice Fee Line Item"
        ],
        "summary": "Partially update a specific fee line item for a purchase order",
        "operationId": "PatchInvoiceFeeLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Fee line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceFeeLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceFeeLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Invoice or line item did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Invoice Fee Line Item"
        ],
        "summary": "Update a specific fee line item for an invoice",
        "operationId": "UpdateInvoiceFeeLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/InvoiceFeeLineItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InvoiceFeeLineItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InvoiceFeeLineItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InvoiceFeeLineItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Fee line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceFeeLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceFeeLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Invoice or line item did not exist"
          }
        }
      }
    },
    "/api/invoices/{invoiceId}/fee-line-items/list": {
      "post": {
        "tags": [
          "Invoice Fee Line Item"
        ],
        "summary": "Get a list of fee lines items for an invoice",
        "operationId": "ListInvoiceFeeLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of fee line items for the given invoice id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceFeeLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceFeeLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The invoice did not exist"
          }
        }
      }
    },
    "/api/invoices/{invoiceId}/line-items/{lineItemId}": {
      "get": {
        "tags": [
          "Invoice Line Item"
        ],
        "summary": "Get a specific line item for an invoice of generic type",
        "operationId": "GetInvoiceLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Invoice or line item did not exist"
          }
        }
      }
    },
    "/api/invoices/{invoiceId}/line-items/list": {
      "post": {
        "tags": [
          "Invoice Line Item"
        ],
        "summary": "Get a list of lines items for an invoice, regardless of type",
        "operationId": "ListInvoiceLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of all line items for the given invoice id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The invoice did not exist"
          }
        }
      }
    },
    "/api/invoices/{invoiceId}/notes/list": {
      "post": {
        "tags": [
          "Invoice Note"
        ],
        "summary": "TO BE REMOVED 08/18/2023 - Get a list of notes for an invoice",
        "description": "Use root /note API instead",
        "operationId": "ListInvoiceNote",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of notes for the given invoice id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CommonNoteDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CommonNoteDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The invoice did not exist"
          }
        },
        "deprecated": true
      }
    },
    "/api/invoices/{invoiceId}/part-line-items/{lineItemId}": {
      "get": {
        "tags": [
          "Invoice Part Line Item"
        ],
        "summary": "Get a specific part line item for an invoice",
        "operationId": "GetInvoicePartLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Part line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoicePartLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoicePartLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Invoice or line items did not exist"
          }
        }
      },
      "patch": {
        "tags": [
          "Invoice Part Line Item"
        ],
        "summary": "Partially update a specific part line item for an invoice",
        "operationId": "PatchInvoicePartLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Part line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoicePartLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoicePartLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Invoice or line item did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Invoice Part Line Item"
        ],
        "summary": "Update a specific part line item for an invoice",
        "operationId": "UpdateInvoicePartLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/InvoicePartLineItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InvoicePartLineItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InvoicePartLineItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InvoicePartLineItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Part line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoicePartLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoicePartLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Invoice or line item did not exist"
          }
        }
      }
    },
    "/api/invoices/{invoiceId}/part-line-items/list": {
      "post": {
        "tags": [
          "Invoice Part Line Item"
        ],
        "summary": "Get a list of part lines items for an invoice",
        "operationId": "ListInvoicePartLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of part line items for the given invoice id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoicePartLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoicePartLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The invoice did not exist"
          }
        }
      }
    },
    "/api/invoices/{invoiceId}/refund-line-items/{lineItemId}": {
      "get": {
        "tags": [
          "Invoice Refund Line Item"
        ],
        "summary": "Get a specific refund line item for an invoice",
        "operationId": "GetInvoiceRefundLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Refund line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceRefundLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceRefundLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Invoice or line items did not exist"
          }
        }
      },
      "patch": {
        "tags": [
          "Invoice Refund Line Item"
        ],
        "summary": "Partially update a specific refund line item for a purchase order",
        "operationId": "PatchInvoiceRefundLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Refund line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceRefundLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceRefundLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Invoice or line item did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Invoice Refund Line Item"
        ],
        "summary": "Update a specific refund line item for an invoice",
        "operationId": "UpdateInvoiceRefundLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/InvoiceRefundLineItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InvoiceRefundLineItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InvoiceRefundLineItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InvoiceRefundLineItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Refund line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceRefundLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceRefundLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Invoice or line item did not exist"
          }
        }
      }
    },
    "/api/invoices/{invoiceId}/refund-line-items/list": {
      "post": {
        "tags": [
          "Invoice Refund Line Item"
        ],
        "summary": "Get a list of refund lines items for an invoice",
        "operationId": "ListInvoiceRefundLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of refund line items for the given invoice id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceRefundLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceRefundLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The invoice did not exist"
          }
        }
      }
    },
    "/api/invoices/{invoiceId}/shipping-charge-line-item": {
      "get": {
        "tags": [
          "Invoice Shipping Charge Line Item"
        ],
        "summary": "Get the shipping charge line item for an invoice",
        "operationId": "GetInvoiceShippingChargeLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Shipping charge line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceShippingChargeLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceShippingChargeLineItemDto"
                }
              }
            }
          },
          "204": {
            "description": "Shipping charge line item does not exist"
          },
          "404": {
            "description": "Invoice did not exist"
          }
        }
      }
    },
    "/api/invoices/{invoiceId}/tax-line-items/{lineItemId}": {
      "get": {
        "tags": [
          "Invoice Tax Line Item"
        ],
        "summary": "Get a specific tax line item for an invoice",
        "operationId": "GetInvoiceTaxLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Tax line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceTaxLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/InvoiceTaxLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Invoice or tax line item did not exist"
          }
        }
      }
    },
    "/api/invoices/{invoiceId}/tax-line-items/list": {
      "post": {
        "tags": [
          "Invoice Tax Line Item"
        ],
        "summary": "Get a list of tax lines items for an invoice",
        "operationId": "ListInvoiceTaxLineItem",
        "parameters": [
          {
            "name": "invoiceId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of tax line items for the given invoice id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceTaxLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/InvoiceTaxLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The invoice did not exist"
          }
        }
      }
    },
    "/api/items/{itemId}/revision": {
      "post": {
        "tags": [
          "Item"
        ],
        "summary": "Add a revision to an item",
        "operationId": "AddRevisionItem",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRequestAddRevision"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRequestAddRevision"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRequestAddRevision"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRequestAddRevision"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Item did not exist"
          },
          "409": {
            "description": "Item revision already exists"
          }
        }
      }
    },
    "/api/items": {
      "post": {
        "tags": [
          "Item"
        ],
        "summary": "Create a new item",
        "operationId": "CreateItem",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Item created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/items/{itemId}": {
      "get": {
        "tags": [
          "Item"
        ],
        "summary": "Get a specific item",
        "operationId": "GetItem",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The item for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Item did not exist"
          }
        }
      },
      "patch": {
        "tags": [
          "Item"
        ],
        "summary": "Partially update an item",
        "operationId": "PatchItem",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Item did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Item"
        ],
        "summary": "Update a specific item",
        "operationId": "UpdateItem",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Item did not exist"
          }
        }
      }
    },
    "/api/items/{itemId}/can-make": {
      "get": {
        "tags": [
          "Item"
        ],
        "summary": "Get the can-make quantities for an item. Returns how much of this item can be produced\nfrom current subcomponent inventory (on-hand and available).",
        "operationId": "GetItemCanMake",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The can-make quantities for the given item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemCanMakeDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemCanMakeDto"
                }
              }
            }
          },
          "404": {
            "description": "Item id provided was not found"
          },
          "400": {
            "description": "Item is not a make item"
          }
        }
      }
    },
    "/api/items/list": {
      "post": {
        "tags": [
          "Item"
        ],
        "summary": "TO BE REMOVED 11/02/2023 - Find items based on search parameters.",
        "description": "Use V2 which includes a list of number filters",
        "operationId": "ListItem",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of items matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemDto"
                  }
                }
              }
            }
          }
        },
        "deprecated": true
      }
    },
    "/api/items/list/v2": {
      "post": {
        "tags": [
          "Item"
        ],
        "summary": "Find items based on search parameters.",
        "operationId": "ListItemV2",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRequestFindParametersV2"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRequestFindParametersV2"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRequestFindParametersV2"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRequestFindParametersV2"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of items matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemListDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemListDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/items/{itemId}/inventory/pick": {
      "post": {
        "tags": [
          "Item"
        ],
        "summary": "TO BE REMOVED 10/13/2023 - Pick inventory against a specific item.",
        "description": "Use /inventory/pick API instead",
        "operationId": "PickItemInventory",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryRequestItemInventoryPickEvent"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryRequestItemInventoryPickEvent"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryRequestItemInventoryPickEvent"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryRequestItemInventoryPickEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Inventory transaction processed"
          },
          "400": {
            "description": "Validation issues with input"
          }
        },
        "deprecated": true
      }
    },
    "/api/items/{itemId}/inventory/receive": {
      "post": {
        "tags": [
          "Item"
        ],
        "summary": "TO BE REMOVED 10/13/2023 - Receive inventory against a specific item.",
        "description": "Use /inventory/receive API instead",
        "operationId": "ReceiveItemInventory",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryRequestItemInventoryReceiveEvent"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryRequestItemInventoryReceiveEvent"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryRequestItemInventoryReceiveEvent"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/InventoryRequestItemInventoryReceiveEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Inventory transaction processed"
          },
          "400": {
            "description": "Validation issues with input"
          }
        },
        "deprecated": true
      }
    },
    "/api/item-categories/{id}": {
      "get": {
        "tags": [
          "Item Category"
        ],
        "summary": "Get an item category",
        "operationId": "GetItemCategory",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The item category for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              }
            }
          },
          "404": {
            "description": "Item category did not exist"
          }
        }
      }
    },
    "/api/item-categories/list": {
      "post": {
        "tags": [
          "Item Category"
        ],
        "summary": "Find item categories based on search parameters.",
        "operationId": "ListItemCategory",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of item categories matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/item-classes/{id}": {
      "get": {
        "tags": [
          "Item Class"
        ],
        "summary": "Get an item class.",
        "operationId": "GetItemClass",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The item class for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              }
            }
          },
          "404": {
            "description": "Item class did not exist"
          }
        }
      }
    },
    "/api/item-classes/list": {
      "post": {
        "tags": [
          "Item Class"
        ],
        "summary": "Find item classes based on search parameters.",
        "operationId": "ListItemClass",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of item classes matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/item-tags/{id}": {
      "get": {
        "tags": [
          "Item Tag"
        ],
        "summary": "Get an item category",
        "operationId": "GetItemTag",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The item tag for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              }
            }
          },
          "404": {
            "description": "Item tag did not exist"
          }
        }
      }
    },
    "/api/item-tags/list": {
      "post": {
        "tags": [
          "Item Tag"
        ],
        "summary": "Find item tags based on search parameters",
        "operationId": "ListItemTag",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The search parameters",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoTagDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoTagDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/items/{itemId}/customFields": {
      "put": {
        "tags": [
          "Item Custom Fields"
        ],
        "summary": "Update (selectively) custom fields on an item.",
        "operationId": "UpdateItemCustomFields",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "description": "The Item identifier",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The custom fields to update",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/items/{itemId}/custom-fields": {
      "put": {
        "tags": [
          "Item Custom Fields"
        ],
        "summary": "Update (selectively) custom fields on an item.",
        "operationId": "UpdateItemCustomFields",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "description": "The Item identifier",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The custom fields to update",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/items/{itemId}/customers": {
      "post": {
        "tags": [
          "Item Customer"
        ],
        "summary": "Create a new item customer",
        "operationId": "CreateItemCustomer",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemCustomerCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemCustomerCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemCustomerCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemCustomerCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Item customer created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          },
          "404": {
            "description": "Item with the given id did not exist"
          }
        }
      }
    },
    "/api/items/{itemId}/customers/{itemCustomerId}": {
      "delete": {
        "tags": [
          "Item Customer"
        ],
        "summary": "Delete a specific item customer",
        "operationId": "DeleteItemCustomer",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "description": "The id of the item to remove a customer from",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "itemCustomerId",
            "in": "path",
            "description": "The id of the item customer to delete",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Delete successful"
          },
          "404": {
            "description": "Item did not exist or no customer existed at the specified id"
          }
        }
      },
      "put": {
        "tags": [
          "Item Customer"
        ],
        "summary": "Update a specific item customer",
        "operationId": "UpdateItemCustomer",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "description": "The id of the item to modify customers for",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "itemCustomerId",
            "in": "path",
            "description": "The id of the item customer.",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The new data to apply to the given customer detail",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemCustomerUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemCustomerUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemCustomerUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemCustomerUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Update successful"
          },
          "404": {
            "description": "Item did not exist or no customer existed at the specified id"
          }
        }
      }
    },
    "/api/items/{itemId}/customers/list": {
      "post": {
        "tags": [
          "Item Customer"
        ],
        "summary": "Get a list of customers for an item",
        "operationId": "ListItemCustomer",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of customers for the given item id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemCustomerDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemCustomerDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The item did not exist"
          }
        }
      }
    },
    "/api/items/{itemId}/material-vendors/list": {
      "post": {
        "tags": [
          "Item Material Vendor"
        ],
        "summary": "Get a list of vendors for a material-based item",
        "operationId": "ListItemMaterialVendor",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of vendors for the given item id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemMaterialVendorDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemMaterialVendorDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The item did not exist"
          }
        }
      }
    },
    "/api/items/{itemId}/material-vendors": {
      "post": {
        "tags": [
          "Item Material Vendor"
        ],
        "summary": "Create a new item vendor",
        "operationId": "CreateItemMaterialVendor",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemMaterialVendorCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemMaterialVendorCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemMaterialVendorCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemMaterialVendorCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Material-based item vendor created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          },
          "404": {
            "description": "Item with the given id did not exist"
          }
        }
      }
    },
    "/api/items/{itemId}/material-vendors/{materialVendorId}": {
      "put": {
        "tags": [
          "Item Material Vendor"
        ],
        "summary": "Update a specific item material vendor",
        "operationId": "UpdateItemMaterialVendor",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "description": "The id of the item to modify vendors for",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "materialVendorId",
            "in": "path",
            "description": "The id of the material-item vendor.",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The new data to apply to the given vendor detail",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemMaterialVendorUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemMaterialVendorUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemMaterialVendorUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemMaterialVendorUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Update successful",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemMaterialVendorDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemMaterialVendorDto"
                }
              }
            }
          },
          "404": {
            "description": "Material did not exist or no vendor existed"
          }
        }
      }
    },
    "/api/items/{itemId}/purchase-price-breaks/list": {
      "post": {
        "tags": [
          "Item PriceBreaks"
        ],
        "summary": "List purchase price breaks for an item.",
        "operationId": "ListPurchasePriceBreaks",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "description": "The id of the item.",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Optional filters to narrow the result set.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PriceBreakListPurchasePriceBreaksDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PriceBreakListPurchasePriceBreaksDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PriceBreakListPurchasePriceBreaksDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PriceBreakListPurchasePriceBreaksDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of purchase price breaks for the given item.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PriceBreakPurchasePriceBreakDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PriceBreakPurchasePriceBreakDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "An item with the given id was not found."
          }
        }
      }
    },
    "/api/items/{itemId}/sales-price-breaks/list": {
      "post": {
        "tags": [
          "Item PriceBreaks"
        ],
        "summary": "List sales price breaks for an item, including the item's base price, customer-specific\nprice breaks, and customer-tier price breaks.",
        "operationId": "ListSalesPriceBreaks",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "description": "The id of the item.",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Optional filters to narrow the result set.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PriceBreakListSalesPriceBreaksDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PriceBreakListSalesPriceBreaksDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PriceBreakListSalesPriceBreaksDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PriceBreakListSalesPriceBreaksDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of sales price breaks for the given item.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PriceBreakSalesPriceBreakDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PriceBreakSalesPriceBreakDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "An item with the given id was not found."
          }
        }
      }
    },
    "/api/items/{itemId}/purchase-price-breaks": {
      "put": {
        "tags": [
          "Item PriceBreaks"
        ],
        "summary": "Create or update a purchase price break for an item. The price break is identified by\nthe combination of (item, vendor, currency, unit of measure): if a match exists it is\nreplaced, otherwise a new price break is created.",
        "operationId": "UpsertPurchasePriceBreak",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "description": "The id of the item.",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The price break to upsert.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PriceBreakPurchasePriceBreakUpsertDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PriceBreakPurchasePriceBreakUpsertDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PriceBreakPurchasePriceBreakUpsertDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PriceBreakPurchasePriceBreakUpsertDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The upserted price break.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceBreakPurchasePriceBreakDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceBreakPurchasePriceBreakDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input."
          },
          "404": {
            "description": "Item or vendor did not exist."
          }
        }
      }
    },
    "/api/items/{itemId}/sales-price-breaks": {
      "put": {
        "tags": [
          "Item PriceBreaks"
        ],
        "summary": "Create or update a sales price break for an item. The price break is identified by\nthe combination of (item, customer, customer tier, currency, sales unit of measure):\nif a match exists it is replaced, otherwise a new price break is created.\n            \nCustomer and customer tier are mutually exclusive. Leaving both null upserts the\nitem's base price.",
        "operationId": "UpsertSalesPriceBreak",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "description": "The id of the item.",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The price break to upsert.",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PriceBreakSalesPriceBreakUpsertDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PriceBreakSalesPriceBreakUpsertDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PriceBreakSalesPriceBreakUpsertDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PriceBreakSalesPriceBreakUpsertDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The upserted price break.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceBreakSalesPriceBreakDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PriceBreakSalesPriceBreakDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input."
          },
          "404": {
            "description": "Item, customer, or customer tier did not exist."
          }
        }
      }
    },
    "/api/items/{itemId}/routing": {
      "get": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Get a specific item routing input item",
        "operationId": "ItemRoutingGet",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Input item for an item's routing matching id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingDto"
                }
              }
            }
          },
          "204": {
            "description": "Input item id provided was not found on this item"
          },
          "404": {
            "description": "Item id provided is not present in the system"
          }
        }
      },
      "post": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Update a specific item's routing",
        "operationId": "ItemRoutingUpdate",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful update of the input item"
          },
          "204": {
            "description": "Input item id provided was not found on this item"
          },
          "400": {
            "description": "Validation issue with input"
          },
          "404": {
            "description": "Item id provided is not present in the system"
          }
        }
      }
    },
    "/api/items/{itemId}/routing/input-items": {
      "post": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Adds an input item to an item's routing",
        "operationId": "ItemRoutingInputItemCreate",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "An input item was added to the item's routing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issue with input"
          },
          "404": {
            "description": "An item was not found matching the item id"
          }
        }
      }
    },
    "/api/items/{itemId}/routing/input-items/batch": {
      "post": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Add multiple input items to an item's routing",
        "operationId": "ItemRoutingInputItemCreateBatch",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderPartLineItemInputItemCreateBatchDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderPartLineItemInputItemCreateBatchDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderPartLineItemInputItemCreateBatchDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderPartLineItemInputItemCreateBatchDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Input item(s) were added to the item's routing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchCreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchCreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issue with input"
          },
          "404": {
            "description": "An item was not found matching the item id"
          }
        }
      }
    },
    "/api/items/{itemId}/routing/input-items/{inputItemId}": {
      "delete": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Deletes an input item from an item's routing",
        "operationId": "ItemRoutingInputItemDelete",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "inputItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "An input item was deleted from the item's routing"
          },
          "204": {
            "description": "Input item id provided was not found on this item"
          },
          "404": {
            "description": "Item id provided is not present in the system"
          }
        }
      },
      "get": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Get a specific item routing input item",
        "operationId": "ItemRoutingInputItemGet",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "inputItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Input item for an item's routing matching id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                }
              }
            }
          },
          "204": {
            "description": "Input item id provided was not found on this item"
          },
          "404": {
            "description": "Item id provided is not present in the system"
          }
        }
      },
      "post": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Update an input item for a specific item's routing",
        "operationId": "ItemRoutingInputItemUpdate",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "inputItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful update of the input item"
          },
          "204": {
            "description": "Input item id provided was not found on this item"
          },
          "400": {
            "description": "Validation issue with input"
          },
          "404": {
            "description": "Item id provided is not present in the system"
          }
        }
      }
    },
    "/api/items/{itemId}/routing/input-items/list": {
      "post": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Lists the input items for an item's routing",
        "operationId": "ItemRoutingInputItemList",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of input items matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/items/{itemId}/routing/input-materials": {
      "post": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Adds an input material to an item's routing",
        "operationId": "ItemRoutingInputMaterialCreate",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputMaterialCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputMaterialCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputMaterialCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputMaterialCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "An input material was created on the item's routing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issue with input"
          },
          "404": {
            "description": "A material was not found matching the material id"
          }
        }
      }
    },
    "/api/items/{itemId}/routing/input-materials/{materialId}": {
      "delete": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Deletes an input material from an item's routing",
        "operationId": "ItemRoutingInputMaterialDelete",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "materialId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "An input material was deleted from the item's routing"
          },
          "204": {
            "description": "Input material id provided was not found on this item"
          },
          "404": {
            "description": "Item id provided is not present in the system or a material was not found matching the material id"
          }
        }
      }
    },
    "/api/items/{itemId}/routing/input-materials/list": {
      "post": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Lists the input materials for an item's routing",
        "operationId": "ItemRoutingInputMaterialList",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of input materials matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputMaterialDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputMaterialDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/items/{itemId}/routing/input-materials/{materialId}/nesting": {
      "post": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Adds an input material nesting to an item's routing material",
        "operationId": "ItemRoutingInputMaterialNestingCreate",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "materialId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputMaterialNestingCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputMaterialNestingCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputMaterialNestingCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputMaterialNestingCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "An input material nesting was added to the item's routing nesting",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issue with input"
          },
          "404": {
            "description": "A material was not found matching the material id"
          }
        }
      }
    },
    "/api/items/{itemId}/routing/input-materials/{materialId}/nesting/{nestingId}": {
      "delete": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Removes an input material nesting on an item's routing material",
        "operationId": "ItemRoutingInputMaterialNestingDelete",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "materialId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "nestingId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "An input material nesting was added to the item's routing nesting"
          },
          "400": {
            "description": "Validation issue with input"
          },
          "404": {
            "description": "A material was not found matching the material id"
          }
        }
      }
    },
    "/api/items/{itemId}/routing/input-materials/{inputMaterialId}": {
      "put": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Update an input material on an item's routing",
        "operationId": "ItemRoutingInputMaterialUpdate",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "inputMaterialId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputMaterialUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputMaterialUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputMaterialUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputMaterialUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "An input material was updated on the item's routing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingInputMaterialDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingInputMaterialDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issue with input"
          },
          "404": {
            "description": "An input material was not found matching the input material id"
          }
        }
      }
    },
    "/api/items/{itemId}/routing/operations/batch": {
      "post": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Bulk reorganize routing operations for a specific item.",
        "operationId": "ItemRoutingOperationBatch",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ItemRoutingOperationCreateDto"
                }
              }
            },
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ItemRoutingOperationCreateDto"
                }
              }
            },
            "text/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ItemRoutingOperationCreateDto"
                }
              }
            },
            "application/*+json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/ItemRoutingOperationCreateDto"
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Created operation id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchCreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchCreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issue with input"
          },
          "404": {
            "description": "Item id not present in the system"
          }
        }
      }
    },
    "/api/items/{itemId}/routing/operations": {
      "post": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Create a routing operation for a specific item",
        "operationId": "ItemRoutingOperationCreate",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Created operation id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issue with input"
          },
          "404": {
            "description": "Item id not present in the system"
          }
        }
      }
    },
    "/api/items/{itemId}/routing/operations/{operationId}": {
      "delete": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Delete a specific item routing operation",
        "operationId": "ItemRoutingOperationDelete",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of operations matching the filters"
          },
          "204": {
            "description": "Operation id provided was not found on this item"
          },
          "404": {
            "description": "Item id provided is not present in the system"
          }
        }
      },
      "get": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Get a specific item routing operation",
        "operationId": "ItemRoutingOperationGet",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation matching id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingOperationDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingOperationDto"
                }
              }
            }
          },
          "404": {
            "description": "Item id or operation id provided are not present in the system"
          }
        }
      },
      "put": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Update a routing operation for a specific item",
        "operationId": "ItemRoutingOperationUpdate",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful update of the operation"
          },
          "204": {
            "description": "Operation id provided was not found on this item"
          },
          "400": {
            "description": "Validation issue with input"
          },
          "404": {
            "description": "Item id not present in the system"
          }
        }
      }
    },
    "/api/items/{itemId}/routing/operations/{operationId}/items": {
      "post": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Adds an operation item to an item's routing",
        "operationId": "ItemRoutingOperationItemCreate",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "An operation item was added to the item's routing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Operation id provided was not found on this item"
          },
          "400": {
            "description": "Validation issue with input"
          },
          "404": {
            "description": "An item was not found matching the itemId"
          }
        }
      }
    },
    "/api/items/{itemId}/routing/operations/{operationId}/items/{operationItemId}": {
      "delete": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Deletes an operation item from an item's routing",
        "operationId": "ItemRoutingOperationItemDelete",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "An operation item was deleted from the item's routing"
          },
          "204": {
            "description": "Operation or operation item id provided was not found on this item"
          },
          "404": {
            "description": "An item was not found matching the itemId"
          }
        }
      },
      "get": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Get a specific item routing operation item",
        "operationId": "ItemRoutingOperationItemGet",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Operation item for an item's routing matching id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                }
              }
            }
          },
          "204": {
            "description": "Operation or operation item id provided was not found on this item"
          },
          "404": {
            "description": "An item was not found matching the itemId"
          }
        }
      },
      "post": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Update an operation item for a specific item's routing",
        "operationId": "ItemRoutingOperationItemUpdate",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful update of the input item"
          },
          "400": {
            "description": "Validation issue with input"
          },
          "404": {
            "description": "Item id provided is not present in the system"
          }
        }
      }
    },
    "/api/items/{itemId}/routing/operations/{operationId}/items/list": {
      "post": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Lists the operation items for an item's routing",
        "operationId": "ItemRoutingOperationItemList",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of operation items matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/items/{itemId}/routing/operations/list": {
      "post": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Lists the operations for an item's routing",
        "operationId": "ItemRoutingOperationList",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestOperationFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestOperationFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestOperationFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestOperationFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of operations matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingOperationDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingOperationDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/items/{itemId}/routing/operations/{operationId}/materials/list": {
      "post": {
        "tags": [
          "Item Routing"
        ],
        "summary": "Lists the operation materials for an item's routing",
        "operationId": "ItemRoutingOperationMaterialList",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of operation items matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputMaterialDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputMaterialDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/items/{itemId}/vendors": {
      "post": {
        "tags": [
          "Item Vendor"
        ],
        "summary": "Create a new item vendor",
        "operationId": "CreateItemVendor",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemVendorCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemVendorCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemVendorCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemVendorCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Item vendor created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          },
          "404": {
            "description": "Item with the given id did not exist"
          }
        }
      }
    },
    "/api/items/{itemId}/vendors/list": {
      "post": {
        "tags": [
          "Item Vendor"
        ],
        "summary": "Get a list of vendors for an item",
        "operationId": "ListItemVendor",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of vendors for the given item id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemVendorDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemVendorDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The item did not exist"
          }
        }
      }
    },
    "/api/items/{itemId}/vendors/{itemVendorId}": {
      "put": {
        "tags": [
          "Item Vendor"
        ],
        "summary": "Update a specific item vendor",
        "operationId": "UpdateItemVendor",
        "parameters": [
          {
            "name": "itemId",
            "in": "path",
            "description": "The id of the item to modify vendors for",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "itemVendorId",
            "in": "path",
            "description": "The id of the item vendor.",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The new data to apply to the given vendor detail",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemVendorUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemVendorUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemVendorUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemVendorUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Update successful"
          },
          "404": {
            "description": "Item did not exist or no vendor existed at the specified index"
          }
        }
      }
    },
    "/api/jobs/{jobId}/cancel": {
      "post": {
        "tags": [
          "Job"
        ],
        "summary": "Cancel a specific job",
        "operationId": "CancelJob",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Job did not exist"
          }
        }
      }
    },
    "/api/jobs": {
      "post": {
        "tags": [
          "Job"
        ],
        "summary": "Create a new job",
        "operationId": "CreateJob",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JobCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/JobCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/JobCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Job created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/jobs/{jobId}": {
      "get": {
        "tags": [
          "Job"
        ],
        "summary": "Get a specific job",
        "operationId": "GetJob",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The job for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/JobDto"
                }
              }
            }
          },
          "404": {
            "description": "Job did not exist"
          }
        }
      },
      "patch": {
        "tags": [
          "Job"
        ],
        "summary": "Partially update a job",
        "operationId": "PatchJob",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Job item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/JobDto"
                }
              }
            }
          },
          "404": {
            "description": "Job did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Job"
        ],
        "summary": "Update a job",
        "operationId": "UpdateJob",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JobUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/JobUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/JobUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Job item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/JobDto"
                }
              }
            }
          },
          "404": {
            "description": "Job did not exist"
          }
        }
      }
    },
    "/api/jobs/{jobId}/tracking": {
      "get": {
        "tags": [
          "Job"
        ],
        "summary": "Get a specific job's tracking information",
        "operationId": "GetJobTracking",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The job for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobTrackingDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/JobTrackingDto"
                }
              }
            }
          },
          "404": {
            "description": "Job did not exist"
          }
        }
      }
    },
    "/api/jobs/list": {
      "post": {
        "tags": [
          "Job"
        ],
        "summary": "Find jobs based on search parameters.",
        "operationId": "ListJob",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JobRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/JobRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/JobRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of jobs matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/JobDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/JobDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/jobs/{jobId}/status": {
      "post": {
        "tags": [
          "Job"
        ],
        "summary": "Update a job status",
        "operationId": "StatusUpdateJob",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JobRequestUpdateStatus"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobRequestUpdateStatus"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/JobRequestUpdateStatus"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/JobRequestUpdateStatus"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Job cannot be moved to requested status"
          },
          "404": {
            "description": "Job did not exist"
          }
        }
      }
    },
    "/api/job-tracking-timers/list": {
      "post": {
        "tags": [
          "Job Tracking Timers"
        ],
        "summary": "Finds job tracking timers based on search parameters",
        "operationId": "ListJobTrackingTimer",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The search parameters",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JobTrackingTimerRequestListTimersParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobTrackingTimerRequestListTimersParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/JobTrackingTimerRequestListTimersParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/JobTrackingTimerRequestListTimersParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoTimerDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoTimerDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/job-tracking-timers/start": {
      "post": {
        "tags": [
          "Job Tracking Timers"
        ],
        "summary": "Starts a job tracking timer.",
        "operationId": "StartTimer",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JobTrackingTimerStartTimerDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobTrackingTimerStartTimerDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/JobTrackingTimerStartTimerDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/JobTrackingTimerStartTimerDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/job-tracking-timers/stop": {
      "post": {
        "tags": [
          "Job Tracking Timers"
        ],
        "summary": "Stops a job tracking timer",
        "operationId": "StopTimer",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JobTrackingTimerStopTimerDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobTrackingTimerStopTimerDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/JobTrackingTimerStopTimerDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/JobTrackingTimerStopTimerDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/jobs/{jobId}/customFields": {
      "put": {
        "tags": [
          "Job Custom Fields"
        ],
        "summary": "Update (selectively) custom fields on a job",
        "operationId": "UpdateJobCustomFields",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "description": "The job identifier",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The custom fields to update",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/jobs/{jobId}/custom-fields": {
      "put": {
        "tags": [
          "Job Custom Fields"
        ],
        "summary": "Update (selectively) custom fields on a job",
        "operationId": "UpdateJobCustomFields",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "description": "The job identifier",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The custom fields to update",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/jobs/{jobId}/routing/{routingId}/operations/{operationId}/ipts/{phase}/{iptId}": {
      "delete": {
        "tags": [
          "Job Full Routing"
        ],
        "summary": "Deletes a full routing operation in process tracking field for a job",
        "operationId": "JobFullRoutingIptDelete",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "phase",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DomainInProcessTrackingFieldCheckpointPhase"
            }
          },
          {
            "name": "iptId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "get": {
        "tags": [
          "Job Part Line Item Full Routing"
        ],
        "summary": "Gets a full routing operation in process tracking field for a job",
        "operationId": "JobFullRoutingIptGet",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "phase",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DomainInProcessTrackingFieldCheckpointPhase"
            }
          },
          {
            "name": "iptId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingIptDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingIptDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/jobs/{jobId}/routing/{routingId}/operations/{operationId}/ipts/{phase}/list": {
      "post": {
        "tags": [
          "Job Full Routing"
        ],
        "summary": "Lists full routing operation in process tracking field for a job",
        "operationId": "JobPartLineItemFullRoutingIptList",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "phase",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DomainInProcessTrackingFieldCheckpointPhase"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestIptFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestIptFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestIptFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestIptFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingIptDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingIptDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/jobs/{JobId}/routing/{routingId}/input-items": {
      "post": {
        "tags": [
          "Job Full Routing"
        ],
        "summary": "Create a full routing input item for a job",
        "operationId": "JobFullRoutingInputItemCreate",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/jobs/{jobId}/routing/{routingId}/input-items/{inputItemId}": {
      "delete": {
        "tags": [
          "Job Full Routing"
        ],
        "summary": "Delete a full routing input item from job",
        "operationId": "JobFullRoutingInputItemDelete",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "inputItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "get": {
        "tags": [
          "Job Full Routing"
        ],
        "summary": "Gets a full routing input item for a job",
        "operationId": "JobFullRoutingInputItemGet",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "inputItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Job Full Routing"
        ],
        "summary": "Update a full routing input item for a job",
        "operationId": "JobFullRoutingInputItemUpdate",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "inputItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/jobs/{jobId}/routing/{routingId}/input-items/list": {
      "post": {
        "tags": [
          "Job Full Routing"
        ],
        "summary": "Lists the full routing input items for a job",
        "operationId": "JobFullRoutingInputItemList",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/jobs/{jobId}/routing/{routingId}/input-materials/list": {
      "post": {
        "tags": [
          "Job Full Routing"
        ],
        "summary": "List input materials for a job's routing",
        "operationId": "JobFullRoutingInputMaterialList",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputMaterialDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputMaterialDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/jobs/{jobId}/routing/{routingId}/operations/{operationId}/ipts/{phase}": {
      "post": {
        "tags": [
          "Job Full Routing"
        ],
        "summary": "Creates a full routing operation in process tracking field for a job",
        "operationId": "JobFullRoutingIptCreate",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "phase",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DomainInProcessTrackingFieldCheckpointPhase"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingIptCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingIptCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingIptCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingIptCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/jobs/{jobId}/make-summary": {
      "get": {
        "tags": [
          "Job Full Routing"
        ],
        "summary": "Get a summary of the make routing for a job",
        "operationId": "JobFullRoutingMakeSummaryGet",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RoutingDataFullRoutingMakeSummaryDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RoutingDataFullRoutingMakeSummaryDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/jobs/{jobId}/routing/{routingId}/operations": {
      "post": {
        "tags": [
          "Job Full Routing"
        ],
        "summary": "Creates a full routing operation for a job",
        "operationId": "JobFullRoutingOperationCreate",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/jobs/{jobId}/routing/{routingId}/operations/{operationId}": {
      "delete": {
        "tags": [
          "Job Full Routing"
        ],
        "summary": "Removes a full routing operation for a job",
        "operationId": "JobFullRoutingOperationDelete",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "get": {
        "tags": [
          "Job Full Routing"
        ],
        "summary": "Gets a full routing operation for a job",
        "operationId": "JobFullRoutingOperationGet",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingOperationDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingOperationDto"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Job Full Routing"
        ],
        "summary": "Updates a full routing operation for a job",
        "operationId": "JobFullRoutingOperationUpdate",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/jobs/{jobId}/routing/{routingId}/operations/{operationId}/items/{operationItemId}": {
      "get": {
        "tags": [
          "Job Full Routing"
        ],
        "summary": "Gets a full routing operation item for a job",
        "operationId": "JobFullRoutingOperationItemGet",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/jobs/{jobId}/routing/{routingId}/operations/{operationId}/items/list": {
      "post": {
        "tags": [
          "Job Full Routing"
        ],
        "summary": "List full routing operation items for a job",
        "operationId": "JobFullRoutingOperationItemList",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/jobs/{jobId}/routing/{routingId}/operations/list": {
      "post": {
        "tags": [
          "Job Full Routing"
        ],
        "summary": "Lists full routing operations for a job",
        "operationId": "JobFullRoutingOperationList",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestOperationFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestOperationFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestOperationFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestOperationFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingOperationDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingOperationDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/jobs/{jobId}/routing/{routingId}": {
      "get": {
        "tags": [
          "Job Full Routing"
        ],
        "summary": "Gets a full routing routing for a job",
        "operationId": "JobFullRoutingRoutingGet",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/jobs/{jobId}/items-to-make/{itemToMakeId}": {
      "get": {
        "tags": [
          "Job Item To Make"
        ],
        "summary": "Get a specific item to make on a job",
        "operationId": "GetJobItemToMake",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "itemToMakeId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "includeCostBreakdown",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The item to make for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobItemToMakeDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/JobItemToMakeDto"
                }
              }
            }
          },
          "404": {
            "description": "Job or item to make did not exist"
          }
        }
      }
    },
    "/api/jobs/{jobId}/items-to-make/list": {
      "post": {
        "tags": [
          "Job Item To Make"
        ],
        "summary": "Get a list of items to make on a job",
        "operationId": "ListJobItemToMake",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "includeCostBreakdown",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The items to make for the given job id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/JobItemToMakeDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/JobItemToMakeDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Job did not exist"
          }
        }
      }
    },
    "/api/jobs/{jobId}/items-to-make/{itemToMakeId}/cost-breakdown": {
      "get": {
        "tags": [
          "Job Item To Make"
        ],
        "summary": "Get the cost breakdowns for specific item to make on a job",
        "operationId": "GetJobItemToMakeCostBreakdown",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "itemToMakeId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The item to make for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobItemToMakeCostBreakdownsDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/JobItemToMakeCostBreakdownsDto"
                }
              }
            }
          },
          "404": {
            "description": "Job or item to make did not exist"
          }
        }
      }
    },
    "/api/jobs/{jobId}/items-to-make/{itemToMakeId}/operations/{operationId}/add-quantity-completed": {
      "post": {
        "tags": [
          "Job Item To Make Operation"
        ],
        "summary": "Adds additional quantity completed to a job operation without completing the operation.\nEach call will increment the quantity completed by the specified amount.",
        "description": "This is a non-idempotent action. Multiple calls with the same parameters will result in \nthe quantity being added multiple times. Implement appropriate client-side controls to \nprevent duplicate submissions.",
        "operationId": "AddQuantityCompletedToJobOperation",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "description": "The ID of the job",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "itemToMakeId",
            "in": "path",
            "description": "The ID of the item to make",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "description": "The ID of the operation",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The request containing the additional quantity to add",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemsToMakeOperationsAddQuantityCompletedRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemsToMakeOperationsAddQuantityCompletedRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemsToMakeOperationsAddQuantityCompletedRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemsToMakeOperationsAddQuantityCompletedRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemsToMakeOperationsAddQuantityCompletedResponse"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemsToMakeOperationsAddQuantityCompletedResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/jobs/{jobId}/items-to-make/{itemToMakeId}/operations/{operationId}": {
      "get": {
        "tags": [
          "Job Item To Make Operation"
        ],
        "summary": "Get a specific operation for an item to make on a job",
        "operationId": "GetJobItemToMakeOperation",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "itemToMakeId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The operation for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemToMakeOperationDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemToMakeOperationDto"
                }
              }
            }
          },
          "404": {
            "description": "Job, item to make, or operation did not exist"
          }
        }
      },
      "post": {
        "tags": [
          "Job Item To Make Operation"
        ],
        "summary": "Get a specific operation for an item to make on a job",
        "operationId": "UpdateJobItemToMakeOperation",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "itemToMakeId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemToMakeOperationUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemToMakeOperationUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemToMakeOperationUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemToMakeOperationUpdateDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The operation for the given id"
          },
          "404": {
            "description": "Job, item to make, or operation did not exist"
          }
        }
      }
    },
    "/api/jobs/{jobId}/items-to-make/{itemToMakeId}/operations/list": {
      "post": {
        "tags": [
          "Job Item To Make Operation"
        ],
        "summary": "Get a list of operations for an item to make on a job",
        "operationId": "ListJobItemToMakeOperation",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "itemToMakeId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The operations for the given item to make",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemToMakeOperationDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemToMakeOperationDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Job or item to make did not exist"
          }
        }
      }
    },
    "/api/jobs/{jobId}/items-to-make/{itemToMakeId}/operations/{operationId}/items-required/list": {
      "post": {
        "tags": [
          "Job Item To Make Operation"
        ],
        "summary": "Get a list of required items for an operation on a job item to make",
        "operationId": "ListJobItemToMakeOperationItemsRequired",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "itemToMakeId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The required items for the given operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemToMakeOperationItemRequiredDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemToMakeOperationItemRequiredDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Job, item to make, or operation did not exist"
          }
        }
      }
    },
    "/api/jobs/{jobId}/items-to-make/{itemToMakeId}/operations/{operationId}/materials-required/list": {
      "post": {
        "tags": [
          "Job Item To Make Operation"
        ],
        "summary": "Get a list of required materials for an operation on a job item to make",
        "operationId": "ListJobItemToMakeOperationMaterialsRequired",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "itemToMakeId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The required materials for the given operation",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemToMakeOperationMaterialRequiredDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemToMakeOperationMaterialRequiredDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Job, item to make, or operation did not exist"
          }
        }
      }
    },
    "/api/jobs/{jobId}/items-to-make/{itemToMakeId}/operations/{operationId}/pick": {
      "post": {
        "tags": [
          "Job Item To Make Operation"
        ],
        "summary": "Pick a specific item for a specific item to make on a job.",
        "operationId": "PickInventoryForJobItemToMakeOperation",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "itemToMakeId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JobItemToMakeOperationPickInventoryDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobItemToMakeOperationPickInventoryDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/JobItemToMakeOperationPickInventoryDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/JobItemToMakeOperationPickInventoryDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Inventory transaction processed"
          },
          "400": {
            "description": "Validation issues with input"
          },
          "404": {
            "description": "The job, item to make, or operation did not exist"
          }
        }
      }
    },
    "/api/jobs/{jobId}/operations/list": {
      "post": {
        "tags": [
          "Job Operation"
        ],
        "summary": "Get a list of operations for a job",
        "operationId": "ListJobOperations",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The operations for the given item to make",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/JobTrackingOperationDetailsDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/JobTrackingOperationDetailsDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Job did not exist"
          }
        }
      }
    },
    "/api/locations/{locationId}": {
      "delete": {
        "tags": [
          "Location"
        ],
        "summary": "Delete a specific location",
        "operationId": "DeleteLocation",
        "parameters": [
          {
            "name": "locationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Location did not exist"
          }
        }
      }
    },
    "/api/locations/{id}": {
      "get": {
        "tags": [
          "Location"
        ],
        "summary": "Get a location.",
        "operationId": "GetLocation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The location for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LocationDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/LocationDto"
                }
              }
            }
          },
          "404": {
            "description": "Location did not exist"
          }
        }
      }
    },
    "/api/locations/list": {
      "post": {
        "tags": [
          "Location"
        ],
        "summary": "Find locations based on search parameters.",
        "operationId": "ListLocation",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/LocationRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LocationRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/LocationRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/LocationRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of locations matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LocationDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LocationDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/materials/activate": {
      "post": {
        "tags": [
          "Material"
        ],
        "summary": "Activate materials based on ids",
        "operationId": "ActivateMaterial",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialRequestActivateMaterials"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialRequestActivateMaterials"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialRequestActivateMaterials"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialRequestActivateMaterials"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Activated of materials",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialShapeDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialShapeDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/materials/{id}": {
      "get": {
        "tags": [
          "Material"
        ],
        "summary": "Get a material. DEPRECATED: use POST /v2/materials/get instead, which accepts the\nmaterial id in the request body. This endpoint fails for material ids that contain\n'/' characters (e.g. \"SS-301-CR 1/2 HD\") because ASP.NET Core routing cannot match\nURL-encoded forward slashes in path segments.",
        "operationId": "GetMaterial",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The material for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialShapeDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialShapeDto"
                }
              }
            }
          },
          "404": {
            "description": "Material did not exist"
          }
        },
        "deprecated": true
      }
    },
    "/api/v2/materials/get": {
      "post": {
        "tags": [
          "Material"
        ],
        "summary": "Get a material by id. Use this endpoint instead of the path-based v1 when\nyour material ids may contain '/' characters, which ASP.NET Core routing\ncannot match once URL-encoded.",
        "operationId": "GetMaterialV2",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialRequestGetMaterialRequestDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialRequestGetMaterialRequestDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialRequestGetMaterialRequestDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialRequestGetMaterialRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The material for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialShapeDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialShapeDto"
                }
              }
            }
          },
          "404": {
            "description": "Material did not exist"
          }
        }
      }
    },
    "/api/materials/list": {
      "post": {
        "tags": [
          "Material"
        ],
        "summary": "Find materials based on search parameters.",
        "operationId": "ListMaterial",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of materials matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialShapeDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialShapeDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/material-codes/{id}": {
      "get": {
        "tags": [
          "Material Code"
        ],
        "summary": "Get a material code.",
        "operationId": "GetMaterialCode",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The material code for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              }
            }
          },
          "404": {
            "description": "Material code did not exist"
          }
        }
      }
    },
    "/api/material-codes/list": {
      "post": {
        "tags": [
          "Material Code"
        ],
        "summary": "Find material codes based on search parameters.",
        "operationId": "ListMaterialCode",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of material codes matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/materials/{materialId}/vendors": {
      "post": {
        "tags": [
          "Material Vendor"
        ],
        "summary": "Create a new material vendor. DEPRECATED: use POST /v2/material-vendors instead,\nwhich accepts the material id in the request body. This endpoint fails for material\nids that contain '/' characters (e.g. \"SS-301-CR 1/2 HD\") because ASP.NET Core routing\ncannot match URL-encoded forward slashes in path segments.",
        "operationId": "CreateMaterialVendor",
        "parameters": [
          {
            "name": "materialId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialShapeVendorCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialShapeVendorCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialShapeVendorCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialShapeVendorCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Material vendor created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          },
          "404": {
            "description": "Item with the given id did not exist"
          }
        },
        "deprecated": true
      }
    },
    "/api/v2/material-vendors": {
      "post": {
        "tags": [
          "Material Vendor"
        ],
        "summary": "Create a new material vendor. Use this endpoint instead of the path-based v1\nwhen your material ids may contain '/' characters, which ASP.NET Core routing\ncannot match once URL-encoded.",
        "operationId": "CreateMaterialVendorV2",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialVendorCreateMaterialVendorRequestDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialVendorCreateMaterialVendorRequestDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialVendorCreateMaterialVendorRequestDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialVendorCreateMaterialVendorRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Material vendor created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          },
          "404": {
            "description": "Item with the given id did not exist"
          }
        }
      }
    },
    "/api/materials/{materialId}/vendors/list": {
      "post": {
        "tags": [
          "Material Vendor"
        ],
        "summary": "Get a list of vendors for a material. DEPRECATED: use POST /v2/material-vendors/list\ninstead, which accepts the material id in the request body. This endpoint fails for\nmaterial ids that contain '/' characters (e.g. \"SS-301-CR 1/2 HD\") because ASP.NET Core\nrouting cannot match URL-encoded forward slashes in path segments.",
        "operationId": "ListMaterialVendor",
        "parameters": [
          {
            "name": "materialId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of vendors for the given material id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialShapeVendorDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialShapeVendorDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The material did not exist"
          }
        },
        "deprecated": true
      }
    },
    "/api/v2/material-vendors/list": {
      "post": {
        "tags": [
          "Material Vendor"
        ],
        "summary": "List the vendors for a material. Use this endpoint instead of the path-based v1\nwhen your material ids may contain '/' characters, which ASP.NET Core routing\ncannot match once URL-encoded.",
        "operationId": "ListMaterialVendorV2",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialVendorListMaterialVendorRequestDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialVendorListMaterialVendorRequestDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialVendorListMaterialVendorRequestDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialVendorListMaterialVendorRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "List of vendors for the given material id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialShapeVendorDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MaterialShapeVendorDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The material did not exist"
          }
        }
      }
    },
    "/api/materials/{materialId}/vendors/{vendorId}": {
      "put": {
        "tags": [
          "Material Vendor"
        ],
        "summary": "Update a specific material vendor. DEPRECATED: use PUT /v2/material-vendors/{vendorId} instead,\nwhich accepts the material id in the request body. This endpoint fails for material\nids that contain '/' characters (e.g. \"SS-301-CR 1/2 HD\") because ASP.NET Core routing\ncannot match URL-encoded forward slashes in path segments.",
        "operationId": "UpdateMaterialVendor",
        "parameters": [
          {
            "name": "materialId",
            "in": "path",
            "description": "The id of the item to modify vendors for",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "vendorId",
            "in": "path",
            "description": "The id of the actual vendor.",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The new data to apply to the given vendor detail",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialShapeVendorUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialShapeVendorUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialShapeVendorUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialShapeVendorUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Update successful",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialShapeVendorDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialShapeVendorDto"
                }
              }
            }
          },
          "404": {
            "description": "Material did not exist or no vendor existed"
          }
        },
        "deprecated": true
      }
    },
    "/api/v2/material-vendors/{vendorId}": {
      "put": {
        "tags": [
          "Material Vendor"
        ],
        "summary": "Update a specific material vendor. Use this endpoint instead of the path-based v1\nwhen your material ids may contain '/' characters, which ASP.NET Core routing\ncannot match once URL-encoded.",
        "operationId": "UpdateMaterialVendorV2",
        "parameters": [
          {
            "name": "vendorId",
            "in": "path",
            "description": "Unique id of the vendor to update on the material.",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The new data to apply to the given vendor detail, including the material id",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialVendorUpdateMaterialVendorRequestDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialVendorUpdateMaterialVendorRequestDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialVendorUpdateMaterialVendorRequestDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MaterialVendorUpdateMaterialVendorRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Update successful",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialShapeVendorDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/MaterialShapeVendorDto"
                }
              }
            }
          },
          "404": {
            "description": "Material did not exist or no vendor existed"
          }
        }
      }
    },
    "/api/ncrs/{ncrId}": {
      "get": {
        "tags": [
          "NCRs"
        ],
        "summary": "Get a specific NCR by id.",
        "operationId": "GetNcr",
        "parameters": [
          {
            "name": "ncrId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The NCR for the given id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NCRNcrDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/NCRNcrDto"
                }
              }
            }
          },
          "404": {
            "description": "An NCR with that id does not exist."
          }
        }
      }
    },
    "/api/ncrs/list": {
      "post": {
        "tags": [
          "NCRs"
        ],
        "summary": "Finds NCRs based on search parameters",
        "operationId": "ListNCR",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/NCRRequestNcrListParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NCRRequestNcrListParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/NCRRequestNcrListParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/NCRRequestNcrListParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoNCRNcrDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoNCRNcrDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/notes": {
      "post": {
        "tags": [
          "Note"
        ],
        "summary": "Create a new note on a parent document",
        "operationId": "CreateNote",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/NoteCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoteCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/NoteCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/NoteCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Note created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/notes/{noteId}": {
      "get": {
        "tags": [
          "Note"
        ],
        "summary": "Get a specific note",
        "operationId": "GetNote",
        "parameters": [
          {
            "name": "noteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The note for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NoteDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/NoteDto"
                }
              }
            }
          },
          "404": {
            "description": "Note did not exist"
          }
        }
      }
    },
    "/api/notes/list": {
      "post": {
        "tags": [
          "Note"
        ],
        "summary": "Find notes based on search parameters.",
        "operationId": "ListNote",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/NoteRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoteRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/NoteRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/NoteRequestFindParameters"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "List of notes matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoteDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NoteDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/operation": {
      "post": {
        "tags": [
          "Operation"
        ],
        "summary": "Create a new operation",
        "operationId": "CreateOperation",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/OperationCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OperationCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/OperationCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/OperationCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Operation created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/operations/{id}": {
      "get": {
        "tags": [
          "Operation"
        ],
        "summary": "Get an operation.",
        "operationId": "GetOperation",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The operation for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/OperationDto"
                }
              }
            }
          },
          "404": {
            "description": "Operation did not exist"
          }
        }
      }
    },
    "/api/operations/list": {
      "post": {
        "tags": [
          "Operation"
        ],
        "summary": "Find operations based on search parameters.",
        "operationId": "ListOperation",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/OperationRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OperationRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/OperationRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/OperationRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of operations matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OperationDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OperationDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/payment-terms": {
      "post": {
        "tags": [
          "Payment Term"
        ],
        "summary": "Create a new payment term",
        "operationId": "CreatePaymentTerm",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CommonPaymentTermCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CommonPaymentTermCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CommonPaymentTermCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CommonPaymentTermCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Payment term created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/payment-terms/{id}": {
      "get": {
        "tags": [
          "Payment Term"
        ],
        "summary": "Get a payment term.",
        "operationId": "GetPaymentTerm",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The payment terms for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonPaymentTermDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonPaymentTermDto"
                }
              }
            }
          },
          "404": {
            "description": "Payment terms did not exist"
          }
        }
      }
    },
    "/api/payment-terms/list": {
      "post": {
        "tags": [
          "Payment Term"
        ],
        "summary": "Find payment terms based on search parameters.",
        "operationId": "ListPaymentTerms",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentTermRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentTermRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentTermRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PaymentTermRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of payment terms matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CommonPaymentTermDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CommonPaymentTermDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/purchase-orders": {
      "post": {
        "tags": [
          "Purchase Order"
        ],
        "summary": "Create a new draft purchase order",
        "operationId": "CreatePurchaseOrder",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Purchase order created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}": {
      "delete": {
        "tags": [
          "Purchase Order"
        ],
        "summary": "Delete a specific purchase order",
        "operationId": "DeletePurchaseOrder",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Purchase order did not exist"
          }
        }
      },
      "get": {
        "tags": [
          "Purchase Order"
        ],
        "summary": "Get a specific purchase order",
        "operationId": "GetPurchaseOrder",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The purchase order for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order did not exist"
          }
        }
      },
      "patch": {
        "tags": [
          "Purchase Order"
        ],
        "summary": "Partially update a purchase order",
        "operationId": "PatchPurchaseOrder",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Purchase order item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Purchase Order"
        ],
        "summary": "Update a purchase order",
        "operationId": "UpdatePurchaseOrder",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Purchase order item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order did not exist"
          }
        }
      }
    },
    "/api/purchase-orders/list": {
      "post": {
        "tags": [
          "Purchase Order"
        ],
        "summary": "Find purchase orders based on search parameters.",
        "operationId": "ListPurchaseOrder",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of purchase orders matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PurchaseOrderListDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PurchaseOrderListDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/status": {
      "post": {
        "tags": [
          "Purchase Order"
        ],
        "summary": "Update a purchase order status",
        "operationId": "StatusUpdatePurchaseOrder",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderRequestUpdateStatus"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderRequestUpdateStatus"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderRequestUpdateStatus"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderRequestUpdateStatus"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Purchase order cannot be moved to requested status"
          },
          "404": {
            "description": "Purchase order did not exist"
          }
        }
      }
    },
    "/api/purchase-orders/{id}/customFields": {
      "put": {
        "tags": [
          "Purchase Order Custom Fields"
        ],
        "summary": "Update (selectively) custom fields on a purchase order",
        "operationId": "UpdatePurchaseOrderCustomFields",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The purchase order identifier",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The custom fields to update",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/purchase-orders/{id}/custom-fields": {
      "put": {
        "tags": [
          "Purchase Order Custom Fields"
        ],
        "summary": "Update (selectively) custom fields on a purchase order",
        "operationId": "UpdatePurchaseOrderCustomFields",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The purchase order identifier",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The custom fields to update",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/discount-line-item": {
      "get": {
        "tags": [
          "Purchase Order Discount Line Item"
        ],
        "summary": "Get the discount line item for a purchase order",
        "operationId": "GetPurchaseOrderDiscountLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Discount line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderDiscountLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderDiscountLineItemDto"
                }
              }
            }
          },
          "204": {
            "description": "Discount line item does not exist"
          },
          "404": {
            "description": "Purchase order did not exist"
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/fee-line-items": {
      "post": {
        "tags": [
          "Purchase Order Fee Line Item"
        ],
        "summary": "Create a fee line item on a purchase order",
        "operationId": "CreatePurchaseOrderFeeLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderFeeLineItemCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderFeeLineItemCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderFeeLineItemCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderFeeLineItemCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Fee line item added to purchase order",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order does not exist"
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/fee-line-items/{lineItemId}": {
      "delete": {
        "tags": [
          "Purchase Order Fee Line Item"
        ],
        "summary": "Delete a fee line item on a purchase order",
        "operationId": "DeletePurchaseOrderFeeLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Purchase order or line item cannot be modified"
          },
          "404": {
            "description": "Purchase order or line item did not exist"
          }
        }
      },
      "get": {
        "tags": [
          "Purchase Order Fee Line Item"
        ],
        "summary": "Get a specific fee line item for a purchase order",
        "operationId": "GetPurchaseOrderFeeLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Fee line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderFeeLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderFeeLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order or fee line item did not exist"
          }
        }
      },
      "patch": {
        "tags": [
          "Purchase Order Fee Line Item"
        ],
        "summary": "Partially update a specific fee line item for a purchase order",
        "operationId": "PatchPurchaseOrderFeeLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Fee line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderFeeLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderFeeLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order or fee line item did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Purchase Order Fee Line Item"
        ],
        "summary": "Update a specific fee line item for a purchase order",
        "operationId": "UpdatePurchaseOrderFeeLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderFeeLineItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderFeeLineItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderFeeLineItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderFeeLineItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Fee line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderFeeLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderFeeLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order or fee line item did not exist"
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/fee-line-items/list": {
      "post": {
        "tags": [
          "Purchase Order Fee Line Item"
        ],
        "summary": "Get a list of fee lines items for a purchase order",
        "operationId": "ListPurchaseOrderFeeLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of fee line items for the given purchase order id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PurchaseOrderFeeLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PurchaseOrderFeeLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The purchase order did not exist"
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/fee-line-items/{lineItemId}/tax-allocations": {
      "get": {
        "tags": [
          "Purchase Order Fee Line Item"
        ],
        "summary": "Get tax allocations for a specific fee line item on a purchase order",
        "operationId": "GetPurchaseOrderFeeLineItemTaxAllocations",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Tax allocation data for the fee line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderLineItemTaxAllocationResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderLineItemTaxAllocationResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order or line item did not exist"
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/line-items/{lineItemId}": {
      "get": {
        "tags": [
          "Purchase Order Line Item"
        ],
        "summary": "Get a specific line item for a purchase order of generic type",
        "operationId": "GetPurchaseOrderLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order or line item did not exist"
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/line-items/list": {
      "post": {
        "tags": [
          "Purchase Order Line Item"
        ],
        "summary": "Get a list of lines items for a purchase order, regardless of type",
        "operationId": "ListPurchaseOrderLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of all line items for the given purchase order id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PurchaseOrderLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PurchaseOrderLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The purchase order did not exist"
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/line-items/{lineItemId}/tax-allocations": {
      "get": {
        "tags": [
          "Purchase Order Line Item"
        ],
        "summary": "Get tax allocations for a specific line item on a purchase order",
        "operationId": "GetPurchaseOrderLineItemTaxAllocations",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Tax allocation data for the line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderLineItemTaxAllocationResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderLineItemTaxAllocationResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order or line item did not exist"
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/outside-processing-line-items": {
      "post": {
        "tags": [
          "Purchase Order Outside Processing Line Item"
        ],
        "summary": "Create an outside processing line item on a purchase order",
        "operationId": "CreatePurchaseOrderOutsideProcessingLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderOutsideProcessingLineItemCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderOutsideProcessingLineItemCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderOutsideProcessingLineItemCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderOutsideProcessingLineItemCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Outside processing line item added to purchase order",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order not found"
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/outside-processing-line-items/{lineItemId}": {
      "delete": {
        "tags": [
          "Purchase Order Outside Processing Line Item"
        ],
        "summary": "Delete an outside processing line item on a purchase order",
        "operationId": "DeletePurchaseOrderOutsideProcessingLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Purchase order or line item cannot be modified"
          },
          "404": {
            "description": "Purchase order or line item did not exist"
          }
        }
      },
      "get": {
        "tags": [
          "Purchase Order Outside Processing Line Item"
        ],
        "summary": "Get a specific outside processing line item for a purchase order",
        "operationId": "GetPurchaseOrderOutsideProcessingLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Outside processing line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderOutsideProcessingLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderOutsideProcessingLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order or line item did not exist"
          }
        }
      },
      "patch": {
        "tags": [
          "Purchase Order Outside Processing Line Item"
        ],
        "summary": "Partially update a specific outside processing line item for a purchase order",
        "operationId": "PatchPurchaseOrderOutsideProcessingLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Outside processing line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderOutsideProcessingLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderOutsideProcessingLineItemDto"
                }
              }
            }
          },
          "400": {
            "description": "Purchase order or line item cannot be modified"
          },
          "404": {
            "description": "Purchase order or line item did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Purchase Order Outside Processing Line Item"
        ],
        "summary": "Update a specific outside processing line item for a purchase order",
        "operationId": "UpdatePurchaseOrderOutsideProcessingLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderOutsideProcessingLineItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderOutsideProcessingLineItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderOutsideProcessingLineItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderOutsideProcessingLineItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Outside processing line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderOutsideProcessingLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderOutsideProcessingLineItemDto"
                }
              }
            }
          },
          "400": {
            "description": "Purchase order or line item cannot be modified"
          },
          "404": {
            "description": "Purchase order or line item did not exist"
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/outside-processing-line-items/list": {
      "post": {
        "tags": [
          "Purchase Order Outside Processing Line Item"
        ],
        "summary": "Get a list of outside processing lines items for a purchase order",
        "operationId": "ListPurchaseOrderOutsideProcessingLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of outside processing line items for the given purchase order id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PurchaseOrderOutsideProcessingLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PurchaseOrderOutsideProcessingLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The purchase order did not exist"
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/outside-processing-line-items/{lineItemId}/tax-allocations": {
      "get": {
        "tags": [
          "Purchase Order Outside Processing Line Item"
        ],
        "summary": "Get tax allocations for a specific outside processing line item on a purchase order",
        "operationId": "GetPurchaseOrderOutsideProcessingLineItemTaxAllocations",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Tax allocation data for the outside processing line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderLineItemTaxAllocationResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderLineItemTaxAllocationResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order or line item did not exist"
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/part-line-items": {
      "post": {
        "tags": [
          "Purchase Order Part Line Item"
        ],
        "summary": "Create a part line item on a purchase order",
        "operationId": "CreatePurchaseOrderPartLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderPartLineItemCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderPartLineItemCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderPartLineItemCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderPartLineItemCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Part line item added to purchase order",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/part-line-items/{lineItemId}": {
      "delete": {
        "tags": [
          "Purchase Order Part Line Item"
        ],
        "summary": "Delete a part line item on a purchase order",
        "operationId": "DeletePurchaseOrderPartLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "Purchase order or line item cannot be modified"
          },
          "404": {
            "description": "Purchase order or line item did not exist"
          }
        }
      },
      "get": {
        "tags": [
          "Purchase Order Part Line Item"
        ],
        "summary": "Get a specific part line item for a purchase order",
        "operationId": "GetPurchaseOrderPartLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Part line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderPartLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderPartLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order or line item did not exist"
          }
        }
      },
      "patch": {
        "tags": [
          "Purchase Order Part Line Item"
        ],
        "summary": "Partially update a specific part line item for a purchase order",
        "operationId": "PatchPurchaseOrderPartLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Part line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderPartLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderPartLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order or line item did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Purchase Order Part Line Item"
        ],
        "summary": "Update a specific part line item for a purchase order",
        "operationId": "UpdatePurchaseOrderPartLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderPartLineItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderPartLineItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderPartLineItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderPartLineItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Part line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderPartLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderPartLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order or line item did not exist"
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/part-line-items/list": {
      "post": {
        "tags": [
          "Purchase Order Part Line Item"
        ],
        "summary": "Get a list of part line items for a purchase order",
        "operationId": "ListPurchaseOrderPartLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of part line items for the given purchase order id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PurchaseOrderPartLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PurchaseOrderPartLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The purchase order did not exist"
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/part-line-items/{lineItemId}/tax-allocations": {
      "get": {
        "tags": [
          "Purchase Order Part Line Item"
        ],
        "summary": "Get tax allocations for a specific part line item on a purchase order",
        "operationId": "GetPurchaseOrderPartLineItemTaxAllocations",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Tax allocation data for the part line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderLineItemTaxAllocationResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderLineItemTaxAllocationResponseDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order or line item did not exist"
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/tax-line-items/{lineItemId}": {
      "get": {
        "tags": [
          "Purchase Order Tax Line Item"
        ],
        "summary": "Get a specific tax line item for a purchase order",
        "operationId": "GetPurchaseOrderTaxLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Tax line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderTaxLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderTaxLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order or tax line item did not exist"
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/tax-line-items/list": {
      "post": {
        "tags": [
          "Purchase Order Tax Line Item"
        ],
        "summary": "Get a list of tax lines items for a purchase order",
        "operationId": "ListPurchaseOrderTaxLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of tax line items for the given purchase order id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PurchaseOrderTaxLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PurchaseOrderTaxLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The purchase order did not exist"
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/vendor-credit-line-items/{lineItemId}": {
      "get": {
        "tags": [
          "Purchase Order Vendor Credit Line Item"
        ],
        "summary": "Get a specific vendor credit line item for a purchase order",
        "operationId": "GetPurchaseOrderVendorCreditLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Vendor credit line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderVendorCreditLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderVendorCreditLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order or line item did not exist"
          }
        }
      },
      "patch": {
        "tags": [
          "Purchase Order Vendor Credit Line Item"
        ],
        "summary": "Partially update a specific vendor credit line item for a purchase order",
        "operationId": "PatchPurchaseOrderVendorCreditLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Vendor credit line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderVendorCreditLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderVendorCreditLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order or line item did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Purchase Order Vendor Credit Line Item"
        ],
        "summary": "Update a specific vendor credit line item for a purchase order",
        "operationId": "UpdatePurchaseOrderVendorCreditLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderVendorCreditLineItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderVendorCreditLineItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderVendorCreditLineItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PurchaseOrderVendorCreditLineItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Vendor credit line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderVendorCreditLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/PurchaseOrderVendorCreditLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Purchase order or line item did not exist"
          }
        }
      }
    },
    "/api/purchase-orders/{purchaseOrderId}/vendor-credit-line-items/list": {
      "post": {
        "tags": [
          "Purchase Order Vendor Credit Line Item"
        ],
        "summary": "Get a list of vendor credit line items for a specific purchase order",
        "operationId": "ListPurchaseOrderVendorCreditLineItem",
        "parameters": [
          {
            "name": "purchaseOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of vendor credit line items for the given purchase order id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PurchaseOrderVendorCreditLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PurchaseOrderVendorCreditLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Purchase order did not exist"
          }
        }
      }
    },
    "/api/quotes/{quoteId}/to-sales-order": {
      "post": {
        "tags": [
          "Quote"
        ],
        "summary": "Convert a quote to a sales order",
        "operationId": "ConvertToSalesOrder",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Sales order created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issue or invalid/bad request"
          },
          "404": {
            "description": "Quote did not exist"
          }
        }
      }
    },
    "/api/quote": {
      "post": {
        "tags": [
          "Quote"
        ],
        "summary": "TO BE REMOVED 06/30/2025 - Create a new draft quote",
        "description": "Please use provided route instead ==> quotes",
        "operationId": "CreateQuote_deprecated",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Quote created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        },
        "deprecated": true
      }
    },
    "/api/quotes": {
      "post": {
        "tags": [
          "Quote"
        ],
        "summary": "Create a new draft quote",
        "operationId": "CreateQuote",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Quote created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/quote/{quoteId}": {
      "delete": {
        "tags": [
          "Quote"
        ],
        "summary": "TO BE REMOVED 06/30/2025 - Delete a specific Quote",
        "description": "Please use provided route instead ==> quotes/{quoteId}",
        "operationId": "DeleteQuote_deprecated",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Quote did not exist"
          }
        },
        "deprecated": true
      }
    },
    "/api/quotes/{quoteId}": {
      "delete": {
        "tags": [
          "Quote"
        ],
        "summary": "Delete a specific Quote",
        "operationId": "DeleteQuote",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Quote did not exist"
          }
        }
      },
      "get": {
        "tags": [
          "Quote"
        ],
        "summary": "Get a specific Quote",
        "operationId": "GetQuote",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The Quote for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteDto"
                }
              }
            }
          },
          "404": {
            "description": "Quote did not exist"
          }
        }
      },
      "patch": {
        "tags": [
          "Quote"
        ],
        "summary": "Partially update a quote",
        "operationId": "PatchQuote",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Quote item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteDto"
                }
              }
            }
          },
          "404": {
            "description": "Quote did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Quote"
        ],
        "summary": "Update a quote",
        "operationId": "UpdateQuote",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Quote item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteDto"
                }
              }
            }
          },
          "404": {
            "description": "Quote did not exist"
          }
        }
      }
    },
    "/api/quotes/list": {
      "post": {
        "tags": [
          "Quote"
        ],
        "summary": "Find quotes based on search parameters.",
        "operationId": "ListQuote",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of quotes matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/QuoteDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/QuoteDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/quotes/{quoteId}/status": {
      "post": {
        "tags": [
          "Quote"
        ],
        "summary": "Update a quote status",
        "operationId": "StatusUpdateQuote",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteRequestUpdateQuoteStatusRequest"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteRequestUpdateQuoteStatusRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteRequestUpdateQuoteStatusRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteRequestUpdateQuoteStatusRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "400": {
            "description": "invalid status change"
          },
          "404": {
            "description": "quote did not exist"
          }
        }
      }
    },
    "/api/quotes/{id}/customFields": {
      "put": {
        "tags": [
          "Quote Custom Fields"
        ],
        "summary": "Update (selectively) custom fields on a quote",
        "operationId": "UpdateQuoteCustomFields",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The quote identifier",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The custom fields to update",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/quotes/{id}/custom-fields": {
      "put": {
        "tags": [
          "Quote Custom Fields"
        ],
        "summary": "Update (selectively) custom fields on a quote",
        "operationId": "UpdateQuoteCustomFields",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The quote identifier",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The custom fields to update",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/quotes/{quoteId}/discount-line-item": {
      "delete": {
        "tags": [
          "Quote Discount Line Item"
        ],
        "summary": "Delete the discount line item for a Quote",
        "operationId": "DeleteQuoteDiscountLineItem",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Discount line item did not exist"
          },
          "404": {
            "description": "Quote did not exist"
          }
        }
      },
      "get": {
        "tags": [
          "Quote Discount Line Item"
        ],
        "summary": "Get the discount line item for a quote",
        "operationId": "GetQuoteDiscountLineItem",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Discount line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteDiscountLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteDiscountLineItemDto"
                }
              }
            }
          },
          "204": {
            "description": "Discount line item does not exist"
          },
          "404": {
            "description": "Quote did not exist"
          }
        }
      }
    },
    "/api/quote/{quoteId}/discount-line-item": {
      "put": {
        "tags": [
          "Quote Discount Line Item"
        ],
        "summary": "Update the discount line item for a quote",
        "operationId": "UpdateQuoteDiscountLineItem",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteDiscountLineItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteDiscountLineItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteDiscountLineItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteDiscountLineItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Discount line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteDiscountLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteDiscountLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Quote does not exist"
          }
        }
      }
    },
    "/api/quotes/{quoteId}/fee-line-items": {
      "post": {
        "tags": [
          "Quote Fee Line Item"
        ],
        "summary": "Create a fee line item on a Quote",
        "operationId": "CreateQuoteFeeLineItem",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteFeeLineItemCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteFeeLineItemCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteFeeLineItemCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteFeeLineItemCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Fee line item added to Quote",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/quotes/{quoteId}/fee-line-items/{lineItemId}": {
      "delete": {
        "tags": [
          "Quote Fee Line Item"
        ],
        "summary": "Delete a specific fee line item for a Quote",
        "operationId": "DeleteQuoteFeeLineItem",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Fee line item did not exist"
          },
          "404": {
            "description": "Quote did not exist"
          }
        }
      },
      "get": {
        "tags": [
          "Quote Fee Line Item"
        ],
        "summary": "Get a specific fee line item for a Quote",
        "operationId": "GetQuoteFeeLineItem",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Fee line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteFeeLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteFeeLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Quote or fee line items did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Quote Fee Line Item"
        ],
        "summary": "Update a specific fee line item for a Quote",
        "operationId": "UpdateQuoteFeeLineItem",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteFeeLineItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteFeeLineItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteFeeLineItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteFeeLineItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Fee line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteFeeLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteFeeLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Quote or fee line items did not exist"
          }
        }
      }
    },
    "/api/quotes/{quoteId}/fee-line-items/list": {
      "post": {
        "tags": [
          "Quote Fee Line Item"
        ],
        "summary": "Get a list of fee lines items for a Quote",
        "operationId": "ListQuoteFeeLineItem",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of fee line items for the given Quote id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/QuoteFeeLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/QuoteFeeLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The Quote did not exist"
          }
        }
      }
    },
    "/api/quotes/{quoteId}/part-line-items": {
      "post": {
        "tags": [
          "Quote Part Line Item"
        ],
        "summary": "Create a part line item on a Quote",
        "operationId": "CreateQuotePartLineItem",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/QuotePartLineItemCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuotePartLineItemCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/QuotePartLineItemCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/QuotePartLineItemCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Part line item added to Quote",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/quotes/{quoteId}/part-line-items/batch": {
      "post": {
        "tags": [
          "Quote Part Line Item"
        ],
        "summary": "Create one or more part line items on a quote",
        "operationId": "CreateQuotePartLineItemBatch",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/QuotePartLineItemCreateBatchDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuotePartLineItemCreateBatchDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/QuotePartLineItemCreateBatchDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/QuotePartLineItemCreateBatchDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Part line items added to quote",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchCreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchCreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/quotes/{quoteId}/part-line-items/{lineItemId}": {
      "delete": {
        "tags": [
          "Quote Part Line Item"
        ],
        "summary": "Delete a specific part line item for a Quote",
        "operationId": "DeleteQuotePartLineItem",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Part line item did not exist"
          },
          "404": {
            "description": "Quote did not exist"
          }
        }
      },
      "get": {
        "tags": [
          "Quote Part Line Item"
        ],
        "summary": "Get a specific part line item for a quote",
        "operationId": "GetQuotePartLineItem",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "includeCostBreakdown",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Part line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuotePartLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/QuotePartLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Quote or line items did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Quote Part Line Item"
        ],
        "summary": "Update a specific part line item for a Quote",
        "operationId": "UpdateQuotePartLineItem",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/QuotePartLineItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuotePartLineItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/QuotePartLineItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/QuotePartLineItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Part line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuotePartLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/QuotePartLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Quote or line items did not exist"
          }
        }
      }
    },
    "/api/quotes/{quoteId}/part-line-items/list": {
      "post": {
        "tags": [
          "Quote Part Line Item"
        ],
        "summary": "Get a list of part lines items for a quote",
        "operationId": "ListQuotePartLineItem",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "includeCostBreakdown",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of part line items for the given quote id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/QuotePartLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/QuotePartLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The quote did not exist"
          }
        }
      }
    },
    "/api/quotes/{quoteId}/part-line-items/{lineItemId}/cost-breakdown": {
      "get": {
        "tags": [
          "Quote Part Line Item"
        ],
        "summary": "Get the cost breakdown for a specific part line item for a quote",
        "operationId": "GetQuotePartLineItemCostBreakdown",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Part line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonCostBreakdownDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonCostBreakdownDto"
                }
              }
            }
          },
          "404": {
            "description": "Quote or line items did not exist"
          }
        }
      }
    },
    "/api/quotes/{quoteId}/part-line-items/{lineItemId}/customFields": {
      "put": {
        "tags": [
          "Quote Part Line Item Custom Fields"
        ],
        "summary": "Update (selectively) custom fields on a line item",
        "operationId": "UpdateQuotePartLineItemCustomFields",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "description": "The quote identifier that contains the line item",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The line item identifier that contains the custom fields you want to update.",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The custom fields to update",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/quotes/{quoteId}/part-line-items/{lineItemId}/custom-fields": {
      "put": {
        "tags": [
          "Quote Part Line Item Custom Fields"
        ],
        "summary": "Update (selectively) custom fields on a line item",
        "operationId": "UpdateQuotePartLineItemCustomFields",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "description": "The quote identifier that contains the line item",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The line item identifier that contains the custom fields you want to update.",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The custom fields to update",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/quotes/{QuoteId}/part-line-items/{lineItemId}/routing/{routingId}/input-items": {
      "post": {
        "tags": [
          "Quote Part Line Item Full Routing"
        ],
        "summary": "Create a full routing input item for a quote part line item",
        "operationId": "QuotePartLineItemFullRoutingInputItemCreate",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/quotes/{quoteId}/part-line-items/{lineItemId}/routing/{routingId}/input-items/{inputItemId}": {
      "delete": {
        "tags": [
          "Quote Part Line Item Full Routing"
        ],
        "summary": "Delete a full routing input item from quote part line item",
        "operationId": "QuotePartLineItemFullRoutingInputItemDelete",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "inputItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "get": {
        "tags": [
          "Quote Part Line Item Full Routing"
        ],
        "summary": "Gets a full routing input item for a quote part line item",
        "operationId": "QuotePartLineItemFullRoutingInputItemGet",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "inputItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Quote Part Line Item Full Routing"
        ],
        "summary": "Update a full routing input item for a quote part line item",
        "operationId": "QuotePartLineItemFullRoutingInputItemUpdate",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "inputItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/quotes/{quoteId}/part-line-items/{lineItemId}/routing/{routingId}/input-items/list": {
      "post": {
        "tags": [
          "Quote Part Line Item Full Routing"
        ],
        "summary": "Lists the full routing input items for a quote part line item",
        "operationId": "QuotePartLineItemFullRoutingInputItemList",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/quotes/{quoteId}/part-line-items/{lineItemId}/routing/{routingId}/input-materials/list": {
      "post": {
        "tags": [
          "Quote Part Line Item Full Routing"
        ],
        "summary": "List input materials for a quote part line item's routing",
        "operationId": "QuotePartLineItemFullRoutingInputMaterialList",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputMaterialDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputMaterialDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/quotes/{quoteId}/part-line-items/{lineItemId}/routing/{routingId}/operations/{operationId}/ipts/{phase}": {
      "post": {
        "tags": [
          "Quote Part Line Item Full Routing"
        ],
        "summary": "Creates a full routing operations for a quote part line item",
        "operationId": "QuotePartLineItemFullRoutingIptCreate",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "phase",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DomainInProcessTrackingFieldCheckpointPhase"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingIptCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingIptCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingIptCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingIptCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/quotes/{quoteId}/part-line-items/{lineItemId}/routing/{routingId}/operations/{operationId}/ipts/{phase}/{iptId}": {
      "delete": {
        "tags": [
          "Quote Part Line Item Full Routing"
        ],
        "summary": "Deletes a full routing operation in process tracking field for a quote part line item",
        "operationId": "QuotePartLineItemFullRoutingIptDelete",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "phase",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DomainInProcessTrackingFieldCheckpointPhase"
            }
          },
          {
            "name": "iptId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "get": {
        "tags": [
          "Quote Part Line Item Full Routing"
        ],
        "summary": "Gets a full routing operation in process tracking field for a quote part line item",
        "operationId": "QuotePartLineItemFullRoutingIptGet",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "phase",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DomainInProcessTrackingFieldCheckpointPhase"
            }
          },
          {
            "name": "iptId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingIptDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingIptDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/quotes/{quoteId}/part-line-items/{lineItemId}/routing/{routingId}/operations/{operationId}/ipts/{phase}/list": {
      "post": {
        "tags": [
          "Quote Part Line Item Full Routing"
        ],
        "summary": "Lists full routing operation in process tracking fields for a quote part line item",
        "operationId": "QuotePartLineItemFullRoutingIptList",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "phase",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DomainInProcessTrackingFieldCheckpointPhase"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestIptFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestIptFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestIptFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestIptFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingIptDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingIptDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/quotes/{quoteId}/part-line-items/{lineItemId}/make-summary": {
      "get": {
        "tags": [
          "Quote Part Line Item Full Routing"
        ],
        "summary": "Get a summary of the make routing for a quote part line item",
        "operationId": "QuotePartLineItemFullRoutingMakeSummaryGet",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RoutingDataFullRoutingMakeSummaryDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RoutingDataFullRoutingMakeSummaryDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/quotes/{quoteId}/part-line-items/{lineItemId}/routing/{routingId}/operations": {
      "post": {
        "tags": [
          "Quote Part Line Item Full Routing"
        ],
        "summary": "Creates a full routing operation for a quote part line item",
        "operationId": "QuotePartLineItemFullRoutingOperationCreate",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/quotes/{quoteId}/part-line-items/{lineItemId}/routing/{routingId}/operations/{operationId}": {
      "delete": {
        "tags": [
          "Quote Part Line Item Full Routing"
        ],
        "summary": "Removes a full routing operation for a quote part line item",
        "operationId": "QuotePartLineItemFullRoutingOperationDelete",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "get": {
        "tags": [
          "Quote Part Line Item Full Routing"
        ],
        "summary": "Gets a full routing operation for a quote part line item",
        "operationId": "QuotePartLineItemFullRoutingOperationGet",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingOperationDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingOperationDto"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Quote Part Line Item Full Routing"
        ],
        "summary": "Updates a full routing operation for a quote part line item",
        "operationId": "QuotePartLineItemFullRoutingOperationUpdate",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/quotes/{quoteId}/part-line-items/{lineItemId}/routing/{routingId}/operations/{operationId}/items/{operationItemId}": {
      "get": {
        "tags": [
          "Quote Part Line Item Full Routing"
        ],
        "summary": "Gets a full routing operation item for a quote part line item",
        "operationId": "QuotePartLineItemFullRoutingOperationItemGet",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/quotes/{quoteId}/part-line-items/{lineItemId}/routing/{routingId}/operations/{operationId}/items/list": {
      "post": {
        "tags": [
          "Quote Part Line Item Full Routing"
        ],
        "summary": "List full routing operation items for a quote part line item",
        "operationId": "QuotePartLineItemFullRoutingOperationItemList",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/quotes/{quoteId}/part-line-items/{lineItemId}/routing/{routingId}/operations/list": {
      "post": {
        "tags": [
          "Quote Part Line Item Full Routing"
        ],
        "summary": "Lists full routing operations for a quote part line item",
        "operationId": "QuotePartLineItemFullRoutingOperationList",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestOperationFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestOperationFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestOperationFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestOperationFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingOperationDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingOperationDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/quotes/{quoteId}/part-line-items/{lineItemId}/routing/{routingId}": {
      "get": {
        "tags": [
          "Quote Part Line Item Full Routing"
        ],
        "summary": "Gets a full routing routing for a quote part line item",
        "operationId": "QuotePartLineItemFullRoutingRoutingGet",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/quotes/{quoteId}/tax-line-items": {
      "post": {
        "tags": [
          "Quote Tax Line Item"
        ],
        "summary": "Create a tax line item on a Quote",
        "operationId": "CreateQuoteTaxLineItem",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteTaxLineItemCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteTaxLineItemCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteTaxLineItemCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteTaxLineItemCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Tax line item added to Quote",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/quotes/{quoteId}/tax-line-items/{lineItemId}": {
      "delete": {
        "tags": [
          "Quote Tax Line Item"
        ],
        "summary": "Delete a specific tax line item for a Quote",
        "operationId": "DeleteQuoteTaxLineItem",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Tax line item did not exist"
          },
          "404": {
            "description": "Quote did not exist"
          }
        }
      },
      "get": {
        "tags": [
          "Quote Tax Line Item"
        ],
        "summary": "Get a specific tax line item for a Quote",
        "operationId": "GetQuoteTaxLineItem",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Tax line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteTaxLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteTaxLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Quote or tax line items did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Quote Tax Line Item"
        ],
        "summary": "Update a specific tax line item for a Quote",
        "operationId": "UpdateQuoteTaxLineItem",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteTaxLineItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteTaxLineItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteTaxLineItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/QuoteTaxLineItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Tax line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteTaxLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/QuoteTaxLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Quote or tax line items did not exist"
          }
        }
      }
    },
    "/api/quotes/{quoteId}/tax-line-items/list": {
      "post": {
        "tags": [
          "Quote Tax Line Item"
        ],
        "summary": "Get a list of tax lines items for a Quote",
        "operationId": "ListQuoteTaxLineItem",
        "parameters": [
          {
            "name": "quoteId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of tax line items for the given Quote id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/QuoteTaxLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/QuoteTaxLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The Quote did not exist"
          }
        }
      }
    },
    "/api/receiving/receipts": {
      "post": {
        "tags": [
          "Receiving Receipt"
        ],
        "summary": "Create a receipt for a specific purchase or sales order",
        "operationId": "CreateReceipt",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivingReceiptCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivingReceiptCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivingReceiptCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivingReceiptCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Receipt created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivingReceiptDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivingReceiptDto"
                }
              }
            }
          },
          "404": {
            "description": "Receipt was not created"
          }
        }
      }
    },
    "/api/receiving/receipts/{receiptId}": {
      "get": {
        "tags": [
          "Receiving Receipt"
        ],
        "summary": "Get a specific receipt on a purchase or sales order",
        "operationId": "GetReceipt",
        "parameters": [
          {
            "name": "receiptId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Receipt",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivingReceiptDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivingReceiptDto"
                }
              }
            }
          },
          "404": {
            "description": "Receipt did not exist"
          }
        }
      },
      "patch": {
        "tags": [
          "Receiving Receipt"
        ],
        "summary": "Partially update a specific receipt for a purchase or sales order",
        "operationId": "PatchReceipt",
        "parameters": [
          {
            "name": "receiptId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Receipt",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivingReceiptDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivingReceiptDto"
                }
              }
            }
          },
          "404": {
            "description": "Receipt did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Receiving Receipt"
        ],
        "summary": "Update a specific receipt for a purchase or sales order",
        "operationId": "UpdateReceipt",
        "parameters": [
          {
            "name": "receiptId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivingReceiptUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivingReceiptUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivingReceiptUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivingReceiptUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Receipt",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivingReceiptDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivingReceiptDto"
                }
              }
            }
          },
          "404": {
            "description": "Receipt did not exist"
          }
        }
      }
    },
    "/api/receiving/receipts/list": {
      "post": {
        "tags": [
          "Receiving Receipt"
        ],
        "summary": "Get a list of receipts for purchase and sales orders",
        "operationId": "ListReceipt",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivingRequestListFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivingRequestListFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivingRequestListFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivingRequestListFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of receipts",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReceivingReceiptDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReceivingReceiptDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/receiving/receipts/{receiptId}/line-items/{lineId}": {
      "get": {
        "tags": [
          "Receiving Receipt Line Item"
        ],
        "summary": "Get a specific line item for a receipt on a purchase or sales order",
        "operationId": "GetReceiptLineItem",
        "parameters": [
          {
            "name": "receiptId",
            "in": "path",
            "description": "The receiving id",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "lineId",
            "in": "path",
            "description": "This will match on the line item id (from the purchase order or sales order) or the line id of the specific receiving",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivingLineItemReceiptLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivingLineItemReceiptLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Receipt or line item did not exist"
          }
        }
      },
      "patch": {
        "tags": [
          "Receiving Receipt Line Item"
        ],
        "summary": "Partially update a specific receipt for a purchase or sales order",
        "operationId": "PatchReceiptLineItem",
        "parameters": [
          {
            "name": "receiptId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "lineId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Receipt",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivingLineItemReceiptLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivingLineItemReceiptLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Receipt did not exist"
          }
        }
      },
      "delete": {
        "tags": [
          "Receiving Receipt Line Item"
        ],
        "summary": "Roll back a specific line item for a receipt on a purchase or sales order",
        "operationId": "RollbackReceiptLineItem",
        "parameters": [
          {
            "name": "receiptId",
            "in": "path",
            "description": "The receiving id",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "lineId",
            "in": "path",
            "description": "This will match on the line item id (from the purchase order or sales order) or the line id of the specific receiving",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Receipt or line item did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Receiving Receipt Line Item"
        ],
        "summary": "Update a specific receipt line item for a purchase or sales order receiving",
        "operationId": "UpdateReceiptLineItem",
        "parameters": [
          {
            "name": "receiptId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "lineId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivingLineItemReceiptLineItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivingLineItemReceiptLineItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivingLineItemReceiptLineItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ReceivingLineItemReceiptLineItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Receipt line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivingLineItemReceiptLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceivingLineItemReceiptLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Receipt did not exist"
          }
        }
      }
    },
    "/api/receiving/receipts/{receiptId}/line-items/list": {
      "post": {
        "tags": [
          "Receiving Receipt Line Item"
        ],
        "summary": "List line items for a receipt on a purchase or sales order",
        "operationId": "ListReceiptLineItem",
        "parameters": [
          {
            "name": "receiptId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Line items for the given receipt",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReceivingLineItemReceiptLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ReceivingLineItemReceiptLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Receipt did not exist"
          }
        }
      }
    },
    "/api/refund-reason-codes/{id}": {
      "get": {
        "tags": [
          "Refund Reason Code"
        ],
        "summary": "Get a refund code.",
        "operationId": "GetRefundReasonCode",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The refund reason code for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              }
            }
          },
          "404": {
            "description": "Refund reason code did not exist"
          }
        }
      }
    },
    "/api/refund-reason-codes/list": {
      "post": {
        "tags": [
          "Refund Reason Code"
        ],
        "summary": "Find refund reason codes based on search parameters.",
        "operationId": "ListRefundReasonCode",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of refund reason codes matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/reporting/inventory/list": {
      "post": {
        "tags": [
          "Reporting"
        ],
        "summary": "Lists report-ready on-hand inventory rows from the inventory reporting view, including per-unit and\nextended valuation (material/labor/machine/OP), lot and location context, and item categorization\nso callers do not need to hand-join inventory to lots, items, and their details. Returns exactly\none row per (item, lot, location), so summing on-hand quantity or value across the rows does not\nover-count a lot.",
        "operationId": "ListInventoryReport",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingInventoryReportFilter"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingInventoryReportFilter"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingInventoryReportFilter"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingInventoryReportFilter"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A page of inventory report rows with the total matching count.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoDtoReportingInventoryReportRow"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoDtoReportingInventoryReportRow"
                }
              }
            }
          },
          "403": {
            "description": "The viewer lacks the View Inventory permission."
          }
        }
      }
    },
    "/api/reporting/invoice/list": {
      "post": {
        "tags": [
          "Reporting"
        ],
        "summary": "Lists report-ready invoice-line rows from the invoice reporting view, including line type,\npricing, tax, and aging detail joined to sales-order and shipment context so callers do not need\nto hand-join invoices to invoice line items, sales orders, and shipments.",
        "operationId": "ListInvoiceReport",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingInvoiceReportFilter"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingInvoiceReportFilter"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingInvoiceReportFilter"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingInvoiceReportFilter"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A page of invoice report rows with the total matching count.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoDtoReportingInvoiceReportRow"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoDtoReportingInvoiceReportRow"
                }
              }
            }
          },
          "403": {
            "description": "The viewer lacks the View Invoices permission."
          }
        }
      }
    },
    "/api/reporting/job-activity-by-operator/list": {
      "post": {
        "tags": [
          "Reporting"
        ],
        "summary": "Lists report-ready per-operator operation rows from the job-activity-by-operator reporting view,\nincluding setup/labor/machine time and cost, run-by-run quantities, rates, and job/routing context\nso callers do not need to hand-join jobs to items-to-make, operations, timers, and job logs.",
        "operationId": "ListJobActivityByOperatorReport",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingJobActivityByOperatorReportFilter"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingJobActivityByOperatorReportFilter"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingJobActivityByOperatorReportFilter"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingJobActivityByOperatorReportFilter"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A page of job-activity-by-operator report rows with the total matching count.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoDtoReportingJobActivityByOperatorReportRow"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoDtoReportingJobActivityByOperatorReportRow"
                }
              }
            }
          },
          "403": {
            "description": "The viewer lacks one of the required permissions (View Job and View Time Management)."
          }
        }
      }
    },
    "/api/reporting/job-activity/list": {
      "post": {
        "tags": [
          "Reporting"
        ],
        "summary": "Lists report-ready job-operation rows from the job-activity reporting view, including schedule,\ntimer, completion-progress, and routing context so callers do not need to hand-join jobs to\nitems-to-make, operations, timers, and scheduling data.",
        "operationId": "ListJobActivityReport",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingJobActivityReportFilter"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingJobActivityReportFilter"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingJobActivityReportFilter"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingJobActivityReportFilter"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A page of job-activity report rows with the total matching count.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoDtoReportingJobActivityReportRow"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoDtoReportingJobActivityReportRow"
                }
              }
            }
          },
          "403": {
            "description": "The viewer lacks the View Job permission."
          }
        }
      }
    },
    "/api/reporting/quote/list": {
      "post": {
        "tags": [
          "Reporting"
        ],
        "summary": "Lists report-ready quote rows from the quote reporting view, including totals, cost, status, and\nlifecycle dates, so callers do not need to hand-assemble quote-level summary data.",
        "operationId": "ListQuoteReport",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingQuoteReportFilter"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingQuoteReportFilter"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingQuoteReportFilter"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingQuoteReportFilter"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A page of quote report rows with the total matching count.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoDtoReportingQuoteReportRow"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoDtoReportingQuoteReportRow"
                }
              }
            }
          },
          "403": {
            "description": "The viewer lacks the View Quote permission."
          }
        }
      }
    },
    "/api/reporting/sales-order-lines/list": {
      "post": {
        "tags": [
          "Reporting"
        ],
        "summary": "Lists report-ready sales-order line rows from the sales-order line-items reporting view,\nincluding pre-computed cost, invoice, ship, and return columns so callers do not need to\nhand-join sales orders to line items, jobs, invoices, shipments, and returns.",
        "operationId": "ListSalesOrderLinesReport",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingSalesOrderLinesReportFilter"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingSalesOrderLinesReportFilter"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingSalesOrderLinesReportFilter"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingSalesOrderLinesReportFilter"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A page of sales-order line report rows with the total matching count.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoDtoReportingSalesOrderLinesReportRow"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoDtoReportingSalesOrderLinesReportRow"
                }
              }
            }
          },
          "403": {
            "description": "The viewer lacks one of the required permissions (View Sales Order, View Customer, View Job, View Invoices, and View Shipments)."
          }
        }
      }
    },
    "/api/reporting/shipping/list": {
      "post": {
        "tags": [
          "Reporting"
        ],
        "summary": "Lists report-ready shipment line rows from the shipping reporting view, including pre-computed\ndollar columns ($ shipped, $ unshipped, total $ ordered, unit price) so callers do not need to\nhand-join shipments to sales-order line items.",
        "operationId": "ListShippingReport",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingShippingReportFilter"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingShippingReportFilter"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingShippingReportFilter"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingShippingReportFilter"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A page of shipping report rows with the total matching count.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoDtoReportingShippingReportRow"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoDtoReportingShippingReportRow"
                }
              }
            }
          },
          "403": {
            "description": "The viewer lacks the View Shipments permission."
          }
        }
      }
    },
    "/api/reporting/time-clock/list": {
      "post": {
        "tags": [
          "Reporting"
        ],
        "summary": "Lists report-ready time-clock rows from the time-clock reporting view, including clock-in/clock-out\ntimes, computed shift hours, reason and clock codes, and override-audit context so callers do not\nneed to hand-join timer entries to their reason and clock-code tags.",
        "operationId": "ListTimeClockReport",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingTimeClockReportFilter"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingTimeClockReportFilter"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingTimeClockReportFilter"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/DtoReportingTimeClockReportFilter"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "A page of time-clock report rows with the total matching count.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoDtoReportingTimeClockReportRow"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoDtoReportingTimeClockReportRow"
                }
              }
            }
          },
          "403": {
            "description": "The viewer lacks the View Time Management permission."
          }
        }
      }
    },
    "/api/sales-orders": {
      "post": {
        "tags": [
          "Sales Order"
        ],
        "summary": "Create a new draft sales order",
        "operationId": "CreateSalesOrder",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Sales order created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}": {
      "delete": {
        "tags": [
          "Sales Order"
        ],
        "summary": "Delete a specific sales order",
        "operationId": "DeleteSalesOrder",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Sales order did not exist"
          }
        }
      },
      "get": {
        "tags": [
          "Sales Order"
        ],
        "summary": "Get a specific sales order",
        "operationId": "GetSalesOrder",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The sales order for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderDto"
                }
              }
            }
          },
          "404": {
            "description": "Sales order did not exist"
          }
        }
      },
      "patch": {
        "tags": [
          "Sales Order"
        ],
        "summary": "Partially update an SalesOrder",
        "operationId": "PatchSalesOrder",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "SalesOrder item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderDto"
                }
              }
            }
          },
          "404": {
            "description": "SalesOrder did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Sales Order"
        ],
        "summary": "Update a sales order",
        "operationId": "UpdateSalesOrder",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Sales order item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderDto"
                }
              }
            }
          },
          "404": {
            "description": "Sales order did not exist"
          }
        }
      }
    },
    "/api/sales-orders/list": {
      "post": {
        "tags": [
          "Sales Order"
        ],
        "summary": "Find sales orders based on search parameters.",
        "operationId": "ListSalesOrder",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of sales orders matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SalesOrderDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SalesOrderDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/status": {
      "post": {
        "tags": [
          "Sales Order"
        ],
        "summary": "Update a sales order status",
        "operationId": "StatusUpdateSalesOrder",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderRequestUpdateStatus"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderRequestUpdateStatus"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderRequestUpdateStatus"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderRequestUpdateStatus"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success"
          },
          "404": {
            "description": "Sales order did not exist"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/blanket-line-items/list": {
      "post": {
        "tags": [
          "Sales Order Blanket Line Item"
        ],
        "summary": "Get a list of blanket lines items for a sales order",
        "operationId": "ListSalesOrderBlanketLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of blanket line items for the given sales order id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SalesOrderBlanketLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SalesOrderBlanketLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The sales order did not exist"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/blanket-line-items/{lineItemId}": {
      "patch": {
        "tags": [
          "Sales Order Blanket Line Item"
        ],
        "summary": "Partially update a specific blanket line item for a sales order",
        "operationId": "PatchSalesOrderBlanketLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Blanket line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderBlanketLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderBlanketLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Sales order or line item did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Sales Order Blanket Line Item"
        ],
        "summary": "Update a specific blanket line item for a sales order",
        "operationId": "UpdateSalesOrderBlanketLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderBlanketLineItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderBlanketLineItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderBlanketLineItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderBlanketLineItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Blanket line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderBlanketLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderBlanketLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Sales order or blanket line items did not exist"
          }
        }
      },
      "get": {
        "tags": [
          "Sales Order Blanket Line Item"
        ],
        "summary": "Get a specific blanket line item for a sales order",
        "operationId": "GetSalesOrderBlanketLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Blanket line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderBlanketLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderBlanketLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Sales order or blanket line item did not exist"
          }
        }
      }
    },
    "/api/sales-orders/{id}/customFields": {
      "put": {
        "tags": [
          "Sales Order Custom Fields"
        ],
        "summary": "Update (selectively) custom fields on a sales order",
        "operationId": "UpdateSalesOrderCustomFields",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The sales order identifier",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The custom fields to update",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/sales-orders/{id}/custom-fields": {
      "put": {
        "tags": [
          "Sales Order Custom Fields"
        ],
        "summary": "Update (selectively) custom fields on a sales order",
        "operationId": "UpdateSalesOrderCustomFields",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The sales order identifier",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The custom fields to update",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/discount-line-item": {
      "get": {
        "tags": [
          "Sales Order Discount Line Item"
        ],
        "summary": "Get the discount line item for a sales order",
        "operationId": "GetSalesOrderDiscountLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Discount line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderDiscountLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderDiscountLineItemDto"
                }
              }
            }
          },
          "204": {
            "description": "Discount line item does not exist"
          },
          "404": {
            "description": "Sales order did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Sales Order Discount Line Item"
        ],
        "summary": "Update the discount line item for a sales order",
        "operationId": "UpdateSalesOrderDiscountLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderDiscountLineItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderDiscountLineItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderDiscountLineItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderDiscountLineItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Discount line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderDiscountLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderDiscountLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Sales order or discount line item did not exist"
          }
        }
      },
      "delete": {
        "tags": [
          "Sales Order Discount Line Item"
        ],
        "summary": "Delete the discount line item for a sales order",
        "operationId": "DeleteSalesDiscountLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Discount line item did not exist"
          },
          "404": {
            "description": "Sales order did not exist"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/fee-line-items/{lineItemId}": {
      "delete": {
        "tags": [
          "Sales Order Fee Line Item"
        ],
        "summary": "Delete a specific fee line item for a sales order",
        "operationId": "DeleteSalesOrderFeeLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Fee line item did not exist"
          },
          "404": {
            "description": "Sales order did not exist"
          }
        }
      },
      "get": {
        "tags": [
          "Sales Order Fee Line Item"
        ],
        "summary": "Get a specific fee line item for a sales order",
        "operationId": "GetSalesOrderFeeLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Fee line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderFeeLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderFeeLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Sales order or fee line items did not exist"
          }
        }
      },
      "patch": {
        "tags": [
          "Sales Order Fee Line Item"
        ],
        "summary": "Partially update a specific fee line item for a sales order",
        "operationId": "PatchSalesOrderFeeLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Fee line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderFeeLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderFeeLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Sales order or line item did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Sales Order Fee Line Item"
        ],
        "summary": "Update a specific fee line item for a sales order",
        "operationId": "UpdateSalesOrderFeeLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderFeeLineItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderFeeLineItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderFeeLineItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderFeeLineItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Fee line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderFeeLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderFeeLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Sales order or fee line items did not exist"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/fee-line-items": {
      "post": {
        "tags": [
          "Sales Order Fee Line Item"
        ],
        "summary": "Create a fee line item on a sales order",
        "operationId": "CreateSalesOrderFeeLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderFeeLineItemCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderFeeLineItemCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderFeeLineItemCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderFeeLineItemCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Fee line item added to sales order",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/fee-line-items/list": {
      "post": {
        "tags": [
          "Sales Order Fee Line Item"
        ],
        "summary": "Get a list of fee lines items for a sales order",
        "operationId": "ListSalesOrderFeeLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of fee line items for the given sales order id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SalesOrderFeeLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SalesOrderFeeLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The sales order did not exist"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/line-items/{lineItemId}": {
      "get": {
        "tags": [
          "Sales Order Line Item"
        ],
        "summary": "Get a specific line item for a sales order of generic type",
        "operationId": "GetSalesOrderLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Sales order or line item did not exist"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/line-items/list": {
      "post": {
        "tags": [
          "Sales Order Line Item"
        ],
        "summary": "Get a list of lines items for a sales order, regardless of type",
        "operationId": "ListSalesOrderLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of all line items for the given sales order id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SalesOrderLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SalesOrderLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The sales order did not exist"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items": {
      "post": {
        "tags": [
          "Sales Order Part Line Item"
        ],
        "summary": "Create a part line item on a sales order",
        "operationId": "CreateSalesOrderPartLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderPartLineItemCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderPartLineItemCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderPartLineItemCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderPartLineItemCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Part line item added to sales order",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items/batch": {
      "post": {
        "tags": [
          "Sales Order Part Line Item"
        ],
        "summary": "Create one or more part line items on a sales order",
        "operationId": "CreateSalesOrderPartLineItemBatch",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderPartLineItemCreateBatchDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderPartLineItemCreateBatchDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderPartLineItemCreateBatchDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderPartLineItemCreateBatchDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Part line items added to sales order",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchCreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchCreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items/{lineItemId}": {
      "get": {
        "tags": [
          "Sales Order Part Line Item"
        ],
        "summary": "Get a specific part line item for a sales order",
        "operationId": "GetSalesOrderPartLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "includeCostBreakdown",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Part line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderPartLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderPartLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Sales order or line items did not exist"
          }
        }
      },
      "patch": {
        "tags": [
          "Sales Order Part Line Item"
        ],
        "summary": "Partially update a specific part line item for an salesOrder",
        "operationId": "PatchSalesOrderPartLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Part line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderPartLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderPartLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "SalesOrder or line item did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Sales Order Part Line Item"
        ],
        "summary": "Update a specific part line item for a sales order",
        "operationId": "UpdateSalesOrderPartLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderPartLineItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderPartLineItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderPartLineItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderPartLineItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Part line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderPartLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderPartLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Sales order or line items did not exist"
          }
        }
      },
      "delete": {
        "tags": [
          "Sales Order Part Line Item"
        ],
        "summary": "Delete a specific part line item for a sales order",
        "operationId": "DeleteSalesOrderPartLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Part line item did not exist"
          },
          "404": {
            "description": "Sales order did not exist"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items/list": {
      "post": {
        "tags": [
          "Sales Order Part Line Item"
        ],
        "summary": "Get a list of part lines items for a sales order",
        "operationId": "ListSalesOrderPartLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "includeCostBreakdown",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of part line items for the given sales order id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SalesOrderPartLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SalesOrderPartLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The sales order did not exist"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items/{lineItemId}/cost-breakdown": {
      "get": {
        "tags": [
          "Sales Order Part Line Item"
        ],
        "summary": "Get the cost breakdown for a specific part line item for a sales order",
        "operationId": "GetSalesOrderPartLineItemCostBreakdown",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Part line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonCostBreakdownDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CommonCostBreakdownDto"
                }
              }
            }
          },
          "404": {
            "description": "Sales order or line items did not exist"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items/{lineItemId}/customFields": {
      "put": {
        "tags": [
          "Sales Order Part Line Item Custom Fields"
        ],
        "summary": "Update (selectively) custom fields on a line item",
        "operationId": "UpdateSalesOrderPartLineItemCustomFields",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "description": "The sales order identifier that contains the line item",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The line item identifier that contains the custom fields you want to update.",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The custom fields to update",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items/{lineItemId}/custom-fields": {
      "put": {
        "tags": [
          "Sales Order Part Line Item Custom Fields"
        ],
        "summary": "Update (selectively) custom fields on a line item",
        "operationId": "UpdateSalesOrderPartLineItemCustomFields",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "description": "The sales order identifier that contains the line item",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "description": "The line item identifier that contains the custom fields you want to update.",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The custom fields to update",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items/{lineItemId}/routing/{routingId}/input-items": {
      "post": {
        "tags": [
          "Sales Order Part Line Item Full Routing"
        ],
        "summary": "Create a full routing input item for a sales order part line item",
        "operationId": "SalesOrderPartLineItemFullRoutingInputItemCreate",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items/{lineItemId}/routing/{routingId}/input-items/{inputItemId}": {
      "delete": {
        "tags": [
          "Sales Order Part Line Item Full Routing"
        ],
        "summary": "Delete a full routing input item from sales order part line item",
        "operationId": "SalesOrderPartLineItemFullRoutingInputItemDelete",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "inputItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "get": {
        "tags": [
          "Sales Order Part Line Item Full Routing"
        ],
        "summary": "Gets a full routing input item for a sales order part line item",
        "operationId": "SalesOrderPartLineItemFullRoutingInputItemGet",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "inputItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Sales Order Part Line Item Full Routing"
        ],
        "summary": "Update a full routing input item for a sales order part line item",
        "operationId": "SalesOrderPartLineItemFullRoutingInputItemUpdate",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "inputItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items/{lineItemId}/routing/{routingId}/input-items/list": {
      "post": {
        "tags": [
          "Sales Order Part Line Item Full Routing"
        ],
        "summary": "Lists the full routing input items for a sales order part line item",
        "operationId": "SalesOrderPartLineItemFullRoutingInputItemList",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items/{lineItemId}/routing/{routingId}/input-materials/list": {
      "post": {
        "tags": [
          "Sales Order Part Line Item Full Routing"
        ],
        "summary": "List input materials for a sales order part line item's routing",
        "operationId": "SalesOrderPartLineItemFullRoutingInputMaterialList",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputMaterialDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputMaterialDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items/{lineItemId}/routing/{routingId}/operations/{operationId}/ipts/{phase}": {
      "post": {
        "tags": [
          "Sales Order Part Line Item Full Routing"
        ],
        "summary": "Creates a full routing operation in process tracking fields for a sales order part line item",
        "operationId": "SalesOrderPartLineItemFullRoutingIptCreate",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "phase",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DomainInProcessTrackingFieldCheckpointPhase"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingIptCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingIptCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingIptCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingIptCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items/{lineItemId}/routing/{routingId}/operations/{operationId}/ipts/{phase}/{iptId}": {
      "delete": {
        "tags": [
          "Sales Order Part Line Item Full Routing"
        ],
        "summary": "Deletes a full routing operation in process tracking field for a sales order part line item",
        "operationId": "SalesOrderPartLineItemFullRoutingIptDelete",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "phase",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DomainInProcessTrackingFieldCheckpointPhase"
            }
          },
          {
            "name": "iptId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "get": {
        "tags": [
          "Sales Order Part Line Item Full Routing"
        ],
        "summary": "Gets a full routing operation in process tracking field for a sales order part line item",
        "operationId": "SalesOrderPartLineItemFullRoutingIptGet",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "phase",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DomainInProcessTrackingFieldCheckpointPhase"
            }
          },
          {
            "name": "iptId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingIptDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingIptDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items/{lineItemId}/routing/{routingId}/operations/{operationId}/ipts/{phase}/list": {
      "post": {
        "tags": [
          "Sales Order Part Line Item Full Routing"
        ],
        "summary": "Lists full routing operation in process tracking fields for a sales order part line item",
        "operationId": "SalesOrderPartLineItemFullRoutingIptList",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "phase",
            "in": "path",
            "required": true,
            "schema": {
              "$ref": "#/components/schemas/DomainInProcessTrackingFieldCheckpointPhase"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestIptFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestIptFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestIptFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestIptFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingIptDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingIptDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items/{lineItemId}/make-summary": {
      "get": {
        "tags": [
          "Sales Order Part Line Item Full Routing"
        ],
        "summary": "Get a summary of the make routing for a sales order part line item",
        "operationId": "SalesOrderPartLineItemFullRoutingMakeSummaryGet",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RoutingDataFullRoutingMakeSummaryDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/RoutingDataFullRoutingMakeSummaryDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items/{lineItemId}/routing/{routingId}/operations": {
      "post": {
        "tags": [
          "Sales Order Part Line Item Full Routing"
        ],
        "summary": "Creates a full routing operation for a sales order part line item",
        "operationId": "SalesOrderPartLineItemFullRoutingOperationCreate",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items/{lineItemId}/routing/{routingId}/operations/{operationId}": {
      "delete": {
        "tags": [
          "Sales Order Part Line Item Full Routing"
        ],
        "summary": "Removes a full routing operation for a sales order part line item",
        "operationId": "SalesOrderPartLineItemFullRoutingOperationDelete",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      },
      "get": {
        "tags": [
          "Sales Order Part Line Item Full Routing"
        ],
        "summary": "Gets a full routing operation for a sales order part line item",
        "operationId": "SalesOrderPartLineItemFullRoutingOperationGet",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingOperationDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingOperationDto"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Sales Order Part Line Item Full Routing"
        ],
        "summary": "Updates a full routing operation for a sales order part line item",
        "operationId": "SalesOrderPartLineItemFullRoutingOperationUpdate",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ItemRoutingOperationUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items/{lineItemId}/routing/{routingId}/operations/{operationId}/items/{operationItemId}": {
      "get": {
        "tags": [
          "Sales Order Part Line Item Full Routing"
        ],
        "summary": "Gets a full routing operation item for a sales order part line item",
        "operationId": "SalesOrderPartLineItemFullRoutingOperationItemGet",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items/{lineItemId}/routing/{routingId}/operations/{operationId}/items/list": {
      "post": {
        "tags": [
          "Sales Order Part Line Item Full Routing"
        ],
        "summary": "List full routing operation items for a sales order part line item",
        "operationId": "SalesOrderPartLineItemFullRoutingOperationItemList",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "operationId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestItemFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingInputItemDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items/{lineItemId}/routing/{routingId}/operations/list": {
      "post": {
        "tags": [
          "Sales Order Part Line Item Full Routing"
        ],
        "summary": "Lists full routing operations for a sales order part line item",
        "operationId": "SalesOrderPartLineItemFullRoutingOperationList",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "skip",
            "in": "query",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 0
            }
          },
          {
            "name": "take",
            "in": "query",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestOperationFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestOperationFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestOperationFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RoutingRequestOperationFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingOperationDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ItemRoutingOperationDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/part-line-items/{lineItemId}/routing/{routingId}": {
      "get": {
        "tags": [
          "Sales Order Part Line Item Full Routing"
        ],
        "summary": "Gets a full routing routing for a sales order part line item",
        "operationId": "SalesOrderPartLineItemFullRoutingRoutingGet",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          },
          {
            "name": "routingId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemRoutingDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/refund-line-items": {
      "post": {
        "tags": [
          "Sales Order Refund Line Item"
        ],
        "summary": "Create a refund line item on a sales order",
        "operationId": "CreateSalesOrderRefundLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderRefundLineItemCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderRefundLineItemCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderRefundLineItemCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderRefundLineItemCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Refund line item added to sales order",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/refund-line-items/{lineId}": {
      "delete": {
        "tags": [
          "Sales Order Refund Line Item"
        ],
        "summary": "Delete a specific refund line item for a sales order",
        "operationId": "DeleteSalesOrderRefundLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Refund line item did not exist"
          },
          "404": {
            "description": "Sales order did not exist"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/refund-line-items/list": {
      "post": {
        "tags": [
          "Sales Order Refund Line Item"
        ],
        "summary": "Get a list of refund lines items for a sales order",
        "operationId": "ListSalesOrderRefundLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of refund line items for the given sales order id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SalesOrderRefundLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SalesOrderRefundLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The sales order did not exist"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/refund-line-items/{lineItemId}": {
      "put": {
        "tags": [
          "Sales Order Refund Line Item"
        ],
        "summary": "Update a specific refund line item for a sales order",
        "operationId": "UpdateSalesOrderRefundLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderRefundLineItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderRefundLineItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderRefundLineItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderRefundLineItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Refund line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderRefundLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderRefundLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Sales order or line items did not exist"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/shipping-charge-line-item": {
      "get": {
        "tags": [
          "Sales Order Shipping Charge Line Item"
        ],
        "summary": "Get a specific line item for a sales order of generic type",
        "operationId": "GetSalesOrderShippingChargeLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderShippingChargeLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderShippingChargeLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Sales order or line item did not exist"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/tax-line-items": {
      "post": {
        "tags": [
          "Sales Order Tax Line Item"
        ],
        "summary": "Create a tax line item on a sales order",
        "operationId": "CreateSalesOrderTaxLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderTaxLineItemCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderTaxLineItemCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderTaxLineItemCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderTaxLineItemCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Tax line item added to sales order",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/tax-line-items/{lineItemId}": {
      "delete": {
        "tags": [
          "Sales Order Tax Line Item"
        ],
        "summary": "Delete a specific tax line item for a sales order",
        "operationId": "DeleteSalesOrderTaxLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Tax line item did not exist"
          },
          "404": {
            "description": "Sales order did not exist"
          }
        }
      },
      "get": {
        "tags": [
          "Sales Order Tax Line Item"
        ],
        "summary": "Get a specific tax line item for a sales order",
        "operationId": "GetSalesOrderTaxLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Tax line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderTaxLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderTaxLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Sales order or tax line items did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Sales Order Tax Line Item"
        ],
        "summary": "Update a specific tax line item for a sales order",
        "operationId": "UpdateSalesOrderTaxLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "lineItemId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderTaxLineItemUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderTaxLineItemUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderTaxLineItemUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SalesOrderTaxLineItemUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Tax line item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderTaxLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/SalesOrderTaxLineItemDto"
                }
              }
            }
          },
          "404": {
            "description": "Sales order or tax line items did not exist"
          }
        }
      }
    },
    "/api/sales-orders/{salesOrderId}/tax-line-items/list": {
      "post": {
        "tags": [
          "Sales Order Tax Line Item"
        ],
        "summary": "Get a list of tax lines items for a sales order",
        "operationId": "ListSalesOrderTaxLineItem",
        "parameters": [
          {
            "name": "salesOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of tax line items for the given sales order id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SalesOrderTaxLineItemDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SalesOrderTaxLineItemDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The sales order did not exist"
          }
        }
      }
    },
    "/api/scrap-reports": {
      "get": {
        "tags": [
          "ScrapReport"
        ],
        "summary": "Returns scrap entries logged within the supplied date range. Both\ndates are optional; the Domain layer defaults to the prior 90 days\nwhen neither is supplied.",
        "operationId": "GetScrapReports",
        "parameters": [
          {
            "name": "startDateUtc",
            "in": "query",
            "description": "Inclusive start of the report window (UTC). Defaults to today minus 90 days when omitted.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "endDateUtc",
            "in": "query",
            "description": "Exclusive end of the report window (UTC). Defaults to tomorrow when omitted.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Scrap entries within the requested window.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ScrapReportEntryDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ScrapReportEntryDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/shape-codes/{id}": {
      "get": {
        "tags": [
          "Shape Code"
        ],
        "summary": "Get a shape code.",
        "operationId": "GetShapeCode",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The shape code for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              }
            }
          },
          "404": {
            "description": "Shape code did not exist"
          }
        }
      }
    },
    "/api/shape-codes/list": {
      "post": {
        "tags": [
          "Shape Code"
        ],
        "summary": "Find shape codes based on search parameters.",
        "operationId": "ListShapeCode",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParametersBase"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of shape codes matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/shipment-line-items/list": {
      "post": {
        "tags": [
          "Shipment Line Items (V3)"
        ],
        "summary": "Search for shipment line items based on parameters.",
        "operationId": "ListShipmentLineItems",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The search parameters",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ShipmentLineItemsListParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ShipmentLineItemsListParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ShipmentLineItemsListParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ShipmentLineItemsListParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoShipmentLineItemDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoShipmentLineItemDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/shipments/{id}/custom-fields": {
      "put": {
        "tags": [
          "Shipment Custom Fields"
        ],
        "summary": "Updates custom fields on a shipment",
        "operationId": "UpdateShipmentCustomFields",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The shipment identifier",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The custom fields",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/shipments/list": {
      "post": {
        "tags": [
          "Shipments"
        ],
        "summary": "Finds shipments based on search parameters",
        "operationId": "ListShipments",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ShipmentsListParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ShipmentsListParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ShipmentsListParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ShipmentsListParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoShipmentsShipmentDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoShipmentsShipmentDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/shipments/{shipmentId}": {
      "patch": {
        "tags": [
          "Shipments"
        ],
        "summary": "Partially update a Shipment",
        "operationId": "PatchShipment",
        "parameters": [
          {
            "name": "shipmentId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Shipment item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShipmentsShipmentDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ShipmentsShipmentDto"
                }
              }
            }
          },
          "404": {
            "description": "Shipment did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Shipments"
        ],
        "summary": "Update a specific shipment",
        "operationId": "UpdateShipment",
        "parameters": [
          {
            "name": "shipmentId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ShipmentsShipmentUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ShipmentsShipmentUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ShipmentsShipmentUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ShipmentsShipmentUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Shipment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShipmentsShipmentDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ShipmentsShipmentDto"
                }
              }
            }
          },
          "404": {
            "description": "Shipment did not exist"
          }
        }
      }
    },
    "/api/shipping-methods/{id}": {
      "get": {
        "tags": [
          "Shipping Method"
        ],
        "summary": "Get a shipping method.",
        "operationId": "GetShippingMethod",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The shipping method for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ShippingMethodDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ShippingMethodDto"
                }
              }
            }
          },
          "404": {
            "description": "Shipping method did not exist"
          }
        }
      }
    },
    "/api/shipping-methods/list": {
      "post": {
        "tags": [
          "Shipping Method"
        ],
        "summary": "Find shipping methods based on search parameters.",
        "operationId": "ListShippingMethod",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ShippingMethodRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ShippingMethodRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ShippingMethodRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ShippingMethodRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of shipping methods matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShippingMethodDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ShippingMethodDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/tags/{id}": {
      "get": {
        "tags": [
          "Tag"
        ],
        "summary": "Get a tag.",
        "operationId": "GetTag",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The tag for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              }
            }
          },
          "404": {
            "description": "Tag did not exist"
          }
        }
      }
    },
    "/api/tags/list": {
      "post": {
        "tags": [
          "Tag"
        ],
        "summary": "Find tags based on search parameters.",
        "operationId": "ListTag",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TagRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of tags matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TagDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/tags": {
      "post": {
        "tags": [
          "Tag"
        ],
        "summary": "Create a tag",
        "operationId": "CreateTag",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TagCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TagCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TagCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Tag created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/tags/{tagId}": {
      "patch": {
        "tags": [
          "Tag"
        ],
        "summary": "Patch a tag",
        "operationId": "PatchTag",
        "parameters": [
          {
            "name": "tagId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Tag patched",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Tag"
        ],
        "summary": "Update a tag",
        "operationId": "UpdateTag",
        "parameters": [
          {
            "name": "tagId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TagUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TagUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TagUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TagUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Tag updated",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/TagDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/tax-rates": {
      "post": {
        "tags": [
          "Tax Rate"
        ],
        "summary": "Create a new tax rate",
        "operationId": "CreateTaxRate",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TaxRateCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TaxRateCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TaxRateCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TaxRateCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Tax rate created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/tax-rates/{id}": {
      "get": {
        "tags": [
          "Tax Rate"
        ],
        "summary": "Get a tax rate.",
        "operationId": "GetTaxRate",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The tax rate for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxRateDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxRateDto"
                }
              }
            }
          },
          "404": {
            "description": "Tax rate did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Tax Rate"
        ],
        "summary": "Update a tax rate",
        "operationId": "UpdateTaxRate",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TaxRateUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TaxRateUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TaxRateUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TaxRateUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Tax rate update",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxRateDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxRateDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/tax-rates/list": {
      "post": {
        "tags": [
          "Tax Rate"
        ],
        "summary": "Find tax rates based on search parameters.",
        "operationId": "ListTaxRate",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TaxRateRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TaxRateRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TaxRateRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TaxRateRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of tax rates matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TaxRateDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TaxRateDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/time-clock-timers/clock-in": {
      "post": {
        "tags": [
          "Time Clock Timers"
        ],
        "summary": "Clocks in a specific user",
        "operationId": "ClockIn",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TimeClockClockInDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TimeClockClockInDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TimeClockClockInDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TimeClockClockInDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/time-clock-timers/clock-out": {
      "post": {
        "tags": [
          "Time Clock Timers"
        ],
        "summary": "Clocks out a specific user",
        "operationId": "ClockOut",
        "requestBody": {
          "description": "",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TimeClockClockOutDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TimeClockClockOutDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TimeClockClockOutDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TimeClockClockOutDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/api/time-clock-timers/list": {
      "post": {
        "tags": [
          "Time Clock Timers"
        ],
        "summary": "Finds daily time clocks based on search parameters",
        "operationId": "ListTimeClock",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The search parameters",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TimeClockRequestListTimeClocksParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TimeClockRequestListTimeClocksParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TimeClockRequestListTimeClocksParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TimeClockRequestListTimeClocksParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoTimeClockDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoTimeClockDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/timers/list": {
      "post": {
        "tags": [
          "Timer"
        ],
        "summary": "Finds timers based on search parameters",
        "operationId": "ListTimer",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The search parameters",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JobTrackingTimerRequestListTimersParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobTrackingTimerRequestListTimersParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/JobTrackingTimerRequestListTimersParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/JobTrackingTimerRequestListTimersParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoTimerDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/DtoPagedResultDtoTimerDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/timers/{timerId}": {
      "patch": {
        "tags": [
          "Timer"
        ],
        "summary": "Partially update a timer",
        "operationId": "PatchTimer",
        "parameters": [
          {
            "name": "timerId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Timer",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimerDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/TimerDto"
                }
              }
            }
          },
          "404": {
            "description": "Timer did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Timer"
        ],
        "summary": "Update a specific timer",
        "operationId": "UpdateTimer",
        "parameters": [
          {
            "name": "timerId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/TimerUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TimerUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TimerUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TimerUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Timer",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TimerDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/TimerDto"
                }
              }
            }
          },
          "404": {
            "description": "Timer did not exist"
          }
        }
      }
    },
    "/api/users/{userId}": {
      "get": {
        "tags": [
          "User"
        ],
        "summary": "Get a specific user",
        "operationId": "GetUser",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The user for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDto"
                }
              }
            }
          },
          "404": {
            "description": "User order did not exist"
          }
        }
      }
    },
    "/api/users/list": {
      "post": {
        "tags": [
          "User"
        ],
        "summary": "Find users based on search parameters.",
        "operationId": "ListUser",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/UserRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UserRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UserRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of users matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserListDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserListDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/users/{userId}/status": {
      "get": {
        "tags": [
          "User Status"
        ],
        "summary": "Gets a status object for a user that displays various timer metrics (jobs/ops clocked into, whether on break, etc)",
        "operationId": "GetUserStatus",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The user identifier",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserStatusDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/UserStatusDto"
                }
              }
            }
          },
          "404": {
            "description": "User did not exists"
          }
        }
      }
    },
    "/api/users/status": {
      "post": {
        "tags": [
          "User Status"
        ],
        "summary": "Gets a list of user status objects based on parameters",
        "operationId": "ListUserStatus",
        "requestBody": {
          "description": "The filter parameters",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/ControllerUsersListUserStatus+UserStatusListParams"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ControllerUsersListUserStatus+UserStatusListParams"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ControllerUsersListUserStatus+UserStatusListParams"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ControllerUsersListUserStatus+UserStatusListParams"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserStatusDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/UserStatusDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/vendors": {
      "post": {
        "tags": [
          "Vendor"
        ],
        "summary": "Create a new vendor",
        "operationId": "CreateVendor",
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/VendorCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VendorCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/VendorCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/VendorCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Vendor created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          }
        }
      }
    },
    "/api/vendors/{vendorId}": {
      "patch": {
        "tags": [
          "Vendor"
        ],
        "summary": "Partially update a vendor",
        "operationId": "PatchVendor",
        "parameters": [
          {
            "name": "vendorId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/JsonPatchDocument"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Vendor item",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VendorDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/VendorDto"
                }
              }
            }
          },
          "404": {
            "description": "Vendor did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Vendor"
        ],
        "summary": "Update a specific vendor",
        "operationId": "UpdateVendor",
        "parameters": [
          {
            "name": "vendorId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/VendorUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VendorUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/VendorUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/VendorUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The vendor for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VendorDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/VendorDto"
                }
              }
            }
          },
          "404": {
            "description": "Vendor did not exist"
          }
        }
      }
    },
    "/api/vendors/{id}": {
      "get": {
        "tags": [
          "Vendor"
        ],
        "summary": "Get a vendor.",
        "operationId": "GetVendor",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The vendor for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VendorDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/VendorDto"
                }
              }
            }
          },
          "404": {
            "description": "Vendor did not exist"
          }
        }
      }
    },
    "/api/vendors/list": {
      "post": {
        "tags": [
          "Vendor"
        ],
        "summary": "Find vendors based on search parameters.",
        "operationId": "ListVendor",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/VendorRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VendorRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/VendorRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/VendorRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of vendors matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DtoVendorDtoWithDetails"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DtoVendorDtoWithDetails"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/vendors/{vendorId}/addresses": {
      "post": {
        "tags": [
          "Vendor Address"
        ],
        "summary": "Create a new vendor address",
        "operationId": "CreateVendorAddress",
        "parameters": [
          {
            "name": "vendorId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/CommonAddressCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CommonAddressCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CommonAddressCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CommonAddressCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Vendor address created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          },
          "404": {
            "description": "Vendor with the given id did not exist"
          }
        }
      }
    },
    "/api/vendors/{vendorId}/addresses/{vendorAddressId}": {
      "delete": {
        "tags": [
          "Vendor Address"
        ],
        "summary": "Delete a specific vendor address",
        "operationId": "DeleteVendorAddress",
        "parameters": [
          {
            "name": "vendorId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "vendorAddressId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Vendor address did not exist"
          },
          "404": {
            "description": "The vendor did not exist"
          }
        }
      },
      "get": {
        "tags": [
          "Vendor Address"
        ],
        "summary": "Get a specific vendor address",
        "operationId": "GetVendorAddress",
        "parameters": [
          {
            "name": "vendorId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "vendorAddressId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The vendor address for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VendorAddressDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/VendorAddressDto"
                }
              }
            }
          },
          "404": {
            "description": "Vendor did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Vendor Address"
        ],
        "summary": "Update a specific vendor address",
        "operationId": "UpdateVendorAddress",
        "parameters": [
          {
            "name": "vendorId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "vendorAddressId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/VendorAddressUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VendorAddressUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/VendorAddressUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/VendorAddressUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The vendor address for the given id"
          },
          "400": {
            "description": "Validation issues with the update"
          },
          "404": {
            "description": "Vendor did not exist"
          }
        }
      }
    },
    "/api/vendors/{vendorId}/addresses/list": {
      "post": {
        "tags": [
          "Vendor Address"
        ],
        "summary": "Get a list of addresses for a vendor",
        "operationId": "ListVendorAddress",
        "parameters": [
          {
            "name": "vendorId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of addresses for the given vendor id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VendorAddressDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VendorAddressDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The vendor did not exist"
          }
        }
      }
    },
    "/api/vendors/{vendorId}/contacts": {
      "post": {
        "tags": [
          "Vendor Contact"
        ],
        "summary": "Create a new vendor contact",
        "operationId": "CreateVendorContact",
        "parameters": [
          {
            "name": "vendorId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/VendorContactCreateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VendorContactCreateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/VendorContactCreateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/VendorContactCreateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Vendor contact created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatedResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "Validation issues with input"
          },
          "404": {
            "description": "Vendor with the given id did not exist"
          }
        }
      }
    },
    "/api/vendors/{vendorId}/contacts/{contactId}": {
      "delete": {
        "tags": [
          "Vendor Contact"
        ],
        "summary": "Delete a specific customer contact",
        "operationId": "DeleteVendorContact",
        "parameters": [
          {
            "name": "vendorId",
            "in": "path",
            "description": "The id of the vendor to modify contacts for",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "contactId",
            "in": "path",
            "description": "The id of the vendor contact.",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success"
          },
          "204": {
            "description": "Vendor contact did not exist"
          },
          "404": {
            "description": "The vendor did not exist"
          }
        }
      },
      "get": {
        "tags": [
          "Vendor Contact"
        ],
        "summary": "Get a specific vendor contact",
        "operationId": "GetVendorContact",
        "parameters": [
          {
            "name": "vendorId",
            "in": "path",
            "description": "The id of the vendor to modify contacts for",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "contactId",
            "in": "path",
            "description": "The id of the vendor contact.",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The vendor contact for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VendorContactDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/VendorContactDto"
                }
              }
            }
          },
          "404": {
            "description": "Vendor or contact did not exist"
          }
        }
      },
      "put": {
        "tags": [
          "Vendor Contact"
        ],
        "summary": "Update a specific vendor contact",
        "operationId": "UpdateVendorContact",
        "parameters": [
          {
            "name": "vendorId",
            "in": "path",
            "description": "The id of the vendor to modify contacts for",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          },
          {
            "name": "contactId",
            "in": "path",
            "description": "The id of the vendor contact.",
            "required": true,
            "schema": {
              "maxLength": 36,
              "minLength": 36,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "The new data to apply to the given contact",
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/VendorContactUpdateDto"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VendorContactUpdateDto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/VendorContactUpdateDto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/VendorContactUpdateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Vendor contact updated"
          },
          "404": {
            "description": "Vendor did not exist or no contact existed with the specified Id"
          }
        }
      }
    },
    "/api/vendors/{vendorId}/contacts/list": {
      "post": {
        "tags": [
          "Vendor Contact"
        ],
        "summary": "Get a list of contacts for a vendor",
        "operationId": "ListVendorContact",
        "parameters": [
          {
            "name": "vendorId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List of contacts for the given vendor id",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VendorContactDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/VendorContactDto"
                  }
                }
              }
            }
          },
          "404": {
            "description": "The vendor did not exist"
          }
        }
      }
    },
    "/api/work-orders/{workOrderId}": {
      "get": {
        "tags": [
          "Work Order"
        ],
        "summary": "Get a specific work order",
        "operationId": "GetWorkOrder",
        "parameters": [
          {
            "name": "workOrderId",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The work order for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkOrderDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkOrderDto"
                }
              }
            }
          },
          "404": {
            "description": "Work order did not exist"
          }
        }
      }
    },
    "/api/work-orders/list": {
      "post": {
        "tags": [
          "Work Order"
        ],
        "summary": "Find work orders based on search parameters.",
        "operationId": "ListWorkOrder",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/WorkOrderRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkOrderRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkOrderRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WorkOrderRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of work orders matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkOrderDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkOrderDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/work-centers/{id}": {
      "get": {
        "tags": [
          "WorkCenter"
        ],
        "summary": "Get a workcenter.",
        "operationId": "GetWorkCenter",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "maxLength": 24,
              "minLength": 24,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The workcenter for the given id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkCenterDto"
                }
              },
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/WorkCenterDto"
                }
              }
            }
          },
          "404": {
            "description": "Workcenter did not exist"
          }
        }
      }
    },
    "/api/work-centers/list": {
      "post": {
        "tags": [
          "WorkCenter"
        ],
        "summary": "Find workcenters based on search parameters.",
        "operationId": "ListWorkCenter",
        "parameters": [
          {
            "name": "Sort.Field",
            "in": "query",
            "description": "Sort field",
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "name": "Sort.Dir",
            "in": "query",
            "description": "Sort direction",
            "schema": {
              "$ref": "#/components/schemas/CommonEnumSortDirectionEnum"
            }
          },
          {
            "name": "Skip",
            "in": "query",
            "description": "Number of records to skip.",
            "schema": {
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "Take",
            "in": "query",
            "description": "Number of records to return (maximum)",
            "schema": {
              "maximum": 5000,
              "minimum": 0,
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/components/schemas/WorkCenterRequestFindParameters"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkCenterRequestFindParameters"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/WorkCenterRequestFindParameters"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/WorkCenterRequestFindParameters"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "List of workcenters matching the filters",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkCenterDto"
                  }
                }
              },
              "application/problem+json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/WorkCenterDto"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AttachmentDto": {
        "required": [
          "fileId",
          "id",
          "owner"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique Id associated to this entity"
          },
          "owner": {
            "$ref": "#/components/schemas/AttachmentOwnerDto"
          },
          "name": {
            "type": "string",
            "description": "The file name.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Description",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/CommonEnumAttachmentTypeEnum"
          },
          "format": {
            "$ref": "#/components/schemas/CommonEnumAttachmentMediaFormatEnum"
          },
          "size": {
            "type": "integer",
            "description": "File size in bytes",
            "format": "int64",
            "nullable": true
          },
          "fileId": {
            "minLength": 1,
            "type": "string",
            "description": "Internal file identifier"
          },
          "createdUtc": {
            "type": "string",
            "description": "UTC timestamp when this attachment record was created on its current owner.\nNote: when an attachment is copied between owners (for example, from a quote to a job),\na new attachment record is created and this value reflects the copy time, not the original upload time.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Represents a file attachment."
      },
      "AttachmentOwnerCreateDto": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/CommonEnumOwnerTypeCreateEnum"
          },
          "id": {
            "maxLength": 36,
            "minLength": 24,
            "type": "string",
            "description": "The primary owner id of this attachment."
          }
        },
        "additionalProperties": false,
        "description": "Attachment owner"
      },
      "AttachmentOwnerDto": {
        "type": "object",
        "properties": {
          "type": {
            "$ref": "#/components/schemas/CommonEnumOwnerTypeEnum"
          },
          "id": {
            "maxLength": 36,
            "minLength": 24,
            "type": "string",
            "description": "The primary owner id of this attachment."
          }
        },
        "additionalProperties": false,
        "description": "Attachment owner"
      },
      "AttachmentRemoteCreateDto": {
        "required": [
          "accessUrl",
          "fileName",
          "owner"
        ],
        "type": "object",
        "properties": {
          "owner": {
            "$ref": "#/components/schemas/AttachmentOwnerCreateDto"
          },
          "parent": {
            "$ref": "#/components/schemas/AttachmentOwnerCreateDto"
          },
          "fileName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "File name"
          },
          "accessUrl": {
            "minLength": 1,
            "type": "string",
            "description": "File access url",
            "format": "uri"
          },
          "token": {
            "type": "string",
            "description": "Optional token that may be required for access the AccessUrl",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Create an attachment."
      },
      "AttachmentRequestFindParameters": {
        "type": "object",
        "properties": {
          "owner": {
            "$ref": "#/components/schemas/AttachmentOwnerDto"
          },
          "owners": {
            "maxItems": 500,
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AttachmentOwnerDto"
            },
            "description": "The primary owners of the attachment.",
            "nullable": true
          },
          "attachmentIds": {
            "maxItems": 500,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter to attachments whose ids are in the list.",
            "nullable": true
          },
          "formats": {
            "maxItems": 500,
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonEnumAttachmentMediaFormatEnum"
            },
            "description": "Allows for filtering based on specific attachment format types.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding attachmewnts.\n\nNote: These filters are applied using the AND operator. If both attachmentIds and owner are provided, attachments that do match the owner will not be returned."
      },
      "AuthValidateResultDto": {
        "type": "object",
        "properties": {
          "revocationId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The id used to revoke the token"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Name of the token",
            "readOnly": true
          },
          "domain": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "description": "The product domain for the associated customer"
          }
        },
        "additionalProperties": false,
        "description": "Details about the token used to validate the request"
      },
      "BatchCreatedResponseDto": {
        "required": [
          "ids"
        ],
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The ids of the created records"
          }
        },
        "additionalProperties": false,
        "description": "Response for a batch created record"
      },
      "CAPACapaDto": {
        "required": [
          "capaType",
          "id",
          "number",
          "problemStatement"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "number": {
            "minimum": 0,
            "type": "integer",
            "description": "Number",
            "format": "int32"
          },
          "capaType": {
            "minLength": 1,
            "type": "string",
            "description": "CAPA Type"
          },
          "problemStatement": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Problem statement"
          },
          "status": {
            "type": "string",
            "description": "CAPA Status",
            "nullable": true
          },
          "rootCauseAnalysis": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Root cause analysis",
            "nullable": true
          },
          "correctiveAction": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Corrective action",
            "nullable": true
          },
          "ncrId": {
            "type": "string",
            "description": "Related NCR ID",
            "nullable": true
          },
          "createdUtc": {
            "type": "string",
            "description": "Created Date",
            "format": "date-time",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "description": "Completed Date",
            "format": "date-time",
            "nullable": true
          },
          "closedUtc": {
            "type": "string",
            "description": "Completed Date",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents an CAPA"
      },
      "CAPARequestCapaListParameters": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Filter CAPAs by a specific status\nAccepted Values:\nClosed, Hold, New, Quality Review, Engineering Review",
            "nullable": true
          },
          "type": {
            "type": "string",
            "description": "Filter CAPAs by a specific type. Available values are configured per tenant in Quality settings (NCR dropdowns).",
            "nullable": true
          },
          "ncrId": {
            "type": "string",
            "description": "Filter CAPAs by a NCR Id",
            "nullable": true
          },
          "createdUtc": {
            "type": "string",
            "description": "Filter CAPAs created after a certain date",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching CAPAs"
      },
      "CommonAccountingDetailsDto": {
        "type": "object",
        "properties": {
          "classId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item class identifier. Please reference /api/item-classes endpoint.",
            "nullable": true
          },
          "incomeAccountId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Income account (chart of accounts) key identifier. Please reference /api/chart-of-accounts endpoint.",
            "nullable": true
          },
          "assetAccountId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Asset account (chart of accounts) key identifier. Please reference /api/chart-of-accounts endpoint.",
            "nullable": true
          },
          "expenseAccountId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Expense account (chart of accounts) key identifier. Please reference /api/chart-of-accounts endpoint.",
            "nullable": true
          },
          "cogsAccountId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "COGS account (chart of accounts) key identifier. Please reference /api/chart-of-accounts endpoint.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An object that contains all accounting details."
      },
      "CommonAddressCreateDto": {
        "required": [
          "address1",
          "city",
          "postalCode"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Name of the address (Bob's Shipping, Primary, Reno Warehouse, etc).",
            "nullable": true
          },
          "address1": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Primary address line."
          },
          "address2": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Second address line.",
            "nullable": true
          },
          "address3": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Third address line.",
            "nullable": true
          },
          "city": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Address city"
          },
          "stateProvince": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Address state/province.",
            "nullable": true
          },
          "postalCode": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Postal/zip code."
          },
          "country": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Country identifier.",
            "nullable": true
          },
          "shippingLeadTime": {
            "minimum": 0,
            "type": "integer",
            "description": "Lead time for shipping contents.",
            "format": "int32",
            "nullable": true
          },
          "primaryBilling": {
            "type": "boolean",
            "description": "Signifies if this is a primary billing address."
          },
          "primaryShipping": {
            "type": "boolean",
            "description": "Signifies if this is a primary billing address."
          },
          "email": {
            "type": "string",
            "description": "Email address",
            "format": "email",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "Associated phone number",
            "nullable": true
          },
          "fax": {
            "type": "string",
            "description": "Associated fax number",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "General notes associated to this customer address",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Address with additional context"
      },
      "CommonAddressDto": {
        "required": [
          "address1",
          "city",
          "postalCode"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Name of the address (Bob's Shipping, Primary, Reno Warehouse, etc).",
            "nullable": true
          },
          "address1": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Primary address line."
          },
          "address2": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Second address line.",
            "nullable": true
          },
          "address3": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Third address line.",
            "nullable": true
          },
          "city": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Address city"
          },
          "stateProvince": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Address state/province.",
            "nullable": true
          },
          "postalCode": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Postal/zip code."
          },
          "country": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Country identifier.",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "Phone number.",
            "format": "tel",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Email address",
            "format": "email",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Address definition"
      },
      "CommonCostBreakdownDto": {
        "required": [
          "calculatedOn",
          "componentLabor",
          "componentMachine",
          "componentMaterial",
          "componentOutsideProcessing",
          "cumulative",
          "cumulativeLabor",
          "cumulativeMachine",
          "cumulativeMaterial",
          "cumulativeOutsideProcessing",
          "id",
          "itemLabor",
          "itemMachine",
          "itemMaterial",
          "itemOutsideProcessing",
          "lines",
          "quantity",
          "shopRateRun",
          "shopRateSetup",
          "time",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 24,
            "type": "string",
            "description": "The id of the parent item."
          },
          "type": {
            "$ref": "#/components/schemas/ItemsAndInventoryRoutingsCostBreakdownType"
          },
          "quantity": {
            "minimum": 0,
            "type": "integer",
            "description": "Number of units.",
            "format": "int32"
          },
          "quantityScrapped": {
            "minimum": 0,
            "type": "integer",
            "description": "Number of units scrapped.",
            "format": "int32",
            "nullable": true
          },
          "calculatedOn": {
            "type": "string",
            "description": "When was this cost breakdown last calculated/aggregated.",
            "format": "date-time"
          },
          "time": {
            "$ref": "#/components/schemas/CommonTimeDto"
          },
          "cumulative": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "cumulativeMaterial": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "cumulativeLabor": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "cumulativeMachine": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "cumulativeOutsideProcessing": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "itemMaterial": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "itemLabor": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "itemMachine": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "itemOutsideProcessing": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "shopRateSetup": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "shopRateRun": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "componentMaterial": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "componentLabor": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "componentMachine": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "componentOutsideProcessing": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonCostBreakdownLineDto"
            },
            "description": "Cost breakdown line details."
          }
        },
        "additionalProperties": false,
        "description": "Cost breakdown"
      },
      "CommonCostBreakdownLineDto": {
        "required": [
          "cost",
          "costType",
          "name"
        ],
        "type": "object",
        "properties": {
          "costType": {
            "$ref": "#/components/schemas/CommonEnumCostBreakdownLineTypeEnum"
          },
          "operationType": {
            "$ref": "#/components/schemas/CommonEnumOperationTypeEnum"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Decription of this line."
          },
          "cost": {
            "minimum": 0,
            "type": "number",
            "description": "Cost.",
            "format": "double"
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "Quantity (if applicable)",
            "format": "double",
            "nullable": true
          },
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Id of the item that was picked. Please reference /api/items endpoint.",
            "nullable": true
          },
          "itemName": {
            "type": "string",
            "description": "The name of the item that was picked.",
            "nullable": true
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code affected. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "operationInformation": {
            "$ref": "#/components/schemas/CommonCostBreakdownOperationDto"
          }
        },
        "additionalProperties": false,
        "description": "Cost breakdown line information."
      },
      "CommonCostBreakdownOperationDto": {
        "required": [
          "operationId"
        ],
        "type": "object",
        "properties": {
          "operationId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Operation id. Please reference /api/operations"
          },
          "name": {
            "type": "string",
            "description": "Operation name.",
            "nullable": true
          },
          "timeInSeconds": {
            "minimum": 0,
            "type": "number",
            "description": "Time in seconds.",
            "format": "double",
            "nullable": true,
            "readOnly": true
          },
          "timeInHours": {
            "minimum": 0,
            "type": "number",
            "description": "Time in hours",
            "format": "double",
            "nullable": true
          },
          "ratePerSecond": {
            "minimum": 0,
            "type": "number",
            "description": "Rate per second",
            "format": "double",
            "nullable": true,
            "readOnly": true
          },
          "ratePerHour": {
            "minimum": 0,
            "type": "number",
            "description": "Rate per hour",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Operation information"
      },
      "CommonCostDto": {
        "required": [
          "perUnit",
          "total"
        ],
        "type": "object",
        "properties": {
          "total": {
            "minimum": 0,
            "type": "number",
            "description": "Total",
            "format": "double"
          },
          "perUnit": {
            "minimum": 0,
            "type": "number",
            "description": "Cost per unit",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Cost information"
      },
      "CommonCustomFieldSearchDto": {
        "required": [
          "key",
          "value"
        ],
        "type": "object",
        "properties": {
          "key": {
            "minLength": 1,
            "type": "string",
            "description": "Key/identifier for the custom field"
          },
          "value": {
            "minLength": 1,
            "type": "string",
            "description": "Underlying value of the custom field"
          }
        },
        "additionalProperties": false,
        "description": "Custom field associated to an entity."
      },
      "CommonDepositCreateDto": {
        "required": [
          "depositType"
        ],
        "type": "object",
        "properties": {
          "depositType": {
            "$ref": "#/components/schemas/CommonEnumSalesOrderDepositRequirementEnum"
          },
          "amount": {
            "minimum": 0,
            "type": "number",
            "description": "This represents the literal amount of the deposit if FulcrumProduct.PublicApi.Dto.Common.DepositCreateDto.DepositType == FulcrumProduct.PublicApi.Dto.Common.Enum.SalesOrderDepositRequirementEnum.Fixed or the percentage (0 - 100) when FulcrumProduct.PublicApi.Dto.Common.DepositCreateDto.DepositType == FulcrumProduct.Domain.SalesOrders.SalesOrderDepositRequirement.Percentage",
            "format": "double",
            "nullable": true
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Deposit creation."
      },
      "CommonDepositDto": {
        "required": [
          "depositType"
        ],
        "type": "object",
        "properties": {
          "depositType": {
            "$ref": "#/components/schemas/CommonEnumSalesOrderDepositRequirementEnum"
          },
          "amount": {
            "minimum": 0,
            "type": "number",
            "description": "This represents the literal amount of the deposit if FulcrumProduct.PublicApi.Dto.Common.DepositDto.DepositType == FulcrumProduct.PublicApi.Dto.Common.Enum.SalesOrderDepositRequirementEnum.Fixed or the percentage (0 - 100) when see cref=\"DepositType\"/> == FulcrumProduct.PublicApi.Dto.Common.Enum.SalesOrderDepositRequirementEnum.Percentage",
            "format": "double",
            "nullable": true
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "amountInvoiced": {
            "minimum": 0,
            "type": "number",
            "description": "The amount that has already been invoiced.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Deposit information"
      },
      "CommonEnumAttachmentMediaFormatEnum": {
        "enum": [
          "undefined",
          "cad",
          "document",
          "image",
          "video"
        ],
        "type": "string",
        "description": "Attachment format"
      },
      "CommonEnumAttachmentTypeEnum": {
        "enum": [
          "standard",
          "externalAccessDocument",
          "certification"
        ],
        "type": "string",
        "description": "Attachment types"
      },
      "CommonEnumCasingOption": {
        "enum": [
          "caseSensitive",
          "caseInsensitive"
        ],
        "type": "string",
        "description": "Case sensititivy options. Of note, in a SQL environment, this should have no impact as SQL is case-insensitive naturally."
      },
      "CommonEnumCostBreakdownLineTypeEnum": {
        "enum": [
          "material",
          "labor",
          "setup",
          "machine",
          "outsideProcessing",
          "componentMaterial",
          "componentLabor",
          "componentMachine",
          "componentOutsideProcessing",
          "nestPartMaterialUsage",
          "nestPartMaterialScrap"
        ],
        "type": "string",
        "description": "Cost breakdown types"
      },
      "CommonEnumInputItemValueTypeEnum": {
        "enum": [
          "creates",
          "requires"
        ],
        "type": "string",
        "description": "Specifies how a routing input item quantity is measured."
      },
      "CommonEnumLineItemUomEnum": {
        "enum": [
          "notApplicable",
          "piece",
          "linearFeet",
          "hour",
          "yard"
        ],
        "type": "string",
        "description": "Line item unit of measure."
      },
      "CommonEnumMaterialFormEnum": {
        "enum": [
          "sheet",
          "plate",
          "roundBar",
          "flatBar",
          "channel",
          "squareTube",
          "angle",
          "treadPlate",
          "hexBar",
          "squareBar",
          "teeBar",
          "hBeam",
          "rectTube",
          "pipe",
          "wBeam",
          "sBeam",
          "roundTube",
          "rectBar",
          "wideBar"
        ],
        "type": "string",
        "description": "Specifies the form of the material."
      },
      "CommonEnumMaterialRequirementCostingEnum": {
        "enum": [
          "fullCost",
          "usageBased"
        ],
        "type": "string",
        "description": "Specifies the costing of the material."
      },
      "CommonEnumMaterialVendorPriceUnitEnum": {
        "enum": [
          "kilogram",
          "pound"
        ],
        "type": "string",
        "description": "Specifies how a routing input item quantity is measured."
      },
      "CommonEnumOperationTypeEnum": {
        "enum": [
          "labor",
          "setup",
          "machine",
          "outsideProcessing"
        ],
        "type": "string",
        "description": "Operation type"
      },
      "CommonEnumOrderType": {
        "enum": [
          "purchaseOrder",
          "salesOrder"
        ],
        "type": "string",
        "description": "Order type enum"
      },
      "CommonEnumOwnerTypeCertificationEnum": {
        "enum": [
          "item",
          "purchaseOrderReceivingLineItem",
          "salesOrderReceivingLineItem"
        ],
        "type": "string",
        "description": "Owner types that can be used for certification attachments"
      },
      "CommonEnumOwnerTypeCreateEnum": {
        "enum": [
          "salesOrder",
          "salesOrderReceiving",
          "salesOrderPartLineItem",
          "quote",
          "quotePartLineItem",
          "purchaseOrder",
          "purchaseOrderReceiving",
          "purchaseOrderPartLineItem",
          "invoice",
          "workOrderOperation",
          "operation",
          "item",
          "job"
        ],
        "type": "string",
        "description": "Owner types"
      },
      "CommonEnumOwnerTypeEnum": {
        "enum": [
          "salesOrder",
          "salesOrderReceiving",
          "salesOrderPartLineItem",
          "quote",
          "quotePartLineItem",
          "purchaseOrder",
          "purchaseOrderReceiving",
          "purchaseOrderPartLineItem",
          "invoice",
          "workOrderOperation",
          "operation",
          "inventoryLot",
          "item",
          "job"
        ],
        "type": "string",
        "description": "Owner types"
      },
      "CommonEnumSalesOrderDepositRequirementEnum": {
        "enum": [
          "fixed",
          "percentage",
          "none"
        ],
        "type": "string",
        "description": "Deposit type."
      },
      "CommonEnumSortDirectionEnum": {
        "enum": [
          "ascending",
          "descending"
        ],
        "type": "string",
        "description": "Specify sorting direction."
      },
      "CommonEnumStyleEnum": {
        "enum": [
          "primary",
          "secondary",
          "success",
          "danger",
          "warning",
          "info",
          "light",
          "dark",
          "connected"
        ],
        "type": "string",
        "description": "Style enum (for tags)."
      },
      "CommonEnumTagTypeEnum": {
        "enum": [
          "item",
          "accountingCode",
          "itemCategory",
          "itemShape",
          "itemMaterial",
          "itemGrade",
          "itemGauge",
          "itemShippingContainer",
          "itemClass",
          "breakReasonCode",
          "refundReasonCode",
          "vendorOrderIssueCode",
          "chartOfAccounts"
        ],
        "type": "string",
        "description": "What the tag is used for (can be many)."
      },
      "CommonExternalReferenceDto": {
        "required": [
          "externalId"
        ],
        "type": "object",
        "properties": {
          "type": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Specifies the type of this identifier.",
            "nullable": true
          },
          "externalId": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "description": "The external identifier"
          },
          "displayId": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "description": "The id/number that a human sees. For a quote, this might be 'Q1000'.  If this is null, the display\nwill fall back to the ExternalId",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "A status for the external reference",
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "An external url for the reference",
            "nullable": true
          },
          "modifiedUtc": {
            "type": "string",
            "description": "Date the external reference was modified",
            "format": "date-time",
            "nullable": true
          },
          "lastSyncedUtc": {
            "type": "string",
            "description": "Date the external system last successfully synced this reference. Set by integrations\non successful sync only; null means never synced or that the sync timestamp isn't\nmaintained by the integration.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The external reference for entities that implement FulcrumProduct.Domain.Common.IHasExternalReferences"
      },
      "CommonExternalReferenceFindDto": {
        "required": [
          "key"
        ],
        "type": "object",
        "properties": {
          "key": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Specifies the group name (key) that this external reference originates from (e.g. an external application name)"
          },
          "type": {
            "maxLength": 50,
            "minLength": 0,
            "type": "string",
            "description": "Arbitrary sub-key that can be used to qualify the value",
            "nullable": true
          },
          "externalId": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "description": "The external identifier",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Search parameter for identifier record(s) via their external identifiers."
      },
      "CommonImpactDto": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The ID for this object.",
            "format": "uuid"
          },
          "operation": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "workCenter": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "scheduledEquipment": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "job": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "salesOrder": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "quantityImpacted": {
            "type": "number",
            "description": "Quantity Impacted",
            "format": "double",
            "nullable": true
          },
          "incrementalCost": {
            "type": "number",
            "description": "Incremental Cost",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Impact Dto."
      },
      "CommonNoteDto": {
        "type": "object",
        "properties": {
          "body": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Content of the note.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a note."
      },
      "CommonPaymentTermCreateDto": {
        "required": [
          "dueDays",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Identifying name. Must be unique."
          },
          "dueDays": {
            "minimum": 0,
            "type": "integer",
            "description": "Due days.",
            "format": "int32"
          }
        },
        "additionalProperties": false,
        "description": "Payment terms definition."
      },
      "CommonPaymentTermDto": {
        "required": [
          "deleted",
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Identifying name. Must be unique."
          },
          "dueDays": {
            "minimum": 0,
            "type": "integer",
            "description": "Due days.",
            "format": "int32"
          },
          "deleted": {
            "type": "boolean",
            "description": "Indicate if this payment term has been deleted."
          }
        },
        "additionalProperties": false,
        "description": "Payment terms definition."
      },
      "CommonPriceBreakDto": {
        "required": [
          "type"
        ],
        "type": "object",
        "properties": {
          "quantity": {
            "type": "integer",
            "description": "Indicates at what quantity this price break becomes active.",
            "format": "int32",
            "nullable": true
          },
          "price": {
            "type": "number",
            "description": "The price \"per unit\" at this price break.",
            "format": "double",
            "nullable": true
          },
          "margin": {
            "type": "number",
            "description": "Margin",
            "format": "double",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "description": "Currency code associated to this price break.",
            "nullable": true
          },
          "vendorId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Vendor identifier. Please reference /api/vendors endpoint.",
            "nullable": true
          },
          "customerId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Customer identifier. Please reference /api/customers endpoint.",
            "nullable": true
          },
          "customerTierId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Customer tier identifier. Please reference /api/customer-tiers endpoint.",
            "nullable": true
          },
          "unitOfMeasureName": {
            "type": "string",
            "description": "The unit of measurement.",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/DomainPriceBreaksPriceBreakTypeEnum"
          }
        },
        "additionalProperties": false,
        "description": "Price break definition"
      },
      "CommonReferenceDto": {
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique Id associated to the referenced object",
            "nullable": true
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Descriptive name associated to the object",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a reference to a document in a DB collection"
      },
      "CommonTimeDto": {
        "required": [
          "labor",
          "machine",
          "setup"
        ],
        "type": "object",
        "properties": {
          "labor": {
            "minimum": 0,
            "type": "number",
            "description": "Total",
            "format": "double"
          },
          "machine": {
            "minimum": 0,
            "type": "number",
            "description": "Cost per unit",
            "format": "double"
          },
          "setup": {
            "minimum": 0,
            "type": "number",
            "description": "Cost per unit",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Time information"
      },
      "CommonUnitOfMeasureConversionDto": {
        "required": [
          "destinationQuantity",
          "destinationUnitOfMeasureName",
          "sourceQuantity"
        ],
        "type": "object",
        "properties": {
          "sourceQuantity": {
            "type": "number",
            "description": "This value signifies the quantity of the item's source unit of measure.",
            "format": "double"
          },
          "destinationQuantity": {
            "type": "number",
            "description": "This value signifies the quantity of the \"destination\" unit of measure.",
            "format": "double"
          },
          "destinationUnitOfMeasureName": {
            "minLength": 1,
            "type": "string",
            "description": "The destination unit of measure."
          },
          "isCustom": {
            "type": "boolean",
            "description": "Indicate if this is a custom (not out-of-the-box) unit of measure."
          },
          "isDefault": {
            "type": "boolean",
            "description": "Indicate if this is the default unit of measure"
          },
          "multiplier": {
            "type": "number",
            "description": "Indicates the conversion factor used to calculate source to converted units.",
            "format": "double",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Unit of measure conversion definition"
      },
      "CommonUrlDto": {
        "required": [
          "uri"
        ],
        "type": "object",
        "properties": {
          "uri": {
            "minLength": 1,
            "type": "string",
            "description": "The uri to save. e.g. https://fulcrumpro.com",
            "format": "uri"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A URL along with a name description of the link"
      },
      "CompanyInfoDto": {
        "required": [
          "id",
          "isPrimary",
          "name",
          "remitToAddress",
          "shipToAddress"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "isPrimary": {
            "type": "boolean",
            "description": "Denotes whether this is the primary/default company information"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Company name"
          },
          "shipToAddress": {
            "$ref": "#/components/schemas/CommonAddressDto"
          },
          "remitToAddress": {
            "$ref": "#/components/schemas/CommonAddressDto"
          },
          "websiteUrl": {
            "type": "string",
            "description": "Company website",
            "format": "uri",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "description": "Company phone number",
            "nullable": true
          },
          "faxNumber": {
            "type": "string",
            "description": "Company fax number",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Company email address",
            "format": "email",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Company information"
      },
      "CompanyInfoRequestFindParameters": {
        "type": "object",
        "properties": {
          "isPrimary": {
            "type": "boolean",
            "description": "Filter on primary company info",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding company information."
      },
      "ControllerUsersListUserStatus+UserStatusListParams": {
        "type": "object",
        "properties": {
          "userIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The user identifiers"
          }
        },
        "additionalProperties": false,
        "description": "The user status list params"
      },
      "CreatedResponseDto": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "The id of the created record"
          }
        },
        "additionalProperties": false,
        "description": "Response for a created record"
      },
      "CurrencyInfoDto": {
        "required": [
          "documentCurrencyCode",
          "primaryCurrencyCode"
        ],
        "type": "object",
        "properties": {
          "documentCurrencyCode": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Document Currency Code"
          },
          "primaryCurrencyCode": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Primary Currency Code"
          }
        },
        "additionalProperties": false,
        "description": "Currency Info Dto"
      },
      "CustomFieldDto": {
        "required": [
          "id",
          "label",
          "module",
          "name",
          "required",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Identifying name. Must be unique."
          },
          "label": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Label name. Must be unique and cannot contain spaces."
          },
          "type": {
            "$ref": "#/components/schemas/DomainSystemDataCustomFieldDefinitionType"
          },
          "module": {
            "$ref": "#/components/schemas/DomainSystemDataCustomFieldDefinitionModule"
          },
          "required": {
            "type": "boolean",
            "description": "Required."
          },
          "options": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The options available (only applicable to dropdown and multiplechoicedropdown types).",
            "nullable": true
          },
          "prepend": {
            "type": "string",
            "description": "Prepended text.",
            "nullable": true
          },
          "append": {
            "type": "string",
            "description": "Appended text.",
            "nullable": true
          },
          "helpText": {
            "type": "string",
            "description": "Help information that will be visble to the user.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Custom field definition."
      },
      "CustomFieldRequestFindParameters": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter custom fields based on their name.",
            "nullable": true
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter custom fields based on matching ids.",
            "nullable": true
          },
          "module": {
            "$ref": "#/components/schemas/DomainSystemDataCustomFieldDefinitionModule"
          },
          "type": {
            "$ref": "#/components/schemas/DomainSystemDataCustomFieldDefinitionType"
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding custom fields."
      },
      "CustomFieldsDto": {
        "type": "object",
        "properties": {
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "The custom fields"
          }
        },
        "additionalProperties": false,
        "description": "Represents custom fields"
      },
      "CustomerAddressDto": {
        "required": [
          "address1",
          "city",
          "id",
          "postalCode"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Name of the address (Bob's Shipping, Primary, Reno Warehouse, etc).",
            "nullable": true
          },
          "address1": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Primary address line."
          },
          "address2": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Second address line.",
            "nullable": true
          },
          "address3": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Third address line.",
            "nullable": true
          },
          "city": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Address city"
          },
          "stateProvince": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Address state/province.",
            "nullable": true
          },
          "postalCode": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Postal/zip code."
          },
          "country": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Country identifier.",
            "nullable": true
          },
          "shippingLeadTime": {
            "minimum": 0,
            "type": "integer",
            "description": "Lead time for shipping contents.",
            "format": "int32",
            "nullable": true
          },
          "primaryBilling": {
            "type": "boolean",
            "description": "Signifies if this is a primary billing address."
          },
          "primaryShipping": {
            "type": "boolean",
            "description": "Signifies if this is a primary billing address."
          },
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "email": {
            "type": "string",
            "description": "Email address",
            "format": "email",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "Associated phone number",
            "nullable": true
          },
          "fax": {
            "type": "string",
            "description": "Associated fax number",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "General notes associated to this customer address",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Address with additional context for a customer"
      },
      "CustomerAddressUpdateDto": {
        "required": [
          "address1",
          "city",
          "postalCode"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Name of the address (Bob's Shipping, Primary, Reno Warehouse, etc).",
            "nullable": true
          },
          "address1": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Primary address line."
          },
          "address2": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Second address line.",
            "nullable": true
          },
          "address3": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Third address line.",
            "nullable": true
          },
          "city": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Address city"
          },
          "stateProvince": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Address state/province.",
            "nullable": true
          },
          "postalCode": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Postal/zip code."
          },
          "country": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Country identifier.",
            "nullable": true
          },
          "shippingLeadTime": {
            "minimum": 0,
            "type": "integer",
            "description": "Lead time for shipping contents.",
            "format": "int32",
            "nullable": true
          },
          "primaryBilling": {
            "type": "boolean",
            "description": "Signifies if this is a primary billing address."
          },
          "primaryShipping": {
            "type": "boolean",
            "description": "Signifies if this is a primary billing address."
          },
          "email": {
            "type": "string",
            "description": "Email address",
            "format": "email",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "Associated phone number",
            "nullable": true
          },
          "fax": {
            "type": "string",
            "description": "Associated fax number",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "General notes associated to this customer address",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Address with additional context for updating for a customer"
      },
      "CustomerContactCreateDto": {
        "required": [
          "firstName"
        ],
        "type": "object",
        "properties": {
          "firstName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "First name"
          },
          "lastName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Last name",
            "nullable": true
          },
          "position": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Position / Job Title",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "Phone number",
            "nullable": true
          },
          "cellPhone": {
            "type": "string",
            "description": "Cellphone number",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Email address",
            "format": "email",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A customer contact"
      },
      "CustomerContactDto": {
        "required": [
          "firstName",
          "id",
          "lastName"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Id"
          },
          "firstName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "First name"
          },
          "lastName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Last name"
          },
          "position": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Position / Job Title",
            "nullable": true
          },
          "cellPhone": {
            "type": "string",
            "description": "Cellphone number",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "Phone number",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Email address",
            "format": "email",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A customer contact"
      },
      "CustomerContactUpdateDto": {
        "required": [
          "firstName"
        ],
        "type": "object",
        "properties": {
          "firstName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "First name"
          },
          "lastName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Last name",
            "nullable": true
          },
          "position": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Position / Job Title",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "Phone number",
            "nullable": true
          },
          "cellPhone": {
            "type": "string",
            "description": "Cellphone number",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Email address",
            "format": "email",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A customer contact"
      },
      "CustomerCreateDto": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name to give the customer. Must be unique to all active customers."
          },
          "customerCode": {
            "minLength": 1,
            "type": "string",
            "description": "Unique identifier for this customer",
            "nullable": true
          },
          "currencyCode": {
            "minLength": 1,
            "type": "string",
            "description": "Currency code/denomination associated to this customer.\nIf not provided, default to the primary currency code for the organization.",
            "nullable": true
          },
          "creditLimit": {
            "minimum": 0,
            "type": "number",
            "description": "Credit limit",
            "format": "double",
            "nullable": true
          },
          "paymentTermsId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Payment terms.",
            "nullable": true
          },
          "salesPersonId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Payment terms.",
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "The Customer's website",
            "format": "uri",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Whether or not this customer is taxable on Sales Orders and Quotes",
            "nullable": true
          },
          "taxRateIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of tax codes to be automatically added to new SalesOrders for the customer when AutoAddTaxLineItems process setting is enabled.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for the customer",
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined on this entity.",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "Notes associated to the customer.",
            "nullable": true
          },
          "hasCustomerPortal": {
            "type": "boolean",
            "description": "Indicates if this customer is set up to use the customer portal.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Details of customer to be created"
      },
      "CustomerDto": {
        "required": [
          "hasCustomerPortal",
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Id"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name to give the customer. Must be unique to all active customers."
          },
          "customerCode": {
            "minLength": 1,
            "type": "string",
            "description": "Unique identifier for this customer",
            "nullable": true
          },
          "currencyCode": {
            "minLength": 1,
            "type": "string",
            "description": "Currency code/denomination associated to this customer.\nIf not provided, default to the primary currency code for the organization.",
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "The Customer's website",
            "format": "uri",
            "nullable": true
          },
          "creditLimit": {
            "minimum": 0,
            "type": "number",
            "description": "Credit limit",
            "format": "double",
            "nullable": true
          },
          "paymentTermsId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Payment terms identifier. Please reference /api/payment-terms endpoint.",
            "nullable": true
          },
          "paymentTerms": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "salesPersonId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Sales person identifier. Please reference /api/users endpoint.",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Whether or not this customer is taxable on Sales Orders and Quotes"
          },
          "taxRateIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of tax codes to be automatically added to new SalesOrders for the customer when AutoAddTaxLineItems process setting is enabled.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "External references associated with this entity.",
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined on this entity.",
            "nullable": true
          },
          "notes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Notes associated to the customer.",
            "nullable": true
          },
          "hasCustomerPortal": {
            "type": "boolean",
            "description": "Indicates if this customer is set up to use the customer portal."
          },
          "customerTierId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Customer tier identifier. Please reference /api/customer-tiers endpoint.",
            "nullable": true
          },
          "customerTierName": {
            "type": "string",
            "description": "Customer tier name.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A customer"
      },
      "CustomerRequestFindParameters": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter to customers who's name contains the given string",
            "nullable": true
          },
          "customerCode": {
            "minLength": 1,
            "type": "string",
            "description": "Unique identifier for this customer.",
            "nullable": true
          },
          "email": {
            "minLength": 1,
            "type": "string",
            "description": "The email of the customer",
            "nullable": true
          },
          "modifiedAfterUtc": {
            "type": "string",
            "description": "Filter to customer records modified after the given datetime (in UTC)",
            "format": "date-time",
            "nullable": true
          },
          "externalReference": {
            "$ref": "#/components/schemas/CommonExternalReferenceFindDto"
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding customers."
      },
      "CustomerTierDto": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Identifying name. Must be unique."
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Description",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Customer tier definition."
      },
      "CustomerTierRequestFindParameters": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter customer tierds based on their name.",
            "nullable": true
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter customer tiers based on matching ids.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding customer tiers."
      },
      "CustomerUpdateDto": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name to give the customer. Must be unique to all active customers."
          },
          "customerCode": {
            "minLength": 1,
            "type": "string",
            "description": "Unique identifier for this customer",
            "nullable": true
          },
          "currencyCode": {
            "minLength": 1,
            "type": "string",
            "description": "Currency code/denomination associated to this customer.\nIf not provided, default to the primary currency code for the organization.",
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "The Customer's website",
            "format": "uri",
            "nullable": true
          },
          "creditLimit": {
            "minimum": 0,
            "type": "number",
            "description": "Credit limit",
            "format": "double",
            "nullable": true
          },
          "paymentTermsId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Payment terms identifier. Please reference /api/payment-terms endpoint.",
            "nullable": true
          },
          "salesPersonId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Sales person identifier. Please reference /api/users endpoint.",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Whether or not this customer is taxable on Sales Orders and Quotes",
            "nullable": true
          },
          "taxRateIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of tax codes to be automatically added to new SalesOrders for the customer when AutoAddTaxLineItems process setting is enabled.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined on this entity.",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "Notes associated to the customer.",
            "nullable": true
          },
          "hasCustomerPortal": {
            "type": "boolean",
            "description": "Indicates if this customer is set up to use the customer portal.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Details of customer to be updated"
      },
      "DepartmentDto": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Identifying name. Must be unique."
          },
          "deleted": {
            "type": "boolean",
            "description": "Indicates whether this department has been deleted"
          },
          "workCenters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkCenterDto"
            },
            "description": "Workcenters associated with this department."
          }
        },
        "additionalProperties": false,
        "description": "Department definition."
      },
      "DepartmentRequestFindParameters": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter departments based on matching ids.",
            "nullable": true
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter departments based on their name.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding departments."
      },
      "DomainCommonEntityType": {
        "enum": [
          "job",
          "salesOrder",
          "shipment",
          "shipmentLineItem",
          "invoice",
          "invoiceLineItem",
          "customer",
          "customerAddress",
          "item"
        ],
        "type": "string"
      },
      "DomainCurrenciesDocumentCurrencyInfo": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "documentCurrencyCode": {
            "type": "string",
            "nullable": true
          },
          "primaryCurrencyCode": {
            "type": "string",
            "nullable": true
          },
          "exchangeRate": {
            "type": "number",
            "format": "double"
          },
          "exchangeRateUpdatedOnUtc": {
            "type": "string",
            "format": "date-time"
          },
          "exchangeRateError": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DomainInProcessTrackingFieldCheckpointPhase": {
        "enum": [
          "preOperation",
          "duringOperation",
          "postOperation"
        ],
        "type": "string"
      },
      "DomainInProcessTrackingFieldDataType": {
        "enum": [
          "boolean",
          "number",
          "dropdown",
          "text",
          "checkbox"
        ],
        "type": "string"
      },
      "DomainItemsAndInventoryItemOrigin": {
        "enum": [
          "make",
          "buy",
          "makeOrBuy",
          "customerSupplied",
          "kit",
          "none"
        ],
        "type": "string"
      },
      "DomainOperationsRouting_Step_RunTimeOption": {
        "enum": [
          "fixed",
          "perUnit",
          "unitsPerHour"
        ],
        "type": "string"
      },
      "DomainOperationsRouting_Step_SetupTimeOption": {
        "enum": [
          "fixed",
          "perUnit"
        ],
        "type": "string"
      },
      "DomainPriceBreaksPriceBreakTypeEnum": {
        "enum": [
          "price",
          "margin",
          "cost",
          "operation",
          "shopRate"
        ],
        "type": "string"
      },
      "DomainSystemDataCustomFieldDefinitionModule": {
        "enum": [
          "item",
          "item_Make",
          "item_Buy",
          "customer",
          "vendor",
          "quote",
          "sales_Order",
          "job",
          "invoice",
          "purchase_Order",
          "receive_Order",
          "ship_Order",
          "quote_Part_LineItem",
          "sales_Order_Part_LineItem",
          "purchase_Order_Part_LineItem",
          "outsideProcessing_LineItem",
          "shipping_Part_LineItem",
          "invoice_Part_LineItem",
          "job_Operation",
          "ncr",
          "capa"
        ],
        "type": "string"
      },
      "DomainSystemDataCustomFieldDefinitionType": {
        "enum": [
          "text",
          "multilineText",
          "dropdown",
          "multipleChoiceDropdown",
          "integerNumber",
          "decimalNumber",
          "floatingPointNumber",
          "boolean",
          "list",
          "date",
          "multipleChoiceUser"
        ],
        "type": "string"
      },
      "DomainSystemDataTaxCodeProvider": {
        "enum": [
          "avalaraOrder",
          "avalaraInvoice"
        ],
        "type": "string"
      },
      "DomainTimeTrackingTimer_Type": {
        "enum": [
          "setup",
          "run",
          "clockIn",
          "break",
          "labor",
          "machine"
        ],
        "type": "string"
      },
      "DtoCommonAvalaraOptions": {
        "type": "object",
        "properties": {
          "address": {
            "$ref": "#/components/schemas/CommonAddressDto"
          }
        },
        "additionalProperties": false,
        "description": "Options for use with Avalara (if enabled)."
      },
      "DtoCommonDateRangeFilter": {
        "type": "object",
        "properties": {
          "start": {
            "type": "string",
            "description": "Inclusive start date to filter by",
            "format": "date-time",
            "nullable": true
          },
          "end": {
            "type": "string",
            "description": "Inclusive end date to filter by",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Date range used for filters"
      },
      "DtoInventoryEventsInventoryEventChangeDetails": {
        "required": [
          "quantity",
          "transactionId"
        ],
        "type": "object",
        "properties": {
          "transactionId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The resulting \"transaction\" id. Please reference /api/inventory-transactions endpoint."
          },
          "quantity": {
            "type": "number",
            "description": "Quantity",
            "format": "double"
          },
          "quantityChangeType": {
            "$ref": "#/components/schemas/V2InventoryRestResourcesTransactionChangeType"
          },
          "laborValue": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "machineValue": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "outsideProcessingValue": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "materialValue": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "totalValue": {
            "$ref": "#/components/schemas/CommonCostDto"
          }
        },
        "additionalProperties": false,
        "description": "Inventory event change information."
      },
      "DtoPagedResultDtoCAPACapaDto": {
        "required": [
          "data",
          "hasNextPage",
          "hasPreviousPage",
          "page",
          "pageSize",
          "totalCount",
          "totalPages"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CAPACapaDto"
            },
            "description": "The data"
          },
          "page": {
            "type": "integer",
            "description": "The 1-indexed page",
            "format": "int32",
            "readOnly": true
          },
          "pageSize": {
            "type": "integer",
            "description": "The page size",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total count of records",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total pages",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True if there is a previous page",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True if there is a next page",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Paged result"
      },
      "DtoPagedResultDtoDtoReportingInventoryReportRow": {
        "required": [
          "data",
          "hasNextPage",
          "hasPreviousPage",
          "page",
          "pageSize",
          "totalCount",
          "totalPages"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DtoReportingInventoryReportRow"
            },
            "description": "The data"
          },
          "page": {
            "type": "integer",
            "description": "The 1-indexed page",
            "format": "int32",
            "readOnly": true
          },
          "pageSize": {
            "type": "integer",
            "description": "The page size",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total count of records",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total pages",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True if there is a previous page",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True if there is a next page",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Paged result"
      },
      "DtoPagedResultDtoDtoReportingInvoiceReportRow": {
        "required": [
          "data",
          "hasNextPage",
          "hasPreviousPage",
          "page",
          "pageSize",
          "totalCount",
          "totalPages"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DtoReportingInvoiceReportRow"
            },
            "description": "The data"
          },
          "page": {
            "type": "integer",
            "description": "The 1-indexed page",
            "format": "int32",
            "readOnly": true
          },
          "pageSize": {
            "type": "integer",
            "description": "The page size",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total count of records",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total pages",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True if there is a previous page",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True if there is a next page",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Paged result"
      },
      "DtoPagedResultDtoDtoReportingJobActivityByOperatorReportRow": {
        "required": [
          "data",
          "hasNextPage",
          "hasPreviousPage",
          "page",
          "pageSize",
          "totalCount",
          "totalPages"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DtoReportingJobActivityByOperatorReportRow"
            },
            "description": "The data"
          },
          "page": {
            "type": "integer",
            "description": "The 1-indexed page",
            "format": "int32",
            "readOnly": true
          },
          "pageSize": {
            "type": "integer",
            "description": "The page size",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total count of records",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total pages",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True if there is a previous page",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True if there is a next page",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Paged result"
      },
      "DtoPagedResultDtoDtoReportingJobActivityReportRow": {
        "required": [
          "data",
          "hasNextPage",
          "hasPreviousPage",
          "page",
          "pageSize",
          "totalCount",
          "totalPages"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DtoReportingJobActivityReportRow"
            },
            "description": "The data"
          },
          "page": {
            "type": "integer",
            "description": "The 1-indexed page",
            "format": "int32",
            "readOnly": true
          },
          "pageSize": {
            "type": "integer",
            "description": "The page size",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total count of records",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total pages",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True if there is a previous page",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True if there is a next page",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Paged result"
      },
      "DtoPagedResultDtoDtoReportingQuoteReportRow": {
        "required": [
          "data",
          "hasNextPage",
          "hasPreviousPage",
          "page",
          "pageSize",
          "totalCount",
          "totalPages"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DtoReportingQuoteReportRow"
            },
            "description": "The data"
          },
          "page": {
            "type": "integer",
            "description": "The 1-indexed page",
            "format": "int32",
            "readOnly": true
          },
          "pageSize": {
            "type": "integer",
            "description": "The page size",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total count of records",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total pages",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True if there is a previous page",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True if there is a next page",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Paged result"
      },
      "DtoPagedResultDtoDtoReportingSalesOrderLinesReportRow": {
        "required": [
          "data",
          "hasNextPage",
          "hasPreviousPage",
          "page",
          "pageSize",
          "totalCount",
          "totalPages"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DtoReportingSalesOrderLinesReportRow"
            },
            "description": "The data"
          },
          "page": {
            "type": "integer",
            "description": "The 1-indexed page",
            "format": "int32",
            "readOnly": true
          },
          "pageSize": {
            "type": "integer",
            "description": "The page size",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total count of records",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total pages",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True if there is a previous page",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True if there is a next page",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Paged result"
      },
      "DtoPagedResultDtoDtoReportingShippingReportRow": {
        "required": [
          "data",
          "hasNextPage",
          "hasPreviousPage",
          "page",
          "pageSize",
          "totalCount",
          "totalPages"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DtoReportingShippingReportRow"
            },
            "description": "The data"
          },
          "page": {
            "type": "integer",
            "description": "The 1-indexed page",
            "format": "int32",
            "readOnly": true
          },
          "pageSize": {
            "type": "integer",
            "description": "The page size",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total count of records",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total pages",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True if there is a previous page",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True if there is a next page",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Paged result"
      },
      "DtoPagedResultDtoDtoReportingTimeClockReportRow": {
        "required": [
          "data",
          "hasNextPage",
          "hasPreviousPage",
          "page",
          "pageSize",
          "totalCount",
          "totalPages"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DtoReportingTimeClockReportRow"
            },
            "description": "The data"
          },
          "page": {
            "type": "integer",
            "description": "The 1-indexed page",
            "format": "int32",
            "readOnly": true
          },
          "pageSize": {
            "type": "integer",
            "description": "The page size",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total count of records",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total pages",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True if there is a previous page",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True if there is a next page",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Paged result"
      },
      "DtoPagedResultDtoInventoryEventsInventoryEventDto": {
        "required": [
          "data",
          "hasNextPage",
          "hasPreviousPage",
          "page",
          "pageSize",
          "totalCount",
          "totalPages"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InventoryEventsInventoryEventDto"
            },
            "description": "The data"
          },
          "page": {
            "type": "integer",
            "description": "The 1-indexed page",
            "format": "int32",
            "readOnly": true
          },
          "pageSize": {
            "type": "integer",
            "description": "The page size",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total count of records",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total pages",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True if there is a previous page",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True if there is a next page",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Paged result"
      },
      "DtoPagedResultDtoInventoryTransactionDto": {
        "required": [
          "data",
          "hasNextPage",
          "hasPreviousPage",
          "page",
          "pageSize",
          "totalCount",
          "totalPages"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InventoryTransactionDto"
            },
            "description": "The data"
          },
          "page": {
            "type": "integer",
            "description": "The 1-indexed page",
            "format": "int32",
            "readOnly": true
          },
          "pageSize": {
            "type": "integer",
            "description": "The page size",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total count of records",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total pages",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True if there is a previous page",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True if there is a next page",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Paged result"
      },
      "DtoPagedResultDtoNCRNcrDto": {
        "required": [
          "data",
          "hasNextPage",
          "hasPreviousPage",
          "page",
          "pageSize",
          "totalCount",
          "totalPages"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/NCRNcrDto"
            },
            "description": "The data"
          },
          "page": {
            "type": "integer",
            "description": "The 1-indexed page",
            "format": "int32",
            "readOnly": true
          },
          "pageSize": {
            "type": "integer",
            "description": "The page size",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total count of records",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total pages",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True if there is a previous page",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True if there is a next page",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Paged result"
      },
      "DtoPagedResultDtoShipmentLineItemDto": {
        "required": [
          "data",
          "hasNextPage",
          "hasPreviousPage",
          "page",
          "pageSize",
          "totalCount",
          "totalPages"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShipmentLineItemDto"
            },
            "description": "The data"
          },
          "page": {
            "type": "integer",
            "description": "The 1-indexed page",
            "format": "int32",
            "readOnly": true
          },
          "pageSize": {
            "type": "integer",
            "description": "The page size",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total count of records",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total pages",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True if there is a previous page",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True if there is a next page",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Paged result"
      },
      "DtoPagedResultDtoShipmentsShipmentDto": {
        "required": [
          "data",
          "hasNextPage",
          "hasPreviousPage",
          "page",
          "pageSize",
          "totalCount",
          "totalPages"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShipmentsShipmentDto"
            },
            "description": "The data"
          },
          "page": {
            "type": "integer",
            "description": "The 1-indexed page",
            "format": "int32",
            "readOnly": true
          },
          "pageSize": {
            "type": "integer",
            "description": "The page size",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total count of records",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total pages",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True if there is a previous page",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True if there is a next page",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Paged result"
      },
      "DtoPagedResultDtoTagDto": {
        "required": [
          "data",
          "hasNextPage",
          "hasPreviousPage",
          "page",
          "pageSize",
          "totalCount",
          "totalPages"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagDto"
            },
            "description": "The data"
          },
          "page": {
            "type": "integer",
            "description": "The 1-indexed page",
            "format": "int32",
            "readOnly": true
          },
          "pageSize": {
            "type": "integer",
            "description": "The page size",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total count of records",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total pages",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True if there is a previous page",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True if there is a next page",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Paged result"
      },
      "DtoPagedResultDtoTimeClockDto": {
        "required": [
          "data",
          "hasNextPage",
          "hasPreviousPage",
          "page",
          "pageSize",
          "totalCount",
          "totalPages"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimeClockDto"
            },
            "description": "The data"
          },
          "page": {
            "type": "integer",
            "description": "The 1-indexed page",
            "format": "int32",
            "readOnly": true
          },
          "pageSize": {
            "type": "integer",
            "description": "The page size",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total count of records",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total pages",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True if there is a previous page",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True if there is a next page",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Paged result"
      },
      "DtoPagedResultDtoTimerDto": {
        "required": [
          "data",
          "hasNextPage",
          "hasPreviousPage",
          "page",
          "pageSize",
          "totalCount",
          "totalPages"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimerDto"
            },
            "description": "The data"
          },
          "page": {
            "type": "integer",
            "description": "The 1-indexed page",
            "format": "int32",
            "readOnly": true
          },
          "pageSize": {
            "type": "integer",
            "description": "The page size",
            "format": "int32",
            "readOnly": true
          },
          "totalCount": {
            "type": "integer",
            "description": "The total count of records",
            "format": "int32"
          },
          "totalPages": {
            "type": "integer",
            "description": "The total pages",
            "format": "int32",
            "readOnly": true
          },
          "hasPreviousPage": {
            "type": "boolean",
            "description": "True if there is a previous page",
            "readOnly": true
          },
          "hasNextPage": {
            "type": "boolean",
            "description": "True if there is a next page",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "Paged result"
      },
      "DtoPriceBreakSalesPriceBreakPricingTypeEnum": {
        "enum": [
          "price",
          "margin"
        ],
        "type": "string",
        "description": "How a sales price break is calculated."
      },
      "DtoQuoteUpdateQuotesStatus": {
        "enum": [
          "draft",
          "needsApproval",
          "approved",
          "sent",
          "won",
          "lost"
        ],
        "type": "string",
        "description": "Statuses you can update a quote too"
      },
      "DtoQuotesStatus": {
        "enum": [
          "open",
          "draft",
          "needsApproval",
          "approved",
          "sent",
          "won",
          "lost"
        ],
        "type": "string",
        "description": "Quotes status"
      },
      "DtoReportingInventoryReportFilter": {
        "type": "object",
        "properties": {
          "itemNumber": {
            "type": "string",
            "description": "Optional exact-match filter on the item number (the user-facing item identifier). Null means no\nitem filter.",
            "nullable": true
          },
          "locationName": {
            "type": "string",
            "description": "Optional exact-match filter on the inventory location name. Null means no location filter.",
            "nullable": true
          },
          "category": {
            "type": "string",
            "description": "Optional exact-match filter on the item category. Null means no category filter.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Constrained filter for the inventory reporting list endpoint. Every field maps to a fixed,\nserver-controlled column; values are always bound as Dapper parameters and never concatenated\ninto SQL."
      },
      "DtoReportingInventoryReportRow": {
        "type": "object",
        "properties": {
          "number": {
            "type": "string",
            "description": "Item number (the user-facing identifier for an item).",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Item description.",
            "nullable": true
          },
          "revision": {
            "type": "string",
            "description": "Item revision label.",
            "nullable": true
          },
          "origin": {
            "type": "string",
            "description": "Item origin classification (e.g. Make, Buy, MakeOrBuy, CustomerSupplied).",
            "nullable": true
          },
          "isSellable": {
            "type": "string",
            "description": "\"Sellable\" when the item can appear on a sales order line, otherwise empty.",
            "nullable": true
          },
          "primaryVendorName": {
            "type": "string",
            "description": "Default vendor name for purchasing the item (Buy or MakeOrBuy items only).",
            "nullable": true
          },
          "tags": {
            "type": "string",
            "description": "Comma-separated list of descriptive, user-applied tags on the item.",
            "nullable": true
          },
          "minimumStockOnHand": {
            "type": "number",
            "description": "Configured minimum stock threshold for reorder planning.",
            "format": "double",
            "nullable": true
          },
          "unitOfMeasureName": {
            "type": "string",
            "description": "Inventory unit of measure (e.g. Piece, Foot, Centimeter).",
            "nullable": true
          },
          "accountingCode1": {
            "type": "string",
            "description": "Primary accounting code mapped to this item.",
            "nullable": true
          },
          "accountingCode2": {
            "type": "string",
            "description": "Secondary accounting code, when configured.",
            "nullable": true
          },
          "accountingClass": {
            "type": "string",
            "description": "Accounting classification.",
            "nullable": true
          },
          "category": {
            "type": "string",
            "description": "Item category for grouping.",
            "nullable": true
          },
          "isArchived": {
            "type": "string",
            "description": "\"Archived\" when the item is archived and no longer in active use, otherwise empty.",
            "nullable": true
          },
          "shippingUnitWeight": {
            "type": "number",
            "description": "Weight per inventory unit used for shipping calculations.",
            "format": "double",
            "nullable": true
          },
          "materialUnitWeightLbs": {
            "type": "number",
            "description": "Underlying material weight per unit, in pounds, for raw-material shape items.",
            "format": "double",
            "nullable": true
          },
          "onHandQty": {
            "type": "number",
            "description": "Quantity currently on hand for this lot at this location.",
            "format": "double",
            "nullable": true
          },
          "lotNumber": {
            "type": "string",
            "description": "Lot identifier.",
            "nullable": true
          },
          "expirationDate": {
            "type": "string",
            "description": "Lot expiration date when applicable.",
            "format": "date-time",
            "nullable": true
          },
          "locationName": {
            "type": "string",
            "description": "Inventory location name.",
            "nullable": true
          },
          "isCustom": {
            "type": "string",
            "description": "\"Custom\" when the lot holds customized / non-standard variations of an item, otherwise empty.",
            "nullable": true
          },
          "materialValue": {
            "type": "number",
            "description": "Per-unit value of input materials required to produce the items in this lot.",
            "format": "double",
            "nullable": true
          },
          "laborValue": {
            "type": "number",
            "description": "Per-unit value of labor required to produce the items in this lot.",
            "format": "double",
            "nullable": true
          },
          "machineValue": {
            "type": "number",
            "description": "Per-unit value of equipment time required to produce the items in this lot.",
            "format": "double",
            "nullable": true
          },
          "outsideProcessingValue": {
            "type": "number",
            "description": "Per-unit value of outside processes required to produce the items in this lot.",
            "format": "double",
            "nullable": true
          },
          "totalUnitValue": {
            "type": "number",
            "description": "Sum of per-unit cost components (material + labor + machine + OP).",
            "format": "double",
            "nullable": true
          },
          "totalValue": {
            "type": "number",
            "description": "On-hand quantity × total unit value (extended inventory value).",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "One row of the pre-joined inventory reporting view (`rpt.View_ExposedReportingData_Inventory`):\none (item, lot, location) combination, carrying on-hand quantity, per-unit and extended valuation\n(material/labor/machine/OP), lot and location context, and item categorization. Property names are\nclean identifiers; the query aliases each source column (e.g. `[On Hand Qty]`) to the matching\nproperty so Dapper can bind it."
      },
      "DtoReportingInvoiceReportFilter": {
        "type": "object",
        "properties": {
          "issuedDateFrom": {
            "type": "string",
            "description": "Inclusive lower bound applied to the invoice's Issued Date. Null means no lower bound.",
            "format": "date-time",
            "nullable": true
          },
          "issuedDateTo": {
            "type": "string",
            "description": "Inclusive upper bound applied to the invoice's Issued Date (the whole `to` day is included).\nNull means no upper bound.",
            "format": "date-time",
            "nullable": true
          },
          "invoiceStatus": {
            "type": "string",
            "description": "Optional exact-match filter on the invoice lifecycle status (e.g. \"Issued\", \"Paid\"). Null means\nno status filter.",
            "nullable": true
          },
          "lineType": {
            "type": "string",
            "description": "Optional exact-match filter on the line type (Part, Shipping, Fee, Deposit, Discount, Refund,\nTax, or NA). Null means no line-type filter.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Constrained filter for the invoice reporting list endpoint. Every field maps to a fixed,\nserver-controlled column; values are always bound as Dapper parameters and never concatenated\ninto SQL."
      },
      "DtoReportingInvoiceReportRow": {
        "type": "object",
        "properties": {
          "company": {
            "type": "string",
            "description": "Issuing company / tenant company name.",
            "nullable": true
          },
          "invoiceNumber": {
            "type": "integer",
            "description": "Numeric invoice identifier assigned by Fulcrum.",
            "format": "int32",
            "nullable": true
          },
          "invoiceStatus": {
            "type": "string",
            "description": "Lifecycle state — typically New, Approved, Issued, Paid.",
            "nullable": true
          },
          "salesOrderNumber": {
            "type": "integer",
            "description": "Number identifying the sales order being invoiced.",
            "format": "int32",
            "nullable": true
          },
          "customerPurchaseOrder": {
            "type": "string",
            "description": "Customer's PO number recorded on the sales order.",
            "nullable": true
          },
          "customerName": {
            "type": "string",
            "description": "Display name of the billed customer.",
            "nullable": true
          },
          "salesPerson": {
            "type": "string",
            "description": "Name of the salesperson associated with the sales order.",
            "nullable": true
          },
          "isDeposit": {
            "type": "string",
            "description": "Set to the string \"Deposit\" when the row represents a deposit; null otherwise.",
            "nullable": true
          },
          "createdDate": {
            "type": "string",
            "description": "UTC timestamp when the invoice record was created.",
            "format": "date-time",
            "nullable": true
          },
          "lineType": {
            "type": "string",
            "description": "Discriminator — Part, Shipping, Fee, Deposit, Discount, Refund, Tax, or NA.",
            "nullable": true
          },
          "lineItemName": {
            "type": "string",
            "description": "Item name (for part lines) or descriptive label for non-part lines.",
            "nullable": true
          },
          "customerPartNumber": {
            "type": "string",
            "description": "Customer's part number for this line, when supplied.",
            "nullable": true
          },
          "customerPartDescription": {
            "type": "string",
            "description": "Customer's description for this line, when supplied.",
            "nullable": true
          },
          "itemDescription": {
            "type": "string",
            "description": "Internal item description for the line.",
            "nullable": true
          },
          "accountingCode": {
            "type": "string",
            "description": "Accounting code mapped to the invoice line.",
            "nullable": true
          },
          "itemTags": {
            "type": "string",
            "description": "Comma-separated list of descriptive tags from the item.",
            "nullable": true
          },
          "issuedDate": {
            "type": "string",
            "description": "Date the invoice was issued. NULL for drafts.",
            "format": "date-time",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "description": "Date payment is due per the invoice's payment terms.",
            "format": "date-time",
            "nullable": true
          },
          "salesOrderTotal": {
            "type": "number",
            "description": "Total of the source sales order (may differ from invoice total).",
            "format": "double",
            "nullable": true
          },
          "unitPrice": {
            "type": "number",
            "description": "Per-unit price for the line (varies by Line Type; negative for discounts).",
            "format": "double",
            "nullable": true
          },
          "quantityInvoiced": {
            "type": "number",
            "description": "Quantity billed on this line.",
            "format": "double",
            "nullable": true
          },
          "invoiceAmount": {
            "type": "number",
            "description": "Extended amount for this line before tax.",
            "format": "double",
            "nullable": true
          },
          "isTaxable": {
            "type": "integer",
            "description": "1 when the line is subject to taxation, otherwise 0. (Computed 1/0 flag in the view.)",
            "format": "int32",
            "nullable": true
          },
          "taxCode": {
            "type": "string",
            "description": "Descriptive name of the tax code applied to the line, when applicable.",
            "nullable": true
          },
          "taxTotal": {
            "type": "number",
            "description": "Equivalent to Invoice Amount for tax line items; 0 otherwise.",
            "format": "double",
            "nullable": true
          },
          "invoiceTotalWithoutTax": {
            "type": "number",
            "description": "Invoice-level total excluding tax (repeats on every line of the invoice).",
            "format": "double",
            "nullable": true
          },
          "invoiceTotalWithTax": {
            "type": "number",
            "description": "Invoice-level total including tax (repeats on every line of the invoice).",
            "format": "double",
            "nullable": true
          },
          "paidDate": {
            "type": "string",
            "description": "Date the invoice was marked paid; null while open.",
            "format": "date-time",
            "nullable": true
          },
          "late": {
            "type": "integer",
            "description": "1 when the invoice is past Due Date and unpaid or was paid late, otherwise 0. (Computed 1/0 flag in the view.)",
            "format": "int32",
            "nullable": true
          },
          "daysLate": {
            "type": "integer",
            "description": "Days between Due Date and either Paid Date (if paid) or today (if open). 0 if not yet due.",
            "format": "int32",
            "nullable": true
          },
          "customerCurrencyCode": {
            "type": "string",
            "description": "ISO currency code of the customer's billing currency.",
            "nullable": true
          },
          "shipmentName": {
            "type": "string",
            "description": "Concatenated names of shipments invoiced on this line (comma-separated).",
            "nullable": true
          },
          "shipmentsLine1s": {
            "type": "string",
            "description": "Together with ShipmentsLine2s, concatenated shipment address values (comma-separated).",
            "nullable": true
          },
          "shipmentsLine2s": {
            "type": "string",
            "description": "Together with ShipmentsLine1s, concatenated shipment address values (comma-separated).",
            "nullable": true
          },
          "shipmentsCities": {
            "type": "string",
            "description": "Concatenated shipment cities (comma-separated).",
            "nullable": true
          },
          "shipmentsStates": {
            "type": "string",
            "description": "Concatenated shipment state/provinces (comma-separated).",
            "nullable": true
          },
          "shipmentsCountries": {
            "type": "string",
            "description": "Concatenated shipment countries (comma-separated).",
            "nullable": true
          },
          "accountingClass": {
            "type": "string",
            "description": "Accounting classification for the item associated to the line, if applicable.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "One row of the pre-joined invoice reporting view (`rpt.View_ExposedReportingData_Invoice`): one\ninvoice line item, joined to sales-order and shipment context with line type, pricing, tax, and aging\ndetail. Property names are clean identifiers; the query aliases each source column (e.g.\n`[Issued Date]`) to the matching property so Dapper can bind it."
      },
      "DtoReportingJobActivityByOperatorReportFilter": {
        "type": "object",
        "properties": {
          "startedOrCreatedDateFrom": {
            "type": "string",
            "description": "Inclusive lower bound applied to the run's Started or Created Date. Null means no lower bound.",
            "format": "date-time",
            "nullable": true
          },
          "startedOrCreatedDateTo": {
            "type": "string",
            "description": "Inclusive upper bound applied to the run's Started or Created Date (the whole `to` day is\nincluded). Null means no upper bound.",
            "format": "date-time",
            "nullable": true
          },
          "employee": {
            "type": "string",
            "description": "Optional exact-match filter on the operator / employee name. Null means no operator filter.",
            "nullable": true
          },
          "department": {
            "type": "string",
            "description": "Optional exact-match filter on the department containing the operation's work center. Null means\nno department filter.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Constrained filter for the job-activity-by-operator reporting list endpoint. Every field maps to a\nfixed, server-controlled column; values are always bound as Dapper parameters and never concatenated\ninto SQL."
      },
      "DtoReportingJobActivityByOperatorReportRow": {
        "type": "object",
        "properties": {
          "jobName": {
            "type": "string",
            "description": "Job name.",
            "nullable": true
          },
          "item": {
            "type": "string",
            "description": "Item being produced.",
            "nullable": true
          },
          "operationName": {
            "type": "string",
            "description": "Operation name within the routing.",
            "nullable": true
          },
          "operationNumber": {
            "type": "integer",
            "description": "Operation sequence number within the routing.",
            "format": "int32",
            "nullable": true
          },
          "employee": {
            "type": "string",
            "description": "Operator name.",
            "nullable": true
          },
          "startedOrCreatedDate": {
            "type": "string",
            "description": "Date the operator's run started (or the row was created).",
            "format": "date-time",
            "nullable": true
          },
          "jobCompletedDate": {
            "type": "string",
            "description": "Completion date of the job overall.",
            "format": "date-time",
            "nullable": true
          },
          "itemDescription": {
            "type": "string",
            "description": "Item description.",
            "nullable": true
          },
          "itemRevision": {
            "type": "string",
            "description": "Item revision when applicable.",
            "nullable": true
          },
          "isParent": {
            "type": "integer",
            "description": "1 when this item is a parent assembly within the job, otherwise 0. (Computed 1/0 flag.)",
            "format": "int32",
            "nullable": true
          },
          "lastOperationOnItem": {
            "type": "integer",
            "description": "1 when this is the final operation in the item's routing, otherwise 0. (Computed 1/0 flag.)",
            "format": "int32",
            "nullable": true
          },
          "productionDueDate": {
            "type": "string",
            "description": "Job's production due date.",
            "format": "date-time",
            "nullable": true
          },
          "salesOrderNumber": {
            "type": "string",
            "description": "Source sales order number.",
            "nullable": true
          },
          "customer": {
            "type": "string",
            "description": "Customer name from the sales order.",
            "nullable": true
          },
          "customerPurchaseOrder": {
            "type": "string",
            "description": "Customer's PO number from the sales order.",
            "nullable": true
          },
          "jobPriority": {
            "type": "string",
            "description": "Job priority value.",
            "nullable": true
          },
          "jobStatus": {
            "type": "string",
            "description": "Job lifecycle status.",
            "nullable": true
          },
          "jobScheduledStart": {
            "type": "string",
            "description": "Scheduled start time of the job.",
            "format": "date-time",
            "nullable": true
          },
          "jobScheduledEnd": {
            "type": "string",
            "description": "Scheduled end time of the job.",
            "format": "date-time",
            "nullable": true
          },
          "jobLateStatus": {
            "type": "string",
            "description": "Late classification for the job (Late or On Time).",
            "nullable": true
          },
          "jobPlannedQty": {
            "type": "number",
            "description": "Planned quantity for the job.",
            "format": "double",
            "nullable": true
          },
          "uoM": {
            "type": "string",
            "description": "Unit of measure for the item being produced.",
            "nullable": true
          },
          "department": {
            "type": "string",
            "description": "Department containing the work center.",
            "nullable": true
          },
          "shift": {
            "type": "string",
            "description": "Shift assigned to the operation.",
            "nullable": true
          },
          "scheduledEquipment": {
            "type": "string",
            "description": "Equipment scheduled for this operation.",
            "nullable": true
          },
          "operationStatus": {
            "type": "string",
            "description": "Operation lifecycle status (Ready, Pending, Running, Paused, Complete).",
            "nullable": true
          },
          "operationCompletedDate": {
            "type": "string",
            "description": "Completion date of the operation.",
            "format": "date-time",
            "nullable": true
          },
          "setupComplete": {
            "type": "string",
            "description": "\"TRUE\" when the setup phase is complete, otherwise \"FALSE\".",
            "nullable": true
          },
          "runComplete": {
            "type": "string",
            "description": "\"TRUE\" when the run phase is complete, otherwise \"FALSE\".",
            "nullable": true
          },
          "estimatedSetupTimeHours": {
            "type": "number",
            "description": "Estimated setup hours for the operation.",
            "format": "double",
            "nullable": true
          },
          "estimatedRunTimeHours": {
            "type": "number",
            "description": "Estimated run hours for the operation.",
            "format": "double",
            "nullable": true
          },
          "estimatedMachineTimeHours": {
            "type": "number",
            "description": "Estimated machine hours for the operation.",
            "format": "double",
            "nullable": true
          },
          "unitsCompletedOnOperation": {
            "type": "number",
            "description": "Quantity completed on the operation overall.",
            "format": "double",
            "nullable": true
          },
          "isOutsideProcessing": {
            "type": "string",
            "description": "\"Outside Processing\" when the operation is performed by an outside vendor, otherwise empty.",
            "nullable": true
          },
          "setupTimeHours": {
            "type": "number",
            "description": "Operator's actual setup hours on this run.",
            "format": "double",
            "nullable": true
          },
          "laborTimeHours": {
            "type": "number",
            "description": "Operator's actual labor hours on this run.",
            "format": "double",
            "nullable": true
          },
          "machineTimeHours": {
            "type": "number",
            "description": "Machine hours recorded on this run.",
            "format": "double",
            "nullable": true
          },
          "startedOn": {
            "type": "string",
            "description": "Timer start timestamp for this run.",
            "format": "date-time",
            "nullable": true
          },
          "stoppedOn": {
            "type": "string",
            "description": "Timer stop timestamp for this run.",
            "format": "date-time",
            "nullable": true
          },
          "qtyCompletedThisRun": {
            "type": "number",
            "description": "Quantity completed in this specific run.",
            "format": "double",
            "nullable": true
          },
          "qtyInventoriedThisRun": {
            "type": "number",
            "description": "Quantity moved to inventory in this specific run.",
            "format": "double",
            "nullable": true
          },
          "unitsPerHour": {
            "type": "number",
            "description": "Throughput rate for this run (units / labor hour).",
            "format": "double",
            "nullable": true
          },
          "setupRate": {
            "type": "number",
            "description": "Hourly rate applied to setup hours.",
            "format": "double",
            "nullable": true
          },
          "laborRate": {
            "type": "number",
            "description": "Hourly rate applied to labor hours.",
            "format": "double",
            "nullable": true
          },
          "machineRate": {
            "type": "number",
            "description": "Hourly rate applied to machine hours.",
            "format": "double",
            "nullable": true
          },
          "setupCost": {
            "type": "number",
            "description": "Computed setup cost for this run (hours × rate).",
            "format": "double",
            "nullable": true
          },
          "laborCost": {
            "type": "number",
            "description": "Computed labor cost for this run (hours × rate).",
            "format": "double",
            "nullable": true
          },
          "machineCost": {
            "type": "number",
            "description": "Computed machine cost for this run (hours × rate).",
            "format": "double",
            "nullable": true
          },
          "operationScheduledStart": {
            "type": "string",
            "description": "Scheduled start time for this operation.",
            "format": "date-time",
            "nullable": true
          },
          "operationScheduledEnd": {
            "type": "string",
            "description": "Scheduled end time for this operation.",
            "format": "date-time",
            "nullable": true
          },
          "systemOperationId": {
            "type": "string",
            "description": "Internal stable identifier for the operation.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "One row of the pre-joined job-activity-by-operator reporting view\n(`rpt.View_ExposedReportingData_JobActivityByOperator`): one operation, day, and operator,\ncarrying per-operator setup/labor/machine time and cost, run-by-run quantities, rates, and job/routing\ncontext. Property names are clean identifiers; the query aliases each source column\n(e.g. `[Started or Created Date]`) to the matching property so Dapper can bind it."
      },
      "DtoReportingJobActivityReportFilter": {
        "type": "object",
        "properties": {
          "operationStatus": {
            "type": "string",
            "description": "Optional exact-match filter on the operation lifecycle status (e.g. \"Running\", \"Complete\"). Null\nmeans no operation-status filter.",
            "nullable": true
          },
          "jobStatus": {
            "type": "string",
            "description": "Optional exact-match filter on the job lifecycle status (e.g. \"In Progress\", \"Complete\"). Null\nmeans no job-status filter.",
            "nullable": true
          },
          "department": {
            "type": "string",
            "description": "Optional exact-match filter on the department containing the operation's scheduled work center.\nNull means no department filter.",
            "nullable": true
          },
          "productionDueDateFrom": {
            "type": "string",
            "description": "Inclusive lower bound applied to the job's Production Due Date. Null means no lower bound.",
            "format": "date-time",
            "nullable": true
          },
          "productionDueDateTo": {
            "type": "string",
            "description": "Inclusive upper bound applied to the job's Production Due Date (the whole `to` day is\nincluded). Null means no upper bound.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Constrained filter for the job-activity reporting list endpoint. Every field maps to a fixed,\nserver-controlled column; values are always bound as Dapper parameters and never concatenated\ninto SQL."
      },
      "DtoReportingJobActivityReportRow": {
        "type": "object",
        "properties": {
          "jobName": {
            "type": "string",
            "description": "Job name (typically the user-facing job identifier).",
            "nullable": true
          },
          "item": {
            "type": "string",
            "description": "Item number being produced.",
            "nullable": true
          },
          "itemDescription": {
            "type": "string",
            "description": "Item description.",
            "nullable": true
          },
          "itemRevision": {
            "type": "string",
            "description": "Item revision when revision tracking is enabled.",
            "nullable": true
          },
          "itemTags": {
            "type": "string",
            "description": "Comma-separated descriptive tags from the item.",
            "nullable": true
          },
          "productionDueDate": {
            "type": "string",
            "description": "Job's production due date.",
            "format": "date-time",
            "nullable": true
          },
          "salesOrderNumber": {
            "type": "string",
            "description": "Source sales order number, when the job is SO-driven.",
            "nullable": true
          },
          "customer": {
            "type": "string",
            "description": "Customer name from the sales order.",
            "nullable": true
          },
          "customerPurchaseOrder": {
            "type": "string",
            "description": "Customer's PO number from the sales order.",
            "nullable": true
          },
          "jobPriority": {
            "type": "string",
            "description": "Job priority value (High, Medium, or Low).",
            "nullable": true
          },
          "jobStatus": {
            "type": "string",
            "description": "Job lifecycle status (Approved, Scheduled, In Progress, Complete, etc.).",
            "nullable": true
          },
          "jobScheduledStart": {
            "type": "string",
            "description": "Scheduled start time of the job.",
            "format": "date-time",
            "nullable": true
          },
          "jobScheduledEnd": {
            "type": "string",
            "description": "Scheduled end time of the job.",
            "format": "date-time",
            "nullable": true
          },
          "jobLateStatus": {
            "type": "string",
            "description": "Late classification for the job (Late or On Time).",
            "nullable": true
          },
          "jobPlannedQty": {
            "type": "number",
            "description": "Planned quantity for the job.",
            "format": "double",
            "nullable": true
          },
          "uoM": {
            "type": "string",
            "description": "Unit of measure for the item being produced.",
            "nullable": true
          },
          "department": {
            "type": "string",
            "description": "Department containing the operation's scheduled work center.",
            "nullable": true
          },
          "shift": {
            "type": "string",
            "description": "Shift assigned to the operation.",
            "nullable": true
          },
          "operationName": {
            "type": "string",
            "description": "Operation name within the routing.",
            "nullable": true
          },
          "scheduledEquipment": {
            "type": "string",
            "description": "Equipment scheduled for this operation.",
            "nullable": true
          },
          "operationNumber": {
            "type": "integer",
            "description": "Operation sequence number within the routing.",
            "format": "int32",
            "nullable": true
          },
          "operationStatus": {
            "type": "string",
            "description": "Operation lifecycle status (Ready, Pending, Running, Paused, Complete).",
            "nullable": true
          },
          "setupComplete": {
            "type": "string",
            "description": "\"TRUE\" when the setup phase is complete, otherwise \"FALSE\".",
            "nullable": true
          },
          "runComplete": {
            "type": "string",
            "description": "\"TRUE\" when the run phase is complete, otherwise \"FALSE\".",
            "nullable": true
          },
          "estimatedSetupTimeHours": {
            "type": "number",
            "description": "Estimated setup hours for this operation.",
            "format": "double",
            "nullable": true
          },
          "estimatedRunTimeHours": {
            "type": "number",
            "description": "Estimated run hours for this operation.",
            "format": "double",
            "nullable": true
          },
          "estimatedMachineTimeHours": {
            "type": "number",
            "description": "Estimated machine hours for this operation.",
            "format": "double",
            "nullable": true
          },
          "unitsCompletedOnOperation": {
            "type": "number",
            "description": "Quantity completed on this operation so far.",
            "format": "double",
            "nullable": true
          },
          "unitsCompletedOnJob": {
            "type": "number",
            "description": "Quantity completed on the job overall.",
            "format": "double",
            "nullable": true
          },
          "isOutsideProcessing": {
            "type": "string",
            "description": "\"Outside Processing\" when this operation is performed by an outside vendor, otherwise empty.",
            "nullable": true
          },
          "outsideProcessingLeadTime": {
            "type": "integer",
            "description": "Configured lead time for outside-processing operations.",
            "format": "int32",
            "nullable": true
          },
          "isRework": {
            "type": "boolean",
            "description": "True when this operation row represents rework rather than original production.",
            "nullable": true
          },
          "totalOperationTimeHours": {
            "type": "number",
            "description": "Total elapsed operator time on this operation (across all phases).",
            "format": "double",
            "nullable": true
          },
          "totalMachineTimeHours": {
            "type": "number",
            "description": "Total elapsed machine time on this operation.",
            "format": "double",
            "nullable": true
          },
          "operationScheduledStart": {
            "type": "string",
            "description": "Scheduled start time for this operation.",
            "format": "date-time",
            "nullable": true
          },
          "actualStart": {
            "type": "string",
            "description": "Actual start timestamp (from timer data).",
            "format": "date-time",
            "nullable": true
          },
          "lastStoppedOn": {
            "type": "string",
            "description": "Timestamp of the most recent timer stop.",
            "format": "date-time",
            "nullable": true
          },
          "latestUser": {
            "type": "string",
            "description": "Name of the most recent operator to work on the operation.",
            "nullable": true
          },
          "scheduledEnd": {
            "type": "string",
            "description": "Scheduled end time for this operation.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "One row of the pre-joined job-activity reporting view\n(`rpt.View_ExposedReportingData_JobActivity`): one operation per item-to-make per job, carrying\nschedule, timer, completion-progress, and routing context. Property names are clean identifiers; the\nquery aliases each source column (e.g. `[Production Due Date]`) to the matching property so\nDapper can bind it."
      },
      "DtoReportingQuoteReportFilter": {
        "type": "object",
        "properties": {
          "quotedDateFrom": {
            "type": "string",
            "description": "Inclusive lower bound applied to the quote's Quoted Date. Null means no lower bound.",
            "format": "date-time",
            "nullable": true
          },
          "quotedDateTo": {
            "type": "string",
            "description": "Inclusive upper bound applied to the quote's Quoted Date (the whole `to` day is included).\nNull means no upper bound.",
            "format": "date-time",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "Optional exact-match filter on the quote lifecycle status. Null means no status filter.",
            "nullable": true
          },
          "customerName": {
            "type": "string",
            "description": "Optional exact-match filter on the customer name. Null means no customer filter.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Constrained filter for the quote reporting list endpoint. Every field maps to a fixed,\nserver-controlled column; values are always bound as Dapper parameters and never concatenated\ninto SQL."
      },
      "DtoReportingQuoteReportRow": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Internal stable identifier for the quote.",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Numeric quote number.",
            "format": "int32",
            "nullable": true
          },
          "createdUtc": {
            "type": "string",
            "description": "UTC timestamp the quote was created.",
            "format": "date-time",
            "nullable": true
          },
          "customerName": {
            "type": "string",
            "description": "Customer name on the quote.",
            "nullable": true
          },
          "priority": {
            "type": "string",
            "description": "Quote priority value.",
            "nullable": true
          },
          "salesPersonName": {
            "type": "string",
            "description": "Name of the assigned salesperson.",
            "nullable": true
          },
          "expirationDate": {
            "type": "string",
            "description": "Quote expiration date. (Source column name `ExipirationDate` is a typo preserved in the view definition.)",
            "format": "date-time",
            "nullable": true
          },
          "quotedDate": {
            "type": "string",
            "description": "Date the quote was sent to the customer.",
            "format": "date-time",
            "nullable": true
          },
          "closedDate": {
            "type": "string",
            "description": "Date the quote was closed (won, lost, or expired).",
            "format": "date-time",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "Quote lifecycle status.",
            "nullable": true
          },
          "publicNote": {
            "type": "string",
            "description": "Public-facing note attached to the quote.",
            "nullable": true
          },
          "discount": {
            "type": "number",
            "description": "Total discount amount applied to the quote.",
            "format": "double",
            "nullable": true
          },
          "totalInPrimaryCurrency": {
            "type": "number",
            "description": "Quote total converted to the tenant's primary currency.",
            "format": "double",
            "nullable": true
          },
          "totalWithTax": {
            "type": "number",
            "description": "Quote total including tax.",
            "format": "double",
            "nullable": true
          },
          "cost": {
            "type": "number",
            "description": "Estimated total cost across all quote lines.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "One row of the pre-joined quote reporting view (`rpt.View_ExposedReportingData_Quote`): one\nquote, carrying totals, cost, status, and lifecycle dates. Property names are clean identifiers; the\nquery aliases each source column (e.g. `[QuotedDate]`) to the matching property so Dapper can\nbind it."
      },
      "DtoReportingSalesOrderLinesReportFilter": {
        "type": "object",
        "properties": {
          "orderedDateFrom": {
            "type": "string",
            "description": "Inclusive lower bound applied to the order's Ordered Date. Null means no lower bound.",
            "format": "date-time",
            "nullable": true
          },
          "orderedDateTo": {
            "type": "string",
            "description": "Inclusive upper bound applied to the order's Ordered Date (the whole `to` day is included).\nNull means no upper bound.",
            "format": "date-time",
            "nullable": true
          },
          "deliveryDueDateFrom": {
            "type": "string",
            "description": "Inclusive lower bound applied to the line's Delivery Due Date. Null means no lower bound.",
            "format": "date-time",
            "nullable": true
          },
          "deliveryDueDateTo": {
            "type": "string",
            "description": "Inclusive upper bound applied to the line's Delivery Due Date (the whole `to` day is\nincluded). Null means no upper bound.",
            "format": "date-time",
            "nullable": true
          },
          "salesOrderStatus": {
            "type": "string",
            "description": "Optional exact-match filter on the sales-order lifecycle status. Null means no status filter.",
            "nullable": true
          },
          "customerName": {
            "type": "string",
            "description": "Optional exact-match filter on the customer name. Null means no customer filter.",
            "nullable": true
          },
          "accountingCode": {
            "type": "string",
            "description": "Optional exact-match filter on the accounting code mapped to the line. Null means no accounting\ncode filter.",
            "nullable": true
          },
          "unshippedOnly": {
            "type": "boolean",
            "description": "When true, returns only lines with quantity remaining to ship (Quantity to Ship > 0). When\nfalse or null, no ship-status filter is applied.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Constrained filter for the sales-order line-items reporting list endpoint. Every field maps to a\nfixed, server-controlled column; values are always bound as Dapper parameters and never concatenated\ninto SQL."
      },
      "DtoReportingSalesOrderLinesReportRow": {
        "type": "object",
        "properties": {
          "companyName": {
            "type": "string",
            "description": "Issuing company / tenant company name.",
            "nullable": true
          },
          "associatedQuote": {
            "type": "string",
            "description": "Quote number this SO was converted from, when applicable.",
            "nullable": true
          },
          "salesOrderNumber": {
            "type": "integer",
            "description": "Numeric sales-order identifier.",
            "format": "int32",
            "nullable": true
          },
          "customerPONumber": {
            "type": "string",
            "description": "Customer's PO number recorded on the sales order.",
            "nullable": true
          },
          "salesOrderStatus": {
            "type": "string",
            "description": "SO lifecycle status.",
            "nullable": true
          },
          "completedDate": {
            "type": "string",
            "description": "Date the SO was marked complete.",
            "format": "date-time",
            "nullable": true
          },
          "orderPriority": {
            "type": "string",
            "description": "Order priority value.",
            "nullable": true
          },
          "customerName": {
            "type": "string",
            "description": "Customer display name.",
            "nullable": true
          },
          "customerTier": {
            "type": "string",
            "description": "Customer tier classification.",
            "nullable": true
          },
          "paymentTerms": {
            "type": "string",
            "description": "Payment terms name.",
            "nullable": true
          },
          "city": {
            "type": "string",
            "description": "Customer city.",
            "nullable": true
          },
          "customerStateProvince": {
            "type": "string",
            "description": "Customer state or province.",
            "nullable": true
          },
          "customerContact": {
            "type": "string",
            "description": "Name of the customer contact recorded on the order.",
            "nullable": true
          },
          "customerPhone": {
            "type": "string",
            "description": "Customer contact phone number.",
            "nullable": true
          },
          "customerEmail": {
            "type": "string",
            "description": "Customer contact email address.",
            "nullable": true
          },
          "salesperson": {
            "type": "string",
            "description": "Name of the assigned salesperson.",
            "nullable": true
          },
          "orderedDate": {
            "type": "string",
            "description": "Date the order was placed.",
            "format": "date-time",
            "nullable": true
          },
          "lineItem": {
            "type": "string",
            "description": "Item name on the SO line.",
            "nullable": true
          },
          "lineItemDescription": {
            "type": "string",
            "description": "Item description on the SO line.",
            "nullable": true
          },
          "deliverBy": {
            "type": "string",
            "description": "Customer-requested delivery-by date.",
            "format": "date-time",
            "nullable": true
          },
          "lineItemType": {
            "type": "string",
            "description": "Line classification (part, fee, etc.).",
            "nullable": true
          },
          "blanketOrder": {
            "type": "integer",
            "description": "1 when the SO line is a blanket order, otherwise 0. (Computed 1/0 flag in the view.)",
            "format": "int32",
            "nullable": true
          },
          "deliveryDueDate": {
            "type": "string",
            "description": "Computed delivery due date for the line.",
            "format": "date-time",
            "nullable": true
          },
          "internalUnitOfMeasure": {
            "type": "string",
            "description": "Internal unit of measure used by Fulcrum.",
            "nullable": true
          },
          "customerPartNumber": {
            "type": "string",
            "description": "Customer's part number for the line.",
            "nullable": true
          },
          "customerPartDescription": {
            "type": "string",
            "description": "Customer's description for the line.",
            "nullable": true
          },
          "customerUnitOfMeasure": {
            "type": "string",
            "description": "Unit of measure used on the customer's PO.",
            "nullable": true
          },
          "accountingCode": {
            "type": "string",
            "description": "Accounting code mapped to the line.",
            "nullable": true
          },
          "accountingClass": {
            "type": "string",
            "description": "Accounting classification for the line's account.",
            "nullable": true
          },
          "itemTags": {
            "type": "string",
            "description": "Comma-separated tags from the line's item.",
            "nullable": true
          },
          "itemCategory": {
            "type": "string",
            "description": "Category from the line's item.",
            "nullable": true
          },
          "quantityOrdered": {
            "type": "number",
            "description": "Quantity ordered on the line.",
            "format": "double",
            "nullable": true
          },
          "unitPrice": {
            "type": "number",
            "description": "Per-unit price billed to the customer.",
            "format": "double",
            "nullable": true
          },
          "lineItemSubTotal": {
            "type": "number",
            "description": "Extended line subtotal (Quantity × Unit Price).",
            "format": "double",
            "nullable": true
          },
          "pricingStrategy": {
            "type": "string",
            "description": "Pricing strategy used (e.g. Fixed, Shop Rate).",
            "nullable": true
          },
          "hasDiscount": {
            "type": "boolean",
            "description": "True when any discount has been applied to the line.",
            "nullable": true
          },
          "isTimeAndMaterials": {
            "type": "boolean",
            "description": "True when the line is priced time-and-materials.",
            "nullable": true
          },
          "margin": {
            "type": "number",
            "description": "Margin recorded on the line at order time.",
            "format": "double",
            "nullable": true
          },
          "estimatedUnitCost": {
            "type": "number",
            "description": "Estimated cost per produced unit (from costing).",
            "format": "double",
            "nullable": true
          },
          "associatedJobs": {
            "type": "string",
            "description": "Comma-separated list of associated job names.",
            "nullable": true
          },
          "associatedJobStatuses": {
            "type": "string",
            "description": "Comma-separated list of associated job statuses.",
            "nullable": true
          },
          "jobTotalEstimatedLaborCost": {
            "type": "number",
            "description": "Estimated labor cost summed across associated jobs.",
            "format": "double",
            "nullable": true
          },
          "jobTotalEstimatedMachineCost": {
            "type": "number",
            "description": "Estimated machine cost summed across associated jobs.",
            "format": "double",
            "nullable": true
          },
          "jobTotalEstimatedMaterialCost": {
            "type": "number",
            "description": "Estimated material cost summed across associated jobs.",
            "format": "double",
            "nullable": true
          },
          "jobTotalEstimatedOPCost": {
            "type": "number",
            "description": "Estimated outside-processing cost summed across associated jobs.",
            "format": "double",
            "nullable": true
          },
          "jobTotalEstimatedCost": {
            "type": "number",
            "description": "Total estimated cost summed across associated jobs.",
            "format": "double",
            "nullable": true
          },
          "actualAvgUnitCost": {
            "type": "number",
            "description": "Actual cost per produced unit, averaged across associated jobs.",
            "format": "double",
            "nullable": true
          },
          "actualAvgMaterialUnitCost": {
            "type": "number",
            "description": "Actual material cost per unit, averaged.",
            "format": "double",
            "nullable": true
          },
          "actualAvgLaborUnitCost": {
            "type": "number",
            "description": "Actual labor cost per unit, averaged.",
            "format": "double",
            "nullable": true
          },
          "actualAvgMachineUnitCost": {
            "type": "number",
            "description": "Actual machine cost per unit, averaged.",
            "format": "double",
            "nullable": true
          },
          "actualAvgOPUnitCost": {
            "type": "number",
            "description": "Actual outside-processing cost per unit, averaged.",
            "format": "double",
            "nullable": true
          },
          "jobActualTotalCost": {
            "type": "number",
            "description": "Actual total cost summed across associated jobs.",
            "format": "double",
            "nullable": true
          },
          "totalQuantityProduced": {
            "type": "number",
            "description": "Total quantity produced across associated jobs.",
            "format": "double",
            "nullable": true
          },
          "hasInvoice": {
            "type": "string",
            "description": "\"Yes\" when at least one invoice has been issued for this line, otherwise \"No\".",
            "nullable": true
          },
          "totalQuantityInvoicedIssued": {
            "type": "number",
            "description": "Total quantity invoiced (on issued invoices).",
            "format": "double",
            "nullable": true
          },
          "invoiceNumbers": {
            "type": "string",
            "description": "Comma-separated list of associated invoice numbers.",
            "nullable": true
          },
          "invoiceStatuses": {
            "type": "string",
            "description": "Comma-separated list of associated invoice statuses.",
            "nullable": true
          },
          "invoiceLinesSubtotal": {
            "type": "number",
            "description": "Sum of invoice-line subtotals across associated invoices.",
            "format": "double",
            "nullable": true
          },
          "quantityShipped": {
            "type": "number",
            "description": "Total quantity shipped to date.",
            "format": "double",
            "nullable": true
          },
          "quantityToShip": {
            "type": "number",
            "description": "Quantity remaining to ship (Ordered − Shipped).",
            "format": "double",
            "nullable": true
          },
          "valueShipped": {
            "type": "number",
            "description": "Extended value already shipped.",
            "format": "double",
            "nullable": true
          },
          "valueToShip": {
            "type": "number",
            "description": "Extended value remaining to ship.",
            "format": "double",
            "nullable": true
          },
          "associatedShipmentNumbers": {
            "type": "string",
            "description": "Comma-separated list of shipment numbers.",
            "nullable": true
          },
          "associatedShipmentStatuses": {
            "type": "string",
            "description": "Comma-separated list of shipment statuses.",
            "nullable": true
          },
          "associatedShipmentMethods": {
            "type": "string",
            "description": "Comma-separated list of shipment methods used.",
            "nullable": true
          },
          "hasReturn": {
            "type": "string",
            "description": "\"Yes\" when at least one return is associated with the line, otherwise \"No\".",
            "nullable": true
          },
          "quantityToReturn": {
            "type": "number",
            "description": "Quantity flagged to return.",
            "format": "double",
            "nullable": true
          },
          "refundReason": {
            "type": "string",
            "description": "Reason text for any refund logged against the line.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "One row of the pre-joined sales-order line-items reporting view\n(`rpt.View_ExposedReportingData_SalesOrderLineItems`): one sales-order line, carrying the\norder/customer context and the line's pre-computed cost, invoice, ship, and return values. Property\nnames are clean identifiers; the query aliases each source column (e.g. `[Sales Order Number]`)\nto the matching property so Dapper can bind it."
      },
      "DtoReportingShippingReportFilter": {
        "type": "object",
        "properties": {
          "shipByDateFrom": {
            "type": "string",
            "description": "Inclusive lower bound applied to the shipment's Ship By Date. Null means no lower bound.",
            "format": "date-time",
            "nullable": true
          },
          "shipByDateTo": {
            "type": "string",
            "description": "Inclusive upper bound applied to the shipment's Ship By Date (the whole `to` day is\nincluded). Null means no upper bound.",
            "format": "date-time",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "Optional exact-match filter on the shipment lifecycle status (e.g. \"Shipped\", \"Open\"). Null\nmeans no status filter.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Constrained filter for the shipping reporting list endpoint. Every field maps to a fixed,\nserver-controlled column; values are always bound as Dapper parameters and never concatenated\ninto SQL."
      },
      "DtoReportingShippingReportRow": {
        "type": "object",
        "properties": {
          "shipmentName": {
            "type": "string",
            "description": "Shipment identifier / name.",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "Shipment lifecycle status.",
            "nullable": true
          },
          "packingStatus": {
            "type": "string",
            "description": "Packing status (e.g. Not Packed, Partially Packed, Packed).",
            "nullable": true
          },
          "shipmentType": {
            "type": "string",
            "description": "Shipment classification.",
            "nullable": true
          },
          "shipByDate": {
            "type": "string",
            "description": "Date the shipment must ship by.",
            "format": "date-time",
            "nullable": true
          },
          "shippedDate": {
            "type": "string",
            "description": "Actual ship date; null if not yet shipped.",
            "format": "date-time",
            "nullable": true
          },
          "isLate": {
            "type": "integer",
            "description": "1 when Shipped Date is after Ship By Date, otherwise 0. (Computed 1/0 flag in the view.)",
            "format": "int32",
            "nullable": true
          },
          "isOnTime": {
            "type": "integer",
            "description": "1 when Shipped Date is on or before Ship By Date, otherwise 0. (Computed 1/0 flag in the view.)",
            "format": "int32",
            "nullable": true
          },
          "daysLate": {
            "type": "integer",
            "description": "Days between Ship By Date and Shipped Date (negative when shipped early).",
            "format": "int32",
            "nullable": true
          },
          "trackingNumber": {
            "type": "string",
            "description": "Carrier tracking number, when supplied.",
            "nullable": true
          },
          "recipientName": {
            "type": "string",
            "description": "Customer / recipient name.",
            "nullable": true
          },
          "recipientCustomerCode": {
            "type": "string",
            "description": "Customer code for the recipient.",
            "nullable": true
          },
          "shipToName": {
            "type": "string",
            "description": "Ship-to contact name.",
            "nullable": true
          },
          "shipToCity": {
            "type": "string",
            "description": "Ship-to city.",
            "nullable": true
          },
          "shipToState": {
            "type": "string",
            "description": "Ship-to state / province.",
            "nullable": true
          },
          "shipToCountry": {
            "type": "string",
            "description": "Ship-to country.",
            "nullable": true
          },
          "customerPONumber": {
            "type": "string",
            "description": "Customer's PO number from the source sales order.",
            "nullable": true
          },
          "purchaseOrder": {
            "type": "string",
            "description": "Linked purchase order number, when this shipment is PO-driven.",
            "nullable": true
          },
          "salesOrder": {
            "type": "string",
            "description": "Linked sales order number, when this shipment is SO-driven.",
            "nullable": true
          },
          "shippedByName": {
            "type": "string",
            "description": "Name of the user who recorded the shipment.",
            "nullable": true
          },
          "shippingCost": {
            "type": "number",
            "description": "Cost of shipping (internal).",
            "format": "double",
            "nullable": true
          },
          "shippingCharge": {
            "type": "number",
            "description": "Charge billed to the customer for shipping.",
            "format": "double",
            "nullable": true
          },
          "shippingCostNeedsInvoice": {
            "type": "boolean",
            "description": "True when the shipping cost has not yet been invoiced to the customer.",
            "nullable": true
          },
          "shippingMethod": {
            "type": "string",
            "description": "Carrier / shipping method used.",
            "nullable": true
          },
          "itemName": {
            "type": "string",
            "description": "Item name on the shipment line.",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "Item description on the shipment line.",
            "nullable": true
          },
          "itemCategory": {
            "type": "string",
            "description": "Category from the line's item.",
            "nullable": true
          },
          "accountingCodeName": {
            "type": "string",
            "description": "Accounting code mapped to the line's item.",
            "nullable": true
          },
          "accountingClass": {
            "type": "string",
            "description": "Accounting classification for the line's account.",
            "nullable": true
          },
          "itemTags": {
            "type": "string",
            "description": "Comma-separated tags from the line's item.",
            "nullable": true
          },
          "quantityShipped": {
            "type": "number",
            "description": "Quantity shipped on this line.",
            "format": "double",
            "nullable": true
          },
          "totalQtyOrdered": {
            "type": "number",
            "description": "Total quantity ordered on the source SO line.",
            "format": "double",
            "nullable": true
          },
          "totalQtyShipped": {
            "type": "number",
            "description": "Total quantity shipped across all shipments for the source SO line.",
            "format": "double",
            "nullable": true
          },
          "unitPrice": {
            "type": "number",
            "description": "Per-unit price on the source SO line.",
            "format": "double",
            "nullable": true
          },
          "quantityToShip": {
            "type": "number",
            "description": "Quantity remaining to ship on the source SO line.",
            "format": "double",
            "nullable": true
          },
          "totalDollarsOrdered": {
            "type": "number",
            "description": "Extended dollar value of the source SO line.",
            "format": "double",
            "nullable": true
          },
          "dollarsShipped": {
            "type": "number",
            "description": "Extended dollar value already shipped for the source SO line.",
            "format": "double",
            "nullable": true
          },
          "dollarsUnshipped": {
            "type": "number",
            "description": "Extended dollar value remaining to ship.",
            "format": "double",
            "nullable": true
          },
          "quantityInvoiced": {
            "type": "number",
            "description": "Total quantity invoiced for the source SO line.",
            "format": "double",
            "nullable": true
          },
          "unitOfMeasureName": {
            "type": "string",
            "description": "Unit of measure on the line.",
            "nullable": true
          },
          "quantityPacked": {
            "type": "number",
            "description": "Quantity packed on this shipment line.",
            "format": "double",
            "nullable": true
          },
          "linePackingStatus": {
            "type": "string",
            "description": "Per-line packing status.",
            "nullable": true
          },
          "isReady": {
            "type": "boolean",
            "description": "True when the line is ready to ship.",
            "nullable": true
          },
          "openJobs": {
            "type": "string",
            "description": "Comma-separated list of open jobs producing this line's item.",
            "nullable": true
          },
          "qtyShippedLate": {
            "type": "number",
            "description": "Quantity shipped after Ship By Date.",
            "format": "double",
            "nullable": true
          },
          "dollarsShippedLate": {
            "type": "number",
            "description": "Extended dollar value shipped late.",
            "format": "double",
            "nullable": true
          },
          "qtyShippedOnTime": {
            "type": "number",
            "description": "Quantity shipped on or before Ship By Date.",
            "format": "double",
            "nullable": true
          },
          "dollarsShippedOnTime": {
            "type": "number",
            "description": "Extended dollar value shipped on time.",
            "format": "double",
            "nullable": true
          },
          "createdByName": {
            "type": "string",
            "description": "User who created the shipment record.",
            "nullable": true
          },
          "modifiedByName": {
            "type": "string",
            "description": "Most recent user to modify the shipment record.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "One row of the pre-joined shipping reporting view (`rpt.View_ExposedReportingData_Shipping`):\none shipment line, carrying the line's quantities and the source sales-order line's pre-computed\ndollar values. Property names are clean identifiers; the query aliases each source column\n(e.g. `[$ Shipped]`) to the matching property so Dapper can bind it."
      },
      "DtoReportingTimeClockReportFilter": {
        "type": "object",
        "properties": {
          "startedFrom": {
            "type": "string",
            "description": "Inclusive lower bound applied to the entry's clock-in time (Started). Null means no lower bound.",
            "format": "date-time",
            "nullable": true
          },
          "startedTo": {
            "type": "string",
            "description": "Inclusive upper bound applied to the entry's clock-in time (Started); the whole `to` day is\nincluded. Null means no upper bound.",
            "format": "date-time",
            "nullable": true
          },
          "employee": {
            "type": "string",
            "description": "Optional exact-match filter on the operator / employee name. Null means no employee filter.",
            "nullable": true
          },
          "type": {
            "type": "string",
            "description": "Optional exact-match filter on the timer-entry type (ClockIn or Break). Null means no type filter.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Constrained filter for the time-clock reporting list endpoint. Every field maps to a fixed,\nserver-controlled column; values are always bound as Dapper parameters and never concatenated\ninto SQL."
      },
      "DtoReportingTimeClockReportRow": {
        "type": "object",
        "properties": {
          "employee": {
            "type": "string",
            "description": "Operator / employee name.",
            "nullable": true
          },
          "overridden": {
            "type": "string",
            "description": "\"Yes\" when the entry's start or stop time was manually overridden, otherwise \"No\".",
            "nullable": true
          },
          "type": {
            "type": "string",
            "description": "Timer-entry type classification (ClockIn or Break).",
            "nullable": true
          },
          "started": {
            "type": "string",
            "description": "Clock-in timestamp.",
            "format": "date-time",
            "nullable": true
          },
          "stopped": {
            "type": "string",
            "description": "Clock-out timestamp; null if not yet stopped.",
            "format": "date-time",
            "nullable": true
          },
          "shiftHoursWorked": {
            "type": "number",
            "description": "Computed hours between Started and Stopped.",
            "format": "double",
            "nullable": true
          },
          "reason": {
            "type": "string",
            "description": "Reason code for the entry, when applicable.",
            "nullable": true
          },
          "clockCode": {
            "type": "string",
            "description": "Clock-code tag attached to the entry, when applicable.",
            "nullable": true
          },
          "createdByName": {
            "type": "string",
            "description": "User who created the entry.",
            "nullable": true
          },
          "modifiedByName": {
            "type": "string",
            "description": "Most recent user to modify the entry.",
            "nullable": true
          },
          "startedOnOverrideByName": {
            "type": "string",
            "description": "User who overrode the start time, when applicable.",
            "nullable": true
          },
          "stoppedOnOverrideByName": {
            "type": "string",
            "description": "User who overrode the stop time, when applicable.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "One row of the pre-joined time-clock reporting view (`rpt.View_ExposedReportingData_TimeClock`):\none timer entry (clock-in or break), carrying clock-in/clock-out times, computed shift hours, reason\nand clock codes, and override-audit context. Property names are clean identifiers; the query aliases\neach source column (e.g. `[Shift Hours Worked]`) to the matching property so Dapper can bind it."
      },
      "DtoTimerAttributionDetails": {
        "required": [
          "timeInSeconds",
          "timeInSecondsWeighted"
        ],
        "type": "object",
        "properties": {
          "timeInSeconds": {
            "type": "number",
            "description": "Elapsed time.",
            "format": "double"
          },
          "timeInSecondsWeighted": {
            "type": "number",
            "description": "Time in seconds (after using the multiplier/weighted).",
            "format": "double"
          },
          "rateHourlyInPrimaryCurrency": {
            "type": "number",
            "description": "Rate in primary currency.",
            "format": "double",
            "nullable": true
          },
          "cost": {
            "type": "number",
            "description": "Cost. This value will always reflect the current calculated cost. What this means is that overriding start/stop times would affect this value.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Cost and time attribution for a timer."
      },
      "DtoTimerSegmentAttributionDetails": {
        "required": [
          "timeInSeconds",
          "timeInSecondsWeighted"
        ],
        "type": "object",
        "properties": {
          "timeInSeconds": {
            "type": "number",
            "description": "Elapsed time. If the segment is not stopped, this value will be calculated as of now.",
            "format": "double"
          },
          "timeInSecondsWeighted": {
            "type": "number",
            "description": "Time in seconds (after using the multiplier/weighted).",
            "format": "double"
          },
          "multiplier": {
            "type": "number",
            "description": "With timers, because segments account for overlapping operations, we must account for the percentage to attribute to this segment.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Time attribution for a timer segment."
      },
      "DtoUserJobOpTimer": {
        "type": "object",
        "properties": {
          "jobId": {
            "type": "string",
            "description": "The job id",
            "nullable": true
          },
          "jobName": {
            "type": "string",
            "description": "The job name",
            "nullable": true
          },
          "operationId": {
            "type": "string",
            "description": "The operation id",
            "nullable": true
          },
          "operationName": {
            "type": "string",
            "description": "The operation name",
            "nullable": true
          },
          "elapsedTimeInSeconds": {
            "type": "number",
            "description": "The time working on the operation in seconds",
            "format": "double"
          },
          "estimatedTimeToCompleteInSeconds": {
            "type": "number",
            "description": "The estimate time to complete this operation in seconds.",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "A job timer"
      },
      "DtoVendorDtoWithDetails": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Id"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name to give the vendor. Must be unique to all active vendors."
          },
          "vendorCode": {
            "minLength": 1,
            "type": "string",
            "description": "Unique identifier for this vendor.",
            "nullable": true
          },
          "paymentTermsId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Payment terms identifier. Please reference /api/payment-terms endpoint.",
            "nullable": true
          },
          "paymentTerms": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "notes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "General notes associated to this vendor",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "External references associated with this entity.",
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined on this entity.",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "description": "The currency of the vendor.",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "Approval/quality status of the vendor. One of: Approved, Probation, Monitor, Disqualified, Other.",
            "nullable": true
          },
          "active": {
            "type": "boolean",
            "description": "Whether the vendor is active."
          },
          "leadTime": {
            "type": "integer",
            "description": "Default lead time in days.",
            "format": "int32",
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "Vendor website URL.",
            "format": "uri",
            "nullable": true
          },
          "vendorSince": {
            "type": "string",
            "description": "Date the vendor relationship began.",
            "format": "date-time",
            "nullable": true
          },
          "addresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VendorAddressDto"
            },
            "description": "The addresses associated with the vendor"
          }
        },
        "additionalProperties": false,
        "description": "A vendor"
      },
      "EquipmentDto": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Identifying name. Must be unique."
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Description.",
            "nullable": true
          },
          "workCenterId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "WorkCenter identifier. Please reference /api/work-centers endpoint.",
            "nullable": true
          },
          "manufacturer": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Manufacturer.",
            "nullable": true
          },
          "modelNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Model number.",
            "nullable": true
          },
          "serialNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Serial number.",
            "nullable": true
          },
          "canRunUnattended": {
            "type": "boolean",
            "description": "Indicates if this equipment can be run unattended. This allows the portion of an operation\nthat utilizes this equipment to be scheduled outside of a shift.",
            "nullable": true
          },
          "unlimitedCapacity": {
            "type": "boolean",
            "description": "Indicates if this equipment can support multiple operations simultaneously.",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/EquipmentStatus"
          },
          "notes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Notes associated to the equipment.",
            "nullable": true
          },
          "deleted": {
            "type": "boolean",
            "description": "Indicates whether this equipment has been deleted"
          }
        },
        "additionalProperties": false,
        "description": "Equipment definition."
      },
      "EquipmentRequestFindParameters": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter equipment based on matching ids.",
            "nullable": true
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter equipment based on their name.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding equipment."
      },
      "EquipmentStatus": {
        "enum": [
          "good",
          "poor",
          "bad",
          "outOfService"
        ],
        "type": "string",
        "description": "Equipment status"
      },
      "FulcrumProDomainReference": {
        "type": "object",
        "properties": {
          "primaryKeyId": {
            "type": "integer",
            "format": "int32"
          },
          "id": {
            "maxLength": 36,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "name": {
            "maxLength": 500,
            "minLength": 0,
            "type": "string",
            "nullable": true
          },
          "createdUtc": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "FulcrumProductMaterialsFulcrumLengthUnits": {
        "enum": [
          "inch",
          "foot",
          "yard",
          "millimeter",
          "centimeter",
          "meter"
        ],
        "type": "string"
      },
      "FulcrumProductMaterialsMaterialForms": {
        "enum": [
          "sheet",
          "plate",
          "roundBar",
          "flatBar",
          "channel",
          "squareTube",
          "angle",
          "treadPlate",
          "hexBar",
          "squareBar",
          "teeBar",
          "hBeam",
          "rectTube",
          "pipe",
          "wBeam",
          "sBeam",
          "roundTube",
          "rectBar",
          "wideBar",
          "reinforcingBar",
          "halfRoundBar",
          "halfOvalBar"
        ],
        "type": "string"
      },
      "InProcessTrackingFieldTypeDto": {
        "required": [
          "dataType",
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name of the in process tracking field"
          },
          "dataType": {
            "$ref": "#/components/schemas/DomainInProcessTrackingFieldDataType"
          },
          "description": {
            "type": "string",
            "description": "Description of the in process tracking field"
          },
          "dropDownOptions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Options when the data type is a list type",
            "nullable": true
          },
          "unitTypeName": {
            "type": "string",
            "description": "The type of quantity when the data type is number",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Describes the type of in process tracking field"
      },
      "InProcessTrackingFieldTypeRequestFindParameters": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter in process tracking fields based on their name.",
            "nullable": true
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter in process tracking fields based on matching ids.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding in process tracking fields."
      },
      "InventoryDto": {
        "required": [
          "id",
          "itemId",
          "itemNumber",
          "onHandQuantity",
          "quantity"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "lotId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The lot Iid associated to this entity.",
            "nullable": true
          },
          "locationId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The location id associated to this entity.",
            "nullable": true
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The quantity of items in this inventory.",
            "format": "double"
          },
          "onHandQuantity": {
            "minimum": 0,
            "type": "number",
            "description": "The on-hand quantity of items in this inventory.",
            "format": "double"
          },
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The item id associated to this entity."
          },
          "itemNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The number/sku/short name of the item."
          },
          "itemDescription": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The description of the item",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An item inventory record."
      },
      "InventoryEnumEventSourceType": {
        "enum": [
          "purchaseOrder",
          "job",
          "shipment",
          "shipmentLineItem",
          "shipping",
          "receiving",
          "item",
          "workOrder",
          "salesOrder",
          "jobOperation",
          "workOrderOperation",
          "fulfillment",
          "itemToMakeMaterialRemnant",
          "poRcvValueAdj"
        ],
        "type": "string",
        "description": "Indicator for the initial source of the event."
      },
      "InventoryEventDetailsDto": {
        "type": "object",
        "properties": {
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "External references associated with this entity.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Inventory event details.\nAdditional metadata for Inventory Events."
      },
      "InventoryEventDetailsUpdateDto": {
        "type": "object",
        "properties": {
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Details of an inventory event to be updated"
      },
      "InventoryEventRequestFindParameters": {
        "type": "object",
        "properties": {
          "createdBeforeUtc": {
            "type": "string",
            "description": "Filters events created before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.",
            "format": "date-time",
            "nullable": true
          },
          "createdAfterUtc": {
            "type": "string",
            "description": "Filters events created after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.",
            "format": "date-time",
            "nullable": true
          },
          "types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InventoryEventType"
            },
            "description": "Inventory event type(s).",
            "nullable": true
          },
          "secondaryTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InventoryEventSecondaryType"
            },
            "description": "Inventory event secondary type(s).",
            "nullable": true
          },
          "sourceTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InventoryEnumEventSourceType"
            },
            "description": "Inventory event source type(s).",
            "nullable": true
          },
          "itemIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Item id. Please reference /api/items endpoint.",
            "nullable": true
          },
          "itemToMakeIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Item id. Please reference /api/items endpoint.",
            "nullable": true
          },
          "reservedForTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DomainCommonEntityType"
            },
            "description": "Inventory reservation types.",
            "nullable": true
          },
          "reservedForIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Inventory reservation ids.",
            "nullable": true
          },
          "inventoryEventIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Inventory event ids.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding inventory."
      },
      "InventoryEventSecondaryType": {
        "enum": [
          "pick",
          "receive",
          "override",
          "revert",
          "deposit",
          "create",
          "consume",
          "ship",
          "sold",
          "transferOut",
          "transferIn",
          "found",
          "expired",
          "damaged",
          "lost",
          "returnVendor",
          "returnStock",
          "receivedNoPo",
          "returnIncrease",
          "returnDecrease",
          "otherIncrease",
          "otherDecrease",
          "scrap",
          "waste",
          "transferredFromSalesOrder",
          "overrideItemValue",
          "transferFromLot",
          "transferToLot",
          "stockAdjustmentIncrease",
          "stockAdjustmentDecrease",
          "stockTake"
        ],
        "type": "string",
        "description": "Secondary, verbose description for an event."
      },
      "InventoryEventType": {
        "enum": [
          "pick",
          "receive",
          "revert",
          "adjustment",
          "setItemValue",
          "eventOverride"
        ],
        "type": "string",
        "description": "Primary inventory event type."
      },
      "InventoryEventsInventoryEventDto": {
        "required": [
          "id",
          "quantity",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Id"
          },
          "actionDate": {
            "type": "string",
            "description": "The date of the action.",
            "format": "date-time",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/InventoryEventType"
          },
          "secondaryType": {
            "$ref": "#/components/schemas/InventoryEventSecondaryType"
          },
          "sourceType": {
            "$ref": "#/components/schemas/InventoryEnumEventSourceType"
          },
          "sourceName": {
            "type": "string",
            "description": "Source name.",
            "nullable": true
          },
          "sourceEntityId": {
            "type": "string",
            "description": "Source entity id",
            "nullable": true
          },
          "sourceRelatedType": {
            "$ref": "#/components/schemas/InventoryEnumEventSourceType"
          },
          "sourceRelatedEntityId": {
            "type": "string",
            "description": "Related source entity id",
            "nullable": true
          },
          "sourceItemToMakeId": {
            "type": "string",
            "description": "Source item to make id. Please reference /api/jobs/{jobId}/items-to-make endpoint.",
            "nullable": true
          },
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item id key identifier. Please reference /api/items endpoint.",
            "nullable": true
          },
          "itemToMakeId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Item to make id key identifier. Please reference /api/jobs/{jobId}/items-to-make endpoint.",
            "nullable": true
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "Quantity.",
            "format": "double"
          },
          "laborValue": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "machineValue": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "outsideProcessingValue": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "materialValue": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "totalValue": {
            "$ref": "#/components/schemas/CommonCostDto"
          },
          "reservedForId": {
            "maxLength": 36,
            "minLength": 24,
            "type": "string",
            "description": "This is the id for the underlying entity that this inventory is reserved for.",
            "nullable": true
          },
          "reservedForType": {
            "$ref": "#/components/schemas/DomainCommonEntityType"
          },
          "lotId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The lot this inventory is allocated to. Please reference /api/inventory-lots endpoint.",
            "nullable": true
          },
          "locationId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The location this inventory is allocated to. Please reference /api/locations endpoint.",
            "nullable": true
          },
          "revertInventoryEventId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "If the event is intended to \"revert\" a previous transaction, this value contains the original event.",
            "nullable": true
          },
          "note": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "A note associated to this event.",
            "nullable": true
          },
          "resultEffects": {
            "$ref": "#/components/schemas/DtoInventoryEventsInventoryEventChangeDetails"
          },
          "details": {
            "$ref": "#/components/schemas/InventoryEventDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "An inventory event"
      },
      "InventoryLotCreateDto": {
        "required": [
          "itemId"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name of the lot. It is not guaranteed to be unique inventory-wide, but only within an item.",
            "nullable": true
          },
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The item id that is associated to this lot. Please reference /api/items endpoint."
          },
          "expirationDate": {
            "type": "string",
            "description": "The date that this lot is supposed to expire.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Details of the inventory lot to be created."
      },
      "InventoryLotDto": {
        "required": [
          "custom",
          "id",
          "itemId",
          "name",
          "system"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name of the lot. It is not guaranteed to be unique inventory-wide, but only within an item."
          },
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The item id that is associated to this lot. Please reference /api/items endpoint."
          },
          "quantity": {
            "type": "number",
            "description": "Quantity associated to this lot.",
            "format": "double"
          },
          "system": {
            "type": "boolean",
            "description": "Designates if this is a system-generated lot."
          },
          "custom": {
            "type": "boolean",
            "description": "Designates if this item is customized."
          },
          "expirationDate": {
            "type": "string",
            "description": "The date that this lot is supposed to expire.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Inventory lot definition."
      },
      "InventoryLotRequestFindParameters": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter lots based on their name.",
            "nullable": true
          },
          "itemIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Item ids to match. Please reference /api/items endpoint.",
            "nullable": true
          },
          "system": {
            "type": "boolean",
            "description": "Filter by whether the lot is considered a system-generated lot.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding inventory lots."
      },
      "InventoryOverrideDto": {
        "required": [
          "itemId",
          "quantity"
        ],
        "type": "object",
        "properties": {
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item identifier."
          },
          "quantity": {
            "type": "number",
            "description": "The quantity to set the item's inventory level to.",
            "format": "double"
          },
          "lotId": {
            "type": "string",
            "description": "The lot identifier to apply this override to",
            "nullable": true
          },
          "locationId": {
            "type": "string",
            "description": "The location identifier to apply this override to.  ```null``` signifies no location.",
            "nullable": true
          },
          "note": {
            "type": "string",
            "description": "The note to add to the override transaction.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Override event for item inventory"
      },
      "InventoryPickDto": {
        "required": [
          "itemId",
          "quantity",
          "secondaryType"
        ],
        "type": "object",
        "properties": {
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item identifier. Please reference /api/items endpoint."
          },
          "secondaryType": {
            "$ref": "#/components/schemas/InventoryPickEventSecondaryType"
          },
          "quantity": {
            "type": "number",
            "description": "Quantity of the item to pick.",
            "format": "double"
          },
          "locationId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Location id that inventory is picked from. Please reference /api/locations endpoint",
            "nullable": true
          },
          "lotId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Lot identifier for this block of inventory. Please reference /api/inventory-lots endpoint",
            "nullable": true
          },
          "note": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Notes associated to this transaction.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Pick event for item inventory."
      },
      "InventoryPickEventSecondaryType": {
        "enum": [
          "pick",
          "consume",
          "scrap",
          "stockAdjustmentDecrease",
          "otherDecrease"
        ],
        "type": "string",
        "description": "Secondary event type specifically for picking."
      },
      "InventoryReceiveDto": {
        "required": [
          "itemId",
          "quantity",
          "secondaryType"
        ],
        "type": "object",
        "properties": {
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item identifier. Please reference /api/items endpoint."
          },
          "secondaryType": {
            "$ref": "#/components/schemas/InventoryReceiveEventSecondaryType"
          },
          "quantity": {
            "type": "number",
            "description": "Quantity of the item to receive.",
            "format": "double"
          },
          "locationId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Location id that inventory is received into. Please reference /api/locations endpoint",
            "nullable": true
          },
          "lotId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Lot identifier for this block of inventory. Please reference /api/inventory-lots endpoint",
            "nullable": true
          },
          "lotNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Lot name.",
            "nullable": true
          },
          "note": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Notes associated to this transaction.",
            "nullable": true
          },
          "laborValue": {
            "minimum": 0,
            "type": "number",
            "description": "Labor value associated (per unit).",
            "format": "double",
            "nullable": true
          },
          "machineValue": {
            "minimum": 0,
            "type": "number",
            "description": "Machine value associated (per unit).",
            "format": "double",
            "nullable": true
          },
          "outsideProcessingValue": {
            "minimum": 0,
            "type": "number",
            "description": "Outside processing value associated (per unit).",
            "format": "double",
            "nullable": true
          },
          "materialValue": {
            "minimum": 0,
            "type": "number",
            "description": "Material value associated (per unit).",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Receive event for item inventory."
      },
      "InventoryReceiveEventSecondaryType": {
        "enum": [
          "receive",
          "found",
          "stockAdjustmentIncrease",
          "otherIncrease"
        ],
        "type": "string",
        "description": "Secondary event type specifically for receiving."
      },
      "InventoryRequestFindParameters": {
        "type": "object",
        "properties": {
          "lotIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter inventory based on lot ids.",
            "nullable": true
          },
          "itemIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter inventory based on item ids.",
            "nullable": true
          },
          "locationIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter inventory based on location ids.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding inventory."
      },
      "InventoryRequestItemInventoryPickEvent": {
        "required": [
          "secondaryType"
        ],
        "type": "object",
        "properties": {
          "secondaryType": {
            "$ref": "#/components/schemas/InventoryEventSecondaryType"
          },
          "lotId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Lot identifier for this block of inventory.",
            "nullable": true
          },
          "locationId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Location id that inventory is placed into.",
            "nullable": true
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "Location id that inventory is placed into.",
            "format": "double",
            "nullable": true
          },
          "actionDate": {
            "type": "string",
            "description": "The moment in time where this inventory event action occurs. If not provided, this will default to the current date/time.",
            "format": "date-time",
            "nullable": true
          },
          "source": {
            "$ref": "#/components/schemas/InventoryEnumEventSourceType"
          },
          "url": {
            "type": "string",
            "description": "The source url of the event.",
            "format": "uri",
            "nullable": true
          },
          "relatedSource": {
            "$ref": "#/components/schemas/InventoryEnumEventSourceType"
          },
          "relatedEntityId": {
            "type": "string",
            "description": "Entity id for tying this event back to a related entity.",
            "nullable": true
          },
          "note": {
            "type": "string",
            "description": "Notes associated to this transaction.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Pick event for item inventory."
      },
      "InventoryRequestItemInventoryReceiveEvent": {
        "required": [
          "secondaryType"
        ],
        "type": "object",
        "properties": {
          "secondaryType": {
            "$ref": "#/components/schemas/InventoryEventSecondaryType"
          },
          "lotId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Lot identifier for this block of inventory.",
            "nullable": true
          },
          "locationId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Location id that inventory is placed into.",
            "nullable": true
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "Location id that inventory is placed into.",
            "format": "double",
            "nullable": true
          },
          "actionDate": {
            "type": "string",
            "description": "The moment in time where this inventory event action occurs. If not provided, this will default to the current date/time.",
            "format": "date-time",
            "nullable": true
          },
          "source": {
            "$ref": "#/components/schemas/InventoryEnumEventSourceType"
          },
          "url": {
            "type": "string",
            "description": "The source url of the event.",
            "format": "uri",
            "nullable": true
          },
          "relatedSource": {
            "$ref": "#/components/schemas/InventoryEnumEventSourceType"
          },
          "relatedEntityId": {
            "type": "string",
            "description": "Entity id for tying this event back to a related entity.",
            "nullable": true
          },
          "note": {
            "type": "string",
            "description": "Notes associated to this transaction.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Receive event for item inventory."
      },
      "InventoryTransactionDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The id of the transaction",
            "nullable": true
          },
          "date": {
            "type": "string",
            "description": "The date of the transaction",
            "format": "date-time"
          },
          "type": {
            "$ref": "#/components/schemas/InventoryEventType"
          },
          "secondaryType": {
            "$ref": "#/components/schemas/InventoryEventSecondaryType"
          },
          "item": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "location": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "lot": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "quantity": {
            "type": "number",
            "description": "The quantity of the transaction",
            "format": "double"
          },
          "valueChange": {
            "type": "number",
            "description": "The item value change caused by the transaction",
            "format": "double"
          },
          "qtyChange": {
            "type": "number",
            "description": "The item quantity change caused by the transaction",
            "format": "double"
          },
          "note": {
            "type": "string",
            "description": "The note on the transaction",
            "nullable": true
          },
          "value": {
            "type": "number",
            "description": "The per-unit value of the transaction",
            "format": "double",
            "nullable": true
          },
          "totalValue": {
            "type": "number",
            "description": "The total value of the transaction",
            "format": "double",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "An inventory transaction"
      },
      "InventoryTransactionsListParameters": {
        "type": "object",
        "properties": {
          "itemIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter inventory transactions based on item identifiers.",
            "nullable": true
          },
          "dateRange": {
            "$ref": "#/components/schemas/DtoCommonDateRangeFilter"
          },
          "sourceType": {
            "$ref": "#/components/schemas/V2InventoryDataEventSourceType"
          },
          "relatedEntityType": {
            "$ref": "#/components/schemas/V2InventoryDataEventSourceType"
          },
          "relatedEntityId": {
            "type": "string",
            "description": "The transaction's related entity identifier",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching inventory transactions"
      },
      "InvoiceDepositAdjustmentLineItemDto": {
        "required": [
          "accountingDetails",
          "id",
          "price"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose name for this entity.",
            "nullable": true
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose description for this entity.",
            "nullable": true
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.",
            "format": "double"
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "salesOrderLineItemId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Related sales order line item id.",
            "nullable": true
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a deposit adjustment line item on an invoice."
      },
      "InvoiceDepositLineItemDto": {
        "required": [
          "accountingDetails",
          "amount",
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose name for this entity.",
            "nullable": true
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose description for this entity.",
            "nullable": true
          },
          "amount": {
            "minimum": 0,
            "type": "number",
            "description": "The amount of the deposit.",
            "format": "double"
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "salesOrderLineItemId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Related sales order line item id.",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a deposit line item on an invoice."
      },
      "InvoiceDiscountLineItemDto": {
        "required": [
          "accountingDetails",
          "amount",
          "id",
          "isPercentage",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name of the discount line."
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The description of the discount line.",
            "nullable": true
          },
          "isPercentage": {
            "type": "boolean",
            "description": "Indicates whether FulcrumProduct.PublicApi.Dto.Invoice.DiscountLineItem.DiscountLineItemDto.Amount discount is percentage based (else, it's an absolute amount)."
          },
          "amount": {
            "minimum": 0,
            "type": "number",
            "description": "The amount of the discount.",
            "format": "double"
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          },
          "price": {
            "type": "number",
            "description": "The calculated amount of this discount.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a discount line item on an invoice."
      },
      "InvoiceDto": {
        "required": [
          "customerId",
          "id",
          "number",
          "status",
          "subtotal",
          "total"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "number": {
            "minimum": 0,
            "type": "integer",
            "description": "Number",
            "format": "int32"
          },
          "status": {
            "$ref": "#/components/schemas/InvoiceStatusEnum"
          },
          "customerId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The id of the customer that the invoice is for. Please reference /api/customers endpoint."
          },
          "currencyInfo": {
            "$ref": "#/components/schemas/CurrencyInfoDto"
          },
          "issueDate": {
            "type": "string",
            "description": "Invoice issued date indicates when the invoice was sent to the customer.",
            "format": "date-time",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "External references associated with this entity.",
            "nullable": true
          },
          "paymentTermsId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Payment terms key identifier. Please reference /api/payment-terms endpoint.",
            "nullable": true
          },
          "paymentTerms": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "companyInfoId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Company Information Id;",
            "nullable": true
          },
          "salesOrderId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Sales order identifier. Please reference /api/sales-orders endpoint.",
            "nullable": true
          },
          "customerPONumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Customer PO number.",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "description": "Invoice due date.",
            "format": "date-time",
            "nullable": true
          },
          "total": {
            "minimum": 0,
            "type": "number",
            "description": "The final amount due, calculated as the sum of all item costs, taxes, fees, and any discounts applied in primary currency.",
            "format": "double"
          },
          "subtotal": {
            "minimum": 0,
            "type": "number",
            "description": "The sum of all item costs before taxes and discounts are applied in primary currency.",
            "format": "double"
          },
          "lineItemsTotal": {
            "type": "number",
            "description": "The summation of the line item amounts due.",
            "format": "double"
          },
          "notesToCustomer": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "A field for the seller to provide additional details or instructions for the customer relating to the order.",
            "nullable": true
          },
          "billingAddress": {
            "$ref": "#/components/schemas/CommonAddressDto"
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined on this entity.",
            "nullable": true
          },
          "isDeposit": {
            "type": "boolean",
            "description": "Is deposit invoice"
          },
          "deleted": {
            "type": "boolean",
            "description": "Indicates whether this invoice has been deleted"
          }
        },
        "additionalProperties": false,
        "description": "Represents an invoice"
      },
      "InvoiceFeeLineItemDto": {
        "required": [
          "accountingDetails",
          "id",
          "price"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose name for this entity.",
            "nullable": true
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose description for this entity.",
            "nullable": true
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double",
            "nullable": true
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.",
            "format": "double"
          },
          "unitOfMeasure": {
            "$ref": "#/components/schemas/CommonEnumLineItemUomEnum"
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this fee is taxable.",
            "nullable": true
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Dictate if the tax rate is overridden.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier.",
            "nullable": true
          },
          "taxRate": {
            "type": "number",
            "description": "Tax code to use for this entity. If a FulcrumProduct.PublicApi.Dto.Invoice.FeeLineItem.FeeLineItemDto.TaxCodeId is provided and FulcrumProduct.PublicApi.Dto.Invoice.FeeLineItem.FeeLineItemDto.OverrideTaxRate = true, the provided FulcrumProduct.PublicApi.Dto.Invoice.FeeLineItem.FeeLineItemDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "salesOrderLineItemId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Related sales order line item id.",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a fee line item on an invoice."
      },
      "InvoiceFeeLineItemUpdateDto": {
        "type": "object",
        "properties": {
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a fee line item on an invoice."
      },
      "InvoiceLineItemDto": {
        "required": [
          "accountingDetails",
          "discountedPrice",
          "discountedSubtotal",
          "id",
          "price",
          "quantity",
          "subtotal",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "type": {
            "$ref": "#/components/schemas/InvoiceLineItemTypeEnum"
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double"
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.",
            "format": "double"
          },
          "discountedPrice": {
            "minimum": 0,
            "type": "number",
            "description": "The discounted line item price.",
            "format": "double"
          },
          "subtotal": {
            "minimum": 0,
            "type": "number",
            "description": "The subtotal for this line item which generally represents quantity * price.",
            "format": "double",
            "readOnly": true
          },
          "discountedSubtotal": {
            "minimum": 0,
            "type": "number",
            "description": "The discounted subtotal for this line item which generally represents quantity * discountedPrice.",
            "format": "double",
            "readOnly": true
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose name for this entity.",
            "nullable": true
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Line item description.",
            "nullable": true
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The key identifier for the tax code for the line item.",
            "nullable": true
          },
          "salesOrderLineItemId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Related sales order line item id.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this line item is taxable.",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a generic line item on an invoice."
      },
      "InvoiceLineItemTypeEnum": {
        "enum": [
          "part",
          "additionalFee",
          "shipping",
          "discount",
          "tax",
          "deposit",
          "depositAdjustment",
          "refund",
          "blanket"
        ],
        "type": "string",
        "description": "Invoice line item type"
      },
      "InvoicePartLineItemDto": {
        "required": [
          "accountingDetails",
          "discountedPrice",
          "id",
          "isTaxable",
          "itemId",
          "name",
          "preDiscountSubTotal",
          "price",
          "quantity",
          "subTotal"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The line item name."
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity.",
            "format": "double"
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.",
            "format": "double"
          },
          "discountedPrice": {
            "minimum": 0,
            "type": "number",
            "description": "The discounted line item price.",
            "format": "double"
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Dictate if the tax rate is overridden.",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this line item is taxable."
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.Invoice.PartLineItem.PartLineItemDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.Invoice.PartLineItem.PartLineItemDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item id associated with this line item."
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The part line item description.  Defaults to the item's description if none specified.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "salesOrderLineItemId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Related sales order line item id.",
            "nullable": true
          },
          "subTotal": {
            "minimum": 0,
            "type": "number",
            "description": "Total line item cost, including applicable discounts",
            "format": "double"
          },
          "preDiscountSubTotal": {
            "minimum": 0,
            "type": "number",
            "description": "Total line item cost, before discounts",
            "format": "double"
          },
          "isPercentageDiscount": {
            "type": "boolean",
            "description": "Indicates whether FulcrumProduct.PublicApi.Dto.Invoice.PartLineItem.PartLineItemDto.DiscountAmount discount is percentage based (else, it's an absolute amount).",
            "nullable": true
          },
          "discountAmount": {
            "type": "number",
            "description": "The amount of the discount.",
            "format": "double",
            "nullable": true
          },
          "customerPartNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The customer's known part line item number.",
            "nullable": true
          },
          "customerPartDescription": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The customer's known part line item description.",
            "nullable": true
          },
          "shipmentIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The shipment identifiers that were invoiced."
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a part line item on a sales order."
      },
      "InvoicePartLineItemUpdateDto": {
        "type": "object",
        "properties": {
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a part line item on an invoice."
      },
      "InvoiceRefundLineItemDto": {
        "required": [
          "accountingDetails",
          "id",
          "itemId",
          "name",
          "price",
          "quantity",
          "salesOrderLineItemId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double"
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.",
            "format": "double"
          },
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item id associated with this line item."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name of the line item.  Defaults to the item's description if none specified."
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The refund line item description.  Defaults to the item's description if none specified.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "salesOrderLineItemId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Id that references the sales order line item that was refunded."
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a refund line item on a sales order."
      },
      "InvoiceRefundLineItemUpdateDto": {
        "type": "object",
        "properties": {
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a refund line item on an invoice."
      },
      "InvoiceRequestFindParameters": {
        "type": "object",
        "properties": {
          "numbers": {
            "maxItems": 500,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Filter invoices to only given numbers",
            "nullable": true
          },
          "externalReference": {
            "$ref": "#/components/schemas/CommonExternalReferenceFindDto"
          },
          "status": {
            "$ref": "#/components/schemas/InvoiceStatusEnum"
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding invoices."
      },
      "InvoiceRequestUpdateStatus": {
        "required": [
          "status"
        ],
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/InvoiceStatusEnum"
          },
          "paidDate": {
            "type": "string",
            "description": "The date that the invoice was paid.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Update an invoice status."
      },
      "InvoiceShippingChargeLineItemDto": {
        "required": [
          "accountingDetails",
          "amount",
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name of the shipping charge line."
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The description of the shipping charge line.",
            "nullable": true
          },
          "amount": {
            "minimum": 0,
            "type": "number",
            "description": "The amount of the charge.",
            "format": "double"
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this line item is taxable.",
            "nullable": true
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Dictate if the tax rate is overridden.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.Invoice.ShippingChargeLineItem.ShippingChargeLineItemDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.Invoice.ShippingChargeLineItem.ShippingChargeLineItemDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "salesOrderLineItemId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Related sales order line item id.",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a shipping charge line item on an invoice."
      },
      "InvoiceStatusEnum": {
        "enum": [
          "new",
          "needsApproval",
          "approved",
          "issued",
          "paid"
        ],
        "type": "string",
        "description": "Invoice status"
      },
      "InvoiceTaxLineItemAvalaraOptions": {
        "type": "object",
        "properties": {
          "address": {
            "$ref": "#/components/schemas/CommonAddressDto"
          }
        },
        "additionalProperties": false,
        "description": "Options for use with Avalara (if enabled)."
      },
      "InvoiceTaxLineItemDto": {
        "required": [
          "accountingDetails",
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose description for this entity.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax code to use for this entity. If a FulcrumProduct.PublicApi.Dto.Invoice.TaxLineItem.TaxLineItemDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.Invoice.TaxLineItem.TaxLineItemDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "avalaraOptions": {
            "$ref": "#/components/schemas/InvoiceTaxLineItemAvalaraOptions"
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "Tax amount applied at this rate across the entire invoice.",
            "format": "double",
            "nullable": true
          },
          "salesOrderLineItemId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Related sales order line item id.",
            "nullable": true
          },
          "taxCodeEditable": {
            "type": "boolean",
            "description": "Indicates if the tax code used is editable.",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Indicates if the tax code used is editable.",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a tax line item on an invoice."
      },
      "InvoiceUpdateDto": {
        "type": "object",
        "properties": {
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents an update on an invoice."
      },
      "ItemCanMakeDto": {
        "type": "object",
        "properties": {
          "canMakeFromOnHand": {
            "type": "number",
            "description": "The quantity that can be made from on-hand inventory of subcomponents of this item.\nNull if the planning cache has not yet been computed.",
            "format": "double",
            "nullable": true
          },
          "canMakeFromAvailable": {
            "type": "number",
            "description": "The quantity that can be made from available inventory (on-hand + incoming supply) of subcomponents of this item.\nNull if the planning cache has not yet been computed.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Indicates how much of this item can be produced from its subcomponent inventory.\nOnly applicable to make items."
      },
      "ItemCreateDto": {
        "required": [
          "itemOrigin",
          "number",
          "unitOfMeasureName",
          "unitTypeName"
        ],
        "type": "object",
        "properties": {
          "number": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name to give the item. Must be unique to all active items."
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The verbose description to give the item."
          },
          "revision": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Revision name",
            "nullable": true
          },
          "itemOrigin": {
            "$ref": "#/components/schemas/DomainItemsAndInventoryItemOrigin"
          },
          "unitTypeName": {
            "minLength": 1,
            "type": "string",
            "description": "The unit of measure type, ex: Pieces, Volume, Weight, Area"
          },
          "unitOfMeasureName": {
            "minLength": 1,
            "type": "string",
            "description": "The unit of measure name. Options available depend on the selected UnitTypeName. For Pieces, you might have a UOM of Piece, Set or Case. For Volume options include Liter, Milliliter, etc."
          },
          "isSellable": {
            "type": "boolean",
            "description": "Define if this item is able to be sold/sellable.",
            "nullable": true
          },
          "isSingleUseItem": {
            "type": "boolean",
            "description": "Indicate if this item is intended for single use.",
            "nullable": true
          },
          "isLotTracked": {
            "type": "boolean",
            "description": "Indicate if this item is going to be lot-tracked.",
            "nullable": true
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "accountingCode2Id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "materialCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item material code key identifier. Please reference /api/material-codes endpoint.",
            "nullable": true
          },
          "categoryId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item category code key identifier. Please reference /api/item-categories endpoint.",
            "nullable": true
          },
          "gradeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item grade code key identifier. Please reference /api/grade-codes endpoint.",
            "nullable": true
          },
          "shapeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item shape code key identifier. Please reference /api/shape-codes endpoint.",
            "nullable": true
          },
          "gaugeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item gauge code key identifier. Please reference /api/gauge-codes endpoint.",
            "nullable": true
          },
          "width": {
            "minimum": 0,
            "type": "number",
            "description": "Item width",
            "format": "double",
            "nullable": true
          },
          "height": {
            "minimum": 0,
            "type": "number",
            "description": "Item height",
            "format": "double",
            "nullable": true
          },
          "length": {
            "minimum": 0,
            "type": "number",
            "description": "Item length",
            "format": "double",
            "nullable": true
          },
          "weight": {
            "minimum": 0,
            "type": "number",
            "description": "Item weight",
            "format": "double",
            "nullable": true
          },
          "minimumStockOnHand": {
            "minimum": 0,
            "type": "number",
            "description": "Item minimum stock on hand.",
            "format": "double",
            "nullable": true
          },
          "minimumProductionQuantity": {
            "minimum": 0,
            "type": "number",
            "description": "Item minimum production quantity for a manufacturing run.",
            "format": "double",
            "nullable": true
          },
          "internalNotes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Internal item notes.",
            "nullable": true
          },
          "salesUnitOfMeasureConversions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonUnitOfMeasureConversionDto"
            },
            "description": "Unit of measure conversions for sellable items.",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Whether or not this item is taxable (default)",
            "nullable": true
          },
          "buildToOrder": {
            "type": "boolean",
            "description": "Whether or not this item is build to order (jobs are made from sales orders, not overall demand)",
            "nullable": true
          },
          "buildToStock": {
            "type": "boolean",
            "description": "Whether or not this item is build to stock (jobs are created from overall demand, not sales orders)",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Details of item to be created"
      },
      "ItemCustomerCreateDto": {
        "required": [
          "customerId"
        ],
        "type": "object",
        "properties": {
          "customerId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Customer id associated to this entity. Please reference /api/customers endpoint."
          },
          "customerItemNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The item number for this customer.",
            "nullable": true
          },
          "customerItemName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The item name for this customer.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Create a new item customer association."
      },
      "ItemCustomerDto": {
        "required": [
          "customerId",
          "id",
          "priceBreaks"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "The id of the item-customer association. Use this value for update and delete operations."
          },
          "customerId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Customer id associated to this entity. Please reference /api/customers endpoint."
          },
          "customerItemNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The item number for this customer.",
            "nullable": true
          },
          "customerItemName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The item name for this customer.",
            "nullable": true
          },
          "unitOfMeasureName": {
            "minLength": 1,
            "type": "string",
            "description": "The unit of measure name. This can be standard unit measurement names (Piece, Square foot, etc) or a custom measurement name.",
            "nullable": true
          },
          "priceBreaks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonPriceBreakDto"
            },
            "description": "Price breaks."
          }
        },
        "additionalProperties": false,
        "description": "Customer with additional context for an item."
      },
      "ItemCustomerTierDto": {
        "required": [
          "customerTier",
          "priceBreaks"
        ],
        "type": "object",
        "properties": {
          "customerTier": {
            "$ref": "#/components/schemas/CustomerTierDto"
          },
          "priceBreaks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonPriceBreakDto"
            },
            "description": "Price breaks."
          }
        },
        "additionalProperties": false,
        "description": "Item customer tier definition"
      },
      "ItemCustomerUpdateDto": {
        "type": "object",
        "properties": {
          "customerItemNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The item number for this customer.",
            "nullable": true
          },
          "customerItemName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The item name for this customer.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Update an item customer association."
      },
      "ItemDto": {
        "required": [
          "accountingDetails",
          "description",
          "id",
          "itemOrigin",
          "number",
          "unitOfMeasureName",
          "unitTypeName"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Id"
          },
          "number": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The number to give the item."
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The description to give the item."
          },
          "itemOrigin": {
            "$ref": "#/components/schemas/DomainItemsAndInventoryItemOrigin"
          },
          "unitTypeName": {
            "minLength": 1,
            "type": "string",
            "description": "The unit of measure type, ex: Piece, Volume or Weight"
          },
          "unitOfMeasureName": {
            "minLength": 1,
            "type": "string",
            "description": "The unit of measure name. Options available depend on the selected UnitTypeName. For Pieces, you might have a UOM of Piece, Set or Case. For Volume, options include Liter, Milliliter, etc."
          },
          "revision": {
            "$ref": "#/components/schemas/ItemRevisionDto"
          },
          "barCodeNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The barcode number to give the item.",
            "nullable": true
          },
          "isSellable": {
            "type": "boolean",
            "description": "Define if this item is able to be sold/sellable."
          },
          "isArchived": {
            "type": "boolean",
            "description": "Indicate if this item is archived."
          },
          "isNonInventory": {
            "type": "boolean",
            "description": "Indicate if this item is considered a non-inventory item."
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "accountingCode2Id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code 2 key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "materialCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item material code key identifier. Please reference /api/material-codes endpoint.",
            "nullable": true
          },
          "gradeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item grade code key identifier. Please reference /api/grade-codes endpoint.",
            "nullable": true
          },
          "shapeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item shape code key identifier. Please reference /api/shape-codes endpoint.",
            "nullable": true
          },
          "gaugeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item gauge code key identifier. Please reference /api/gauge-codes endpoint.",
            "nullable": true
          },
          "categoryId": {
            "type": "string",
            "description": "Item category code key identifier. Please reference /api/item-categories endpoint.",
            "nullable": true
          },
          "width": {
            "minimum": 0,
            "type": "number",
            "description": "Item width",
            "format": "double",
            "nullable": true
          },
          "height": {
            "minimum": 0,
            "type": "number",
            "description": "Item height",
            "format": "double",
            "nullable": true
          },
          "length": {
            "minimum": 0,
            "type": "number",
            "description": "Item length",
            "format": "double",
            "nullable": true
          },
          "weight": {
            "minimum": 0,
            "type": "number",
            "description": "Item weight",
            "format": "double",
            "nullable": true
          },
          "materialWeight": {
            "minimum": 0,
            "type": "number",
            "description": "The weight of material item (calculated)",
            "format": "double",
            "nullable": true
          },
          "minimumStockOnHand": {
            "minimum": 0,
            "type": "number",
            "description": "Item minimum stock on hand.",
            "format": "double",
            "nullable": true
          },
          "minimumProductionQuantity": {
            "minimum": 0,
            "type": "number",
            "description": "Item minimum production quantity for a manufacturing run.",
            "format": "double",
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined on this entity.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagDto"
            },
            "description": "Item tags."
          },
          "internalNotes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Internal item notes.",
            "nullable": true
          },
          "salesUnitOfMeasureConversions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonUnitOfMeasureConversionDto"
            },
            "description": "Sales unit of measurements",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "External references associated with this entity.",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Whether this item is taxable",
            "nullable": true
          },
          "buildToOrder": {
            "type": "boolean",
            "description": "Whether or not this item is build to order (jobs are made from sales orders, not overall demand)",
            "nullable": true
          },
          "buildToStock": {
            "type": "boolean",
            "description": "Whether or not this item is build to stock (jobs are created from overall demand, not sales orders)",
            "nullable": true
          },
          "isSingleUseItem": {
            "type": "boolean",
            "description": "Indicate if this item is intended for single use.",
            "nullable": true
          },
          "isLotTracked": {
            "type": "boolean",
            "description": "Indicate if this item is lot-tracked.",
            "nullable": true
          },
          "shipping": {
            "$ref": "#/components/schemas/ItemShippingDto"
          },
          "createdUtc": {
            "type": "string",
            "description": "The date the item was created",
            "format": "date-time"
          },
          "modifiedUtc": {
            "type": "string",
            "description": "The date the item was last modified",
            "format": "date-time"
          },
          "customerTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ItemCustomerTierDto"
            },
            "description": "Customer tiers associated with this item."
          },
          "materialDetails": {
            "$ref": "#/components/schemas/ItemMaterialDetailsDto"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          },
          "materialVendorDetails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ItemMaterialVendorDto"
            },
            "description": "Includes vendor (purchasing) details for this item. This is specific to material-based items.",
            "nullable": true
          },
          "vendorDetails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ItemVendorDto"
            },
            "description": "Includes vendor (purchasing) details for this item.",
            "nullable": true
          },
          "customerDetails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ItemCustomerDto"
            },
            "description": "Includes customer (selling) details for this item.",
            "nullable": true
          },
          "qualityPlanStatus": {
            "$ref": "#/components/schemas/ItemsAndInventoryDataQualityPlanStatus"
          }
        },
        "additionalProperties": false,
        "description": "An item"
      },
      "ItemListDto": {
        "required": [
          "accountingDetails",
          "description",
          "id",
          "itemOrigin",
          "number",
          "unitOfMeasureName",
          "unitTypeName"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Id"
          },
          "number": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The number to give the item."
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The description to give the item."
          },
          "itemOrigin": {
            "$ref": "#/components/schemas/DomainItemsAndInventoryItemOrigin"
          },
          "unitTypeName": {
            "minLength": 1,
            "type": "string",
            "description": "The unit of measure type, ex: Piece, Volume or Weight"
          },
          "unitOfMeasureName": {
            "minLength": 1,
            "type": "string",
            "description": "The unit of measure name. Options available depend on the selected UnitTypeName. For Pieces, you might have a UOM of Piece, Set or Case. For Volume, options include Liter, Milliliter, etc."
          },
          "revision": {
            "$ref": "#/components/schemas/ItemRevisionDto"
          },
          "barCodeNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The barcode number to give the item.",
            "nullable": true
          },
          "isSellable": {
            "type": "boolean",
            "description": "Define if this item is able to be sold/sellable."
          },
          "isArchived": {
            "type": "boolean",
            "description": "Indicate if this item is archived."
          },
          "isNonInventory": {
            "type": "boolean",
            "description": "Indicate if this item is considered a non-inventory item."
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "accountingCode2Id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code 2 key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "materialCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item material code key identifier. Please reference /api/material-codes endpoint.",
            "nullable": true
          },
          "gradeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item grade code key identifier. Please reference /api/grade-codes endpoint.",
            "nullable": true
          },
          "shapeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item shape code key identifier. Please reference /api/shape-codes endpoint.",
            "nullable": true
          },
          "gaugeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item gauge code key identifier. Please reference /api/gauge-codes endpoint.",
            "nullable": true
          },
          "categoryId": {
            "type": "string",
            "description": "Item category code key identifier. Please reference /api/item-categories endpoint.",
            "nullable": true
          },
          "width": {
            "minimum": 0,
            "type": "number",
            "description": "Item width",
            "format": "double",
            "nullable": true
          },
          "height": {
            "minimum": 0,
            "type": "number",
            "description": "Item height",
            "format": "double",
            "nullable": true
          },
          "length": {
            "minimum": 0,
            "type": "number",
            "description": "Item length",
            "format": "double",
            "nullable": true
          },
          "weight": {
            "minimum": 0,
            "type": "number",
            "description": "Item weight",
            "format": "double",
            "nullable": true
          },
          "materialWeight": {
            "minimum": 0,
            "type": "number",
            "description": "The weight of material item (calculated)",
            "format": "double",
            "nullable": true
          },
          "minimumStockOnHand": {
            "minimum": 0,
            "type": "number",
            "description": "Item minimum stock on hand.",
            "format": "double",
            "nullable": true
          },
          "minimumProductionQuantity": {
            "minimum": 0,
            "type": "number",
            "description": "Item minimum production quantity for a manufacturing run.",
            "format": "double",
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined on this entity.",
            "nullable": true
          },
          "tags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TagDto"
            },
            "description": "Item tags."
          },
          "internalNotes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Internal item notes.",
            "nullable": true
          },
          "salesUnitOfMeasureConversions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonUnitOfMeasureConversionDto"
            },
            "description": "Sales unit of measurements",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "External references associated with this entity.",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Whether this item is taxable",
            "nullable": true
          },
          "buildToOrder": {
            "type": "boolean",
            "description": "Whether or not this item is build to order (jobs are made from sales orders, not overall demand)",
            "nullable": true
          },
          "buildToStock": {
            "type": "boolean",
            "description": "Whether or not this item is build to stock (jobs are created from overall demand, not sales orders)",
            "nullable": true
          },
          "isSingleUseItem": {
            "type": "boolean",
            "description": "Indicate if this item is intended for single use.",
            "nullable": true
          },
          "isLotTracked": {
            "type": "boolean",
            "description": "Indicate if this item is lot-tracked.",
            "nullable": true
          },
          "shipping": {
            "$ref": "#/components/schemas/ItemShippingDto"
          },
          "createdUtc": {
            "type": "string",
            "description": "The date the item was created",
            "format": "date-time"
          },
          "modifiedUtc": {
            "type": "string",
            "description": "The date the item was last modified",
            "format": "date-time"
          },
          "customerTiers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ItemCustomerTierDto"
            },
            "description": "Customer tiers associated with this item."
          },
          "materialDetails": {
            "$ref": "#/components/schemas/ItemMaterialDetailsDto"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          },
          "materialVendorDetails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ItemMaterialVendorDto"
            },
            "description": "Includes vendor (purchasing) details for this item. This is specific to material-based items.",
            "nullable": true
          },
          "vendorDetails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ItemVendorDto"
            },
            "description": "Includes vendor (purchasing) details for this item.",
            "nullable": true
          },
          "customerDetails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ItemCustomerDto"
            },
            "description": "Includes customer (selling) details for this item.",
            "nullable": true
          },
          "qualityPlanStatus": {
            "$ref": "#/components/schemas/ItemsAndInventoryDataQualityPlanStatus"
          },
          "usedByItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonReferenceDto"
            },
            "description": "Items that use this item. Will only be populated if IncludeUsageData is set to true in\nthe request parameters.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An item"
      },
      "ItemMaterialDetailsDto": {
        "type": "object",
        "properties": {
          "materialWidth": {
            "minimum": 0,
            "type": "number",
            "description": "For Sheets, the Width",
            "format": "double",
            "nullable": true
          },
          "materialLength": {
            "minimum": 0,
            "type": "number",
            "description": "Length. For Sheets, the Height",
            "format": "double",
            "nullable": true
          },
          "materialThickness": {
            "minimum": 0,
            "type": "number",
            "description": "Thickness or Diameter",
            "format": "double",
            "nullable": true
          },
          "form": {
            "$ref": "#/components/schemas/FulcrumProductMaterialsMaterialForms"
          },
          "unit": {
            "$ref": "#/components/schemas/FulcrumProductMaterialsFulcrumLengthUnits"
          },
          "materialId": {
            "type": "string",
            "description": "Ex: SS-SAE-304-Sheet-0.25000",
            "nullable": true
          },
          "materialName": {
            "type": "string",
            "description": "Ex: Stainless Steel 304 Sheet 1/4\"",
            "nullable": true
          },
          "isRemnant": {
            "type": "boolean",
            "description": "True if the item was created as a remnant."
          }
        },
        "additionalProperties": false,
        "description": "Material Details"
      },
      "ItemMaterialVendorCreateDto": {
        "required": [
          "vendorId"
        ],
        "type": "object",
        "properties": {
          "vendorId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Vendor id associated to this entity. Please reference /api/vendors endpoint."
          },
          "vendorItemNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The item number for this vendor.",
            "nullable": true
          },
          "vendorItemName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The item name for this vendor.",
            "nullable": true
          },
          "notes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Notes to the vendor.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Vendor with additional context for a material-based item."
      },
      "ItemMaterialVendorDto": {
        "required": [
          "id",
          "vendorId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Id"
          },
          "vendorId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Vendor id associated to this entity. Please reference /api/vendors endpoint."
          },
          "vendorItemNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The item number for this vendor.",
            "nullable": true
          },
          "vendorItemName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The item name for this vendor.",
            "nullable": true
          },
          "notes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Notes to the vendor.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Material vendor with additional context for an item."
      },
      "ItemMaterialVendorUpdateDto": {
        "type": "object",
        "properties": {
          "vendorItemNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The item number for this vendor.",
            "nullable": true
          },
          "vendorItemName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The item name for this vendor.",
            "nullable": true
          },
          "notes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Notes to the vendor.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Vendor with additional context for a material-based item."
      },
      "ItemNumberFilter": {
        "required": [
          "casingOption",
          "mode",
          "query"
        ],
        "type": "object",
        "properties": {
          "query": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The filter string to match against."
          },
          "mode": {
            "$ref": "#/components/schemas/ItemRequestFilterMode"
          },
          "casingOption": {
            "$ref": "#/components/schemas/CommonEnumCasingOption"
          },
          "revision": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Optional revision to match against. Revision is always tested for exact equality",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Filter used to limit results by item number"
      },
      "ItemReferenceDto": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique Id associated to this entity"
          },
          "number": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Item number."
          },
          "revision": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Revision name.",
            "nullable": true
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Item name.",
            "nullable": true
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Item description.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Item reference"
      },
      "ItemRequestAddRevision": {
        "required": [
          "revision"
        ],
        "type": "object",
        "properties": {
          "revision": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The revision to be created."
          },
          "archiveSourceItem": {
            "type": "boolean",
            "description": "Indicate whether we should archive the source item. This will default to false.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Add an item revision."
      },
      "ItemRequestFilterMode": {
        "enum": [
          "equal",
          "startsWith",
          "contains"
        ],
        "type": "string",
        "description": "How item numbers are matched against the search string"
      },
      "ItemRequestFindParameters": {
        "type": "object",
        "properties": {
          "number": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter to items who's number contains the given string",
            "nullable": true
          },
          "revision": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter to items who's revision matches the given string",
            "nullable": true
          },
          "customField": {
            "$ref": "#/components/schemas/CommonCustomFieldSearchDto"
          },
          "latestRevision": {
            "type": "boolean",
            "description": "Indicate whether we want the latest revision(s) of the items."
          },
          "itemIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter to items whose ids are in the list",
            "nullable": true
          },
          "descriptionFilter": {
            "type": "string",
            "description": "Filter items by description.\nUse (escaped) double-quotes to filter by exact phrase, e.g., \\\\\"search phrase\\\\\".\nPrepend search term with \"-\" to exclude",
            "nullable": true
          },
          "isArchived": {
            "type": "boolean",
            "description": "Include or exclude archived items",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding items."
      },
      "ItemRequestFindParametersV2": {
        "type": "object",
        "properties": {
          "numbers": {
            "maxItems": 50,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ItemNumberFilter"
            },
            "description": "Filter items based on numbers",
            "nullable": true
          },
          "customField": {
            "$ref": "#/components/schemas/CommonCustomFieldSearchDto"
          },
          "customFields": {
            "maxItems": 50,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonCustomFieldSearchDto"
            },
            "description": "Filter items based on custom fields\nNote: these will be OR'd with each other and are not additive in filtering.",
            "nullable": true
          },
          "latestRevision": {
            "type": "boolean",
            "description": "Indicate whether we want the latest revision(s) of the items."
          },
          "itemIds": {
            "maxItems": 50,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter to items whose ids are in the list",
            "nullable": true
          },
          "descriptionFilter": {
            "type": "string",
            "description": "Filter items by description.\nUse (escaped) double-quotes to filter by exact phrase, e.g., \\\\\"search phrase\\\\\".\nPrepend search term with \"-\" to exclude",
            "nullable": true
          },
          "isArchived": {
            "type": "boolean",
            "description": "Include or exclude archived items",
            "nullable": true
          },
          "includeUsageData": {
            "type": "boolean",
            "description": "If set to true, data on where the item is being used will be included in the results"
          },
          "includeVendorData": {
            "type": "boolean",
            "description": "If set to true, vendor details about the item will be included in the results"
          },
          "includeCustomerData": {
            "type": "boolean",
            "description": "If set to true, customer details about the item will be included in the results"
          },
          "includeCustomerTierData": {
            "type": "boolean",
            "description": "If set to true, customer tier details about the item will be included in the results"
          },
          "vendorId": {
            "type": "string",
            "description": "If provided, filter to items that are produced by this vendor.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding items."
      },
      "ItemRevisionDto": {
        "type": "object",
        "properties": {
          "isLatestRevision": {
            "type": "boolean",
            "description": "Indicate if this is the latest revision of an item."
          },
          "revision": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Revision name.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Item revision information."
      },
      "ItemRoutingDto": {
        "type": "object",
        "properties": {
          "allowContinuousFlow": {
            "type": "boolean",
            "description": "Allow an operation to start before previous operations in the routing end",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents an item's routing"
      },
      "ItemRoutingInputItemCreateDto": {
        "required": [
          "itemId",
          "valueType",
          "valueTypeUnits"
        ],
        "type": "object",
        "properties": {
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The item id to be added. Please reference /api/items endpoint."
          },
          "valueTypeUnits": {
            "type": "number",
            "description": "Measurement unit depending on FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemCreateDto.ValueType",
            "format": "double"
          },
          "valueType": {
            "$ref": "#/components/schemas/CommonEnumInputItemValueTypeEnum"
          }
        },
        "additionalProperties": false,
        "description": "An input item for routing"
      },
      "ItemRoutingInputItemDto": {
        "required": [
          "description",
          "id",
          "itemId",
          "number",
          "valueType",
          "valueTypeUnits"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Id of this input item in the item's routing"
          },
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item Id",
            "readOnly": true
          },
          "number": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The number to give the item.",
            "readOnly": true
          },
          "revision": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The revision of the item",
            "readOnly": true
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The description to give the item.",
            "readOnly": true
          },
          "valueTypeUnits": {
            "type": "number",
            "description": "Measurement unit depending on FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemDto.ValueType",
            "format": "double"
          },
          "valueType": {
            "$ref": "#/components/schemas/CommonEnumInputItemValueTypeEnum"
          }
        },
        "additionalProperties": false,
        "description": "An item"
      },
      "ItemRoutingInputItemUpdateDto": {
        "required": [
          "valueTypeUnits"
        ],
        "type": "object",
        "properties": {
          "valueTypeUnits": {
            "type": "number",
            "description": "Measurement unit depending on FulcrumProduct.PublicApi.Dto.Item.Routing.InputItemUpdateDto.ValueType",
            "format": "double"
          },
          "valueType": {
            "$ref": "#/components/schemas/CommonEnumInputItemValueTypeEnum"
          }
        },
        "additionalProperties": false,
        "description": "An input item for routing"
      },
      "ItemRoutingInputMaterialCreateDto": {
        "required": [
          "costing",
          "materialId"
        ],
        "type": "object",
        "properties": {
          "materialId": {
            "minLength": 1,
            "type": "string",
            "description": "The material id to be added. Please reference /api/materials endpoint."
          },
          "costing": {
            "$ref": "#/components/schemas/CommonEnumMaterialRequirementCostingEnum"
          },
          "nestings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ItemRoutingInputMaterialNestingCreateDto"
            },
            "description": "Nestings associated to this material indicating bounding box dimensions and production quantities.",
            "nullable": true
          },
          "routingStepId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "The routing step id.\nThis value should be the Id from the response from items/{itemId}/routing/operations/list",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Create an input material for routing"
      },
      "ItemRoutingInputMaterialDto": {
        "required": [
          "costing",
          "id",
          "materialId",
          "materialName"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Id of this input material in the item's routing",
            "format": "uuid"
          },
          "materialId": {
            "minLength": 1,
            "type": "string",
            "description": "The material id. Please reference /api/materials endpoint."
          },
          "materialName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The material name."
          },
          "materialShape": {
            "$ref": "#/components/schemas/MaterialShapeDto"
          },
          "costing": {
            "$ref": "#/components/schemas/CommonEnumMaterialRequirementCostingEnum"
          },
          "nestings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ItemRoutingInputMaterialNestingDto"
            },
            "description": "Nestings associated to this material indicating bounding box dimensions and production quantities."
          },
          "routingStepId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "The routing step id.\nThis value should be the Id from the response from items/{itemId}/routing/operations/list",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "An item input material"
      },
      "ItemRoutingInputMaterialNestingCreateDto": {
        "required": [
          "d2",
          "d3",
          "produces"
        ],
        "type": "object",
        "properties": {
          "d2": {
            "type": "number",
            "description": "Length",
            "format": "double"
          },
          "d3": {
            "type": "number",
            "description": "For Sheets, the Width",
            "format": "double"
          },
          "produces": {
            "type": "integer",
            "description": "The quantity produced, given the bounding box dimensions (D2 x D3).",
            "format": "int32"
          },
          "useForEstimatedCosting": {
            "type": "boolean",
            "description": "Indicates if this nesting record will be used for estimated costing.\nNOTE: Only one nesting record for a material can have this value set to true."
          }
        },
        "additionalProperties": false,
        "description": "An input material nesting for routing"
      },
      "ItemRoutingInputMaterialNestingDto": {
        "required": [
          "d2",
          "d3",
          "id",
          "produces"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Id of this input material's nesting in the item's routing material",
            "format": "uuid"
          },
          "d2": {
            "type": "number",
            "description": "Length",
            "format": "double"
          },
          "d3": {
            "type": "number",
            "description": "For Sheets, the Width",
            "format": "double"
          },
          "produces": {
            "type": "integer",
            "description": "The quantity produced, given the bounding box dimensions (D2 x D3).",
            "format": "int32"
          },
          "useForEstimatedCosting": {
            "type": "boolean",
            "description": "Indicates if this nesting record will be used for estimated costing.\nNOTE: Only one nesting record for a material can have this value set to true."
          }
        },
        "additionalProperties": false,
        "description": "Create an input material nesting for routing"
      },
      "ItemRoutingInputMaterialUpdateDto": {
        "required": [
          "costing"
        ],
        "type": "object",
        "properties": {
          "costing": {
            "$ref": "#/components/schemas/CommonEnumMaterialRequirementCostingEnum"
          },
          "routingStepId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "The routing step id.\nThis value should be the Id from the response from items/{itemId}/routing/operations/list",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Update an input material for routing"
      },
      "ItemRoutingIptCreateDto": {
        "required": [
          "fieldTypeId",
          "label"
        ],
        "type": "object",
        "properties": {
          "label": {
            "minLength": 1,
            "type": "string",
            "description": "Label describing the in process tracking field"
          },
          "description": {
            "type": "string",
            "description": "The description of the in process tracking field",
            "nullable": true
          },
          "units": {
            "type": "string",
            "description": "The units used when this in process tracking field represents a number",
            "nullable": true
          },
          "fieldTypeId": {
            "minLength": 1,
            "type": "string",
            "description": "The id of the field type for this in process tracking field"
          },
          "targetValue": {
            "type": "number",
            "description": "The target or ideal value of an in process tracking field response",
            "format": "double",
            "nullable": true
          },
          "minimumValue": {
            "type": "number",
            "description": "The minimum acceptable value for a tracking field response",
            "format": "double",
            "nullable": true
          },
          "maximumValue": {
            "type": "number",
            "description": "The maximum acceptable value for a tracking field response",
            "format": "double",
            "nullable": true
          },
          "triggeringBooleanValue": {
            "type": "boolean",
            "description": "The target value for booleans. Typically Yes/No for proceeding with next checkpoint",
            "nullable": true
          },
          "triggeringDropdownValue": {
            "type": "string",
            "description": "The target value for multiple options",
            "nullable": true
          },
          "required": {
            "type": "boolean",
            "description": "Whether the in process tracking field requires a response"
          },
          "restricted": {
            "type": "boolean",
            "description": "If true, only users with the appropriate permission will be allowed to save a response."
          },
          "firstArticle": {
            "type": "boolean",
            "description": "Only applies to the During phase.  If true (and Required), this field will prevent adding any\ncompleted items to inventory if target is not met."
          }
        },
        "additionalProperties": false,
        "description": "An in process tracking field for a routing step"
      },
      "ItemRoutingIptDto": {
        "required": [
          "fieldTypeId",
          "id",
          "label"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Id of the in process tracking field",
            "format": "uuid"
          },
          "label": {
            "minLength": 1,
            "type": "string",
            "description": "Label describing the in process tracking field"
          },
          "units": {
            "type": "string",
            "description": "The units used when this in process tracking field represents a number",
            "nullable": true
          },
          "fieldTypeId": {
            "minLength": 1,
            "type": "string",
            "description": "The id of the field type for this in process tracking field"
          },
          "targetValue": {
            "type": "number",
            "description": "The target or ideal value of an in process tracking field response",
            "format": "double",
            "nullable": true
          },
          "minimumValue": {
            "type": "number",
            "description": "The minimum acceptable value for a tracking field response",
            "format": "double",
            "nullable": true
          },
          "maximumValue": {
            "type": "number",
            "description": "The maximum acceptable value for a tracking field response",
            "format": "double",
            "nullable": true
          },
          "triggeringBooleanValue": {
            "type": "boolean",
            "description": "The target value for booleans. Typically Yes/No for proceeding with next checkpoint",
            "nullable": true
          },
          "triggeringDropdownValue": {
            "type": "string",
            "description": "The target value for multiple options",
            "nullable": true
          },
          "required": {
            "type": "boolean",
            "description": "Whether the in process tracking field requires a response"
          },
          "restricted": {
            "type": "boolean",
            "description": "If true, only users with the appropriate permission will be allowed to save a response."
          },
          "firstArticle": {
            "type": "boolean",
            "description": "Only applies to the During phase.  If true (and Required), this field will prevent adding any\ncompleted items to inventory if target is not met."
          }
        },
        "additionalProperties": false,
        "description": "An in process tracking field for a routing step"
      },
      "ItemRoutingNormalOperationDto": {
        "type": "object",
        "properties": {
          "setupTime": {
            "$ref": "#/components/schemas/ItemRoutingOperationTime"
          },
          "laborTime": {
            "$ref": "#/components/schemas/ItemRoutingOperationTime"
          },
          "machineTime": {
            "$ref": "#/components/schemas/ItemRoutingOperationTime"
          },
          "anyEquipment": {
            "type": "boolean",
            "description": "Specifies that any equipment associated with this operation can be used"
          },
          "selectedEquipmentIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of equipment ids selected from equipment associated with this operation"
          },
          "isNestable": {
            "type": "boolean",
            "description": "Indicate if this operation is nestable."
          }
        },
        "additionalProperties": false,
        "description": "Defines non-outside-processing fields"
      },
      "ItemRoutingOperationCreateDto": {
        "required": [
          "systemOperationId"
        ],
        "type": "object",
        "properties": {
          "systemOperationId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "System Operation Id"
          },
          "order": {
            "minimum": 0,
            "type": "integer",
            "description": "The order of this operation.  Operations with the same order are expected to run in parallel",
            "format": "int32",
            "nullable": true
          },
          "outsideProcessingOperation": {
            "$ref": "#/components/schemas/ItemRoutingOutsideProcessingOperationDto"
          },
          "operation": {
            "$ref": "#/components/schemas/ItemRoutingNormalOperationDto"
          },
          "leadDays": {
            "minimum": 0,
            "type": "integer",
            "description": "Lead days. Will default to zero if not provided.",
            "format": "int32",
            "nullable": true
          },
          "unattended": {
            "type": "boolean",
            "description": "If `true`, the run portion of this step is unattended by\nan operator.",
            "nullable": true
          },
          "instructions": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Operation instructions. Will default to the instructions defined on the operation when not provided.",
            "nullable": true
          },
          "inputMaterialIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The ids on the input material to associate to this operation.\nThis value should be the Id from the response from items/{itemId}/routing/input-materials/list",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A routing operation (step)"
      },
      "ItemRoutingOperationDto": {
        "required": [
          "id",
          "name",
          "systemOperationId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "The Id of this operation specific to this item's routing"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Name of the system operation"
          },
          "systemOperationId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Id of the system operation"
          },
          "order": {
            "minimum": 0,
            "type": "integer",
            "description": "The order of this operation.  Operations with the same order are expected to run in parallel",
            "format": "int32"
          },
          "isOutsideProcessing": {
            "type": "boolean",
            "description": "Specifies whether this is an outside processing operation"
          },
          "outsideProcessingOperation": {
            "$ref": "#/components/schemas/ItemRoutingOutsideProcessingOperationDto"
          },
          "operation": {
            "$ref": "#/components/schemas/ItemRoutingNormalOperationDto"
          },
          "leadDays": {
            "minimum": 0,
            "type": "integer",
            "description": "Lead days",
            "format": "int32"
          },
          "unattended": {
            "type": "boolean",
            "description": "If `true`, the run portion of this step is unattended by\nan operator.",
            "nullable": true
          },
          "machineTrackingEnabled": {
            "type": "boolean",
            "description": "Whether machine tracking is enabled."
          },
          "instructions": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Instructions for this operation.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A routing operation (step)"
      },
      "ItemRoutingOperationTime": {
        "type": "object",
        "properties": {
          "time": {
            "type": "number",
            "description": "Time or units of this operation",
            "format": "double"
          },
          "option": {
            "$ref": "#/components/schemas/ItemRoutingOperationTimeOption"
          }
        },
        "additionalProperties": false,
        "description": "Operation time and type"
      },
      "ItemRoutingOperationTimeOption": {
        "enum": [
          "fixedSeconds",
          "fixedMinutes",
          "fixedHours",
          "fixedDays",
          "secondsPerUnit",
          "minutesPerUnit",
          "hoursPerUnit",
          "daysPerUnit",
          "unitsPerHour"
        ],
        "type": "string",
        "description": "The time unit or option used in operation times"
      },
      "ItemRoutingOperationUpdateDto": {
        "type": "object",
        "properties": {
          "order": {
            "minimum": 0,
            "type": "integer",
            "description": "The order of this operation.  Operations with the same order are expected to run in parallel",
            "format": "int32",
            "nullable": true
          },
          "outsideProcessingOperation": {
            "$ref": "#/components/schemas/ItemRoutingOutsideProcessingOperationDto"
          },
          "operation": {
            "$ref": "#/components/schemas/ItemRoutingNormalOperationDto"
          },
          "leadDays": {
            "minimum": 0,
            "type": "integer",
            "description": "Lead days. Will default to zero if not provided.",
            "format": "int32",
            "nullable": true
          },
          "unattended": {
            "type": "boolean",
            "description": "If `true`, the run portion of this step is unattended by\nan operator.",
            "nullable": true
          },
          "instructions": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Instructions for this operation.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A routing operation (step)"
      },
      "ItemRoutingOutsideProcessingCostOption": {
        "enum": [
          "fixed",
          "perUnit"
        ],
        "type": "string",
        "description": "The cost option for the outside processing operation"
      },
      "ItemRoutingOutsideProcessingOperationCost": {
        "type": "object",
        "properties": {
          "costOption": {
            "$ref": "#/components/schemas/ItemRoutingOutsideProcessingCostOption"
          },
          "fixedCost": {
            "type": "number",
            "description": "The fixed total cost for the operation",
            "format": "double",
            "nullable": true
          },
          "perUnitCost": {
            "type": "number",
            "description": "The cost per unit for the operation",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Outside processing operation cost"
      },
      "ItemRoutingOutsideProcessingOperationDto": {
        "type": "object",
        "properties": {
          "outsideProcessingTime": {
            "$ref": "#/components/schemas/ItemRoutingOperationTime"
          },
          "outsideProcessingCost": {
            "$ref": "#/components/schemas/ItemRoutingOutsideProcessingOperationCost"
          },
          "selectedVendorId": {
            "type": "string",
            "description": "Outside processing vendor",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Defines outside processing fields"
      },
      "ItemRoutingUpdateDto": {
        "type": "object",
        "properties": {
          "allowContinuousFlow": {
            "type": "boolean",
            "description": "Allow an operation to start before previous operations in the routing end",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents updates to an item's routing"
      },
      "ItemShippingDto": {
        "type": "object",
        "properties": {
          "class": {
            "type": "string",
            "description": "The item shipping class",
            "nullable": true
          },
          "nmfc": {
            "type": "string",
            "description": "The National Motor Freight Classification",
            "nullable": true
          },
          "isHazmat": {
            "type": "boolean",
            "description": "Whether the item is hazardous to ship"
          },
          "unitWeight": {
            "type": "number",
            "description": "The unit weight in lbs.",
            "format": "double",
            "nullable": true
          },
          "tariffCode": {
            "type": "string",
            "description": "The item tariff code",
            "nullable": true
          },
          "countryOfOrigin": {
            "type": "string",
            "description": "The country of origin",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Item Shipping Properties"
      },
      "ItemToMakeOperationDto": {
        "required": [
          "id",
          "isOutsideProcessing",
          "order",
          "status",
          "systemOperationId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique Id associated to this entity"
          },
          "status": {
            "$ref": "#/components/schemas/JobItemToMakeOpStatusEnum"
          },
          "order": {
            "minimum": 0,
            "type": "integer",
            "description": "Routing order of the operation",
            "format": "int32"
          },
          "systemOperationId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Identifier of the system operation associated to this entity\nPlease reference api/operations."
          },
          "isOutsideProcessing": {
            "type": "boolean",
            "description": "Denotes whether this is an outside processing operation"
          },
          "originalScheduledStartUtc": {
            "type": "string",
            "description": "The first scheduled start time.",
            "format": "date-time",
            "nullable": true
          },
          "originalScheduledEndUtc": {
            "type": "string",
            "description": "The first scheduled end time.",
            "format": "date-time",
            "nullable": true
          },
          "scheduledStartUtc": {
            "type": "string",
            "description": "Scheduled start datetime of the operation",
            "format": "date-time",
            "nullable": true
          },
          "scheduledEndUtc": {
            "type": "string",
            "description": "Scheduled end datetime of the operation",
            "format": "date-time",
            "nullable": true
          },
          "completedOnUtc": {
            "type": "string",
            "description": "The operation completion datetime.",
            "format": "date-time",
            "nullable": true
          },
          "completedById": {
            "type": "string",
            "description": "Operation completed user identifier. Please reference /api/users endpoint.",
            "nullable": true
          },
          "scheduledEquipmentId": {
            "type": "string",
            "description": "Identifier of the equipment that this operation is scheduled to run on",
            "nullable": true
          },
          "scheduledEquipmentName": {
            "type": "string",
            "description": "The name of the equipment that this operation is scheduled to run on.",
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "The custom field data on the object",
            "nullable": true
          },
          "instructions": {
            "type": "string",
            "description": "Instructions specific to the item to make operation.",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "System operation name.",
            "nullable": true
          },
          "leadTimeInDays": {
            "minimum": 0,
            "type": "integer",
            "description": "Number of days required between order and receipt. Only applicable for outside processing operations.",
            "format": "int32",
            "nullable": true
          },
          "associatedPurchaseOrderIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Associated purchase order IDs.",
            "nullable": true
          },
          "estimatedSetupTimeInSeconds": {
            "type": "number",
            "description": "The estimated setup time in seconds for the operation.",
            "format": "double",
            "nullable": true
          },
          "estimatedSetupTimeBasis": {
            "$ref": "#/components/schemas/DomainOperationsRouting_Step_SetupTimeOption"
          },
          "estimatedRunTimeInSeconds": {
            "type": "number",
            "description": "The estimated run time in seconds for the operation.\nNote: This is an obsolete field from when operation could not separate between machine (unattended) and labor (attended) time.",
            "format": "double",
            "nullable": true
          },
          "estimatedRunTimeBasis": {
            "$ref": "#/components/schemas/DomainOperationsRouting_Step_RunTimeOption"
          },
          "estimatedMachineTimeInSeconds": {
            "type": "number",
            "description": "The estimated machine time in seconds for the operation.",
            "format": "double",
            "nullable": true
          },
          "estimatedMachineTimeBasis": {
            "$ref": "#/components/schemas/DomainOperationsRouting_Step_RunTimeOption"
          },
          "estimatedLaborTimeInSeconds": {
            "type": "number",
            "description": "The estimated labor time in seconds for the operation.",
            "format": "double",
            "nullable": true
          },
          "estimatedLaborTimeBasis": {
            "$ref": "#/components/schemas/DomainOperationsRouting_Step_RunTimeOption"
          },
          "isMachineTimeOnly": {
            "type": "boolean",
            "description": "Whether this operation can be run without an employee present.  If true, use the machineTime properties.  If false,\nuse the laborTime properties."
          },
          "workOrderId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Identifier of work order that this operation is associated to, if applicable.\nPlease reference api/work-orders endpoint.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents an routing operation on a job item to make"
      },
      "ItemToMakeOperationItemRequiredDto": {
        "required": [
          "itemId",
          "itemNumber"
        ],
        "type": "object",
        "properties": {
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Identifier of the required item.\nPlease reference /api/items endpoint."
          },
          "itemNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Item number of the required item"
          },
          "revision": {
            "type": "string",
            "description": "Revision of the required item",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a required input item for a job operation"
      },
      "ItemToMakeOperationMaterialRequiredDto": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Identifier of the material shape.\nPlease reference /api/material-shapes endpoint."
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Name of the material shape required"
          }
        },
        "additionalProperties": false,
        "description": "Represents a required input material for a job operation"
      },
      "ItemToMakeOperationUpdateDto": {
        "type": "object",
        "properties": {
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "The custom fields to update on the operation object",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents an routing operation on a job item to make"
      },
      "ItemUpdateDto": {
        "type": "object",
        "properties": {
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Item description.",
            "nullable": true
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "accountingCode2Id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "materialCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item material code key identifier. Please reference /api/material-codes endpoint.",
            "nullable": true
          },
          "gradeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item grade code key identifier. Please reference /api/grade-codes endpoint.",
            "nullable": true
          },
          "shapeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item shape code key identifier. Please reference /api/shape-codes endpoint.",
            "nullable": true
          },
          "gaugeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item gauge code key identifier. Please reference /api/gauge-codes endpoint.",
            "nullable": true
          },
          "categoryId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item category code key identifier. Please reference /api/item-categories endpoint.",
            "nullable": true
          },
          "width": {
            "minimum": 0,
            "type": "number",
            "description": "Item width",
            "format": "double",
            "nullable": true
          },
          "height": {
            "minimum": 0,
            "type": "number",
            "description": "Item height",
            "format": "double",
            "nullable": true
          },
          "length": {
            "minimum": 0,
            "type": "number",
            "description": "Item length",
            "format": "double",
            "nullable": true
          },
          "weight": {
            "minimum": 0,
            "type": "number",
            "description": "Item weight",
            "format": "double",
            "nullable": true
          },
          "minimumStockOnHand": {
            "minimum": 0,
            "type": "number",
            "description": "Item minimum stock on hand.",
            "format": "double",
            "nullable": true
          },
          "minimumProductionQuantity": {
            "minimum": 0,
            "type": "number",
            "description": "Item minimum production quantity for a manufacturing run.",
            "format": "double",
            "nullable": true
          },
          "internalNotes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Internal item notes.",
            "nullable": true
          },
          "salesUnitOfMeasureConversions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonUnitOfMeasureConversionDto"
            },
            "description": "Unit of measure conversions for sellable items.",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Whether or not this item is taxable (default)",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents an update on an Item."
      },
      "ItemVendorCreateDto": {
        "required": [
          "vendorId"
        ],
        "type": "object",
        "properties": {
          "vendorId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Vendor id associated to this entity. Please reference /api/vendors endpoint."
          },
          "vendorItemNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The item number for this vendor.",
            "nullable": true
          },
          "vendorItemName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The item name for this vendor.",
            "nullable": true
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The price of this item for this vendor.",
            "format": "double",
            "nullable": true
          },
          "isPrimary": {
            "type": "boolean",
            "description": "Signifies if this is the primary vendor for this item."
          },
          "leadTimeInDays": {
            "type": "integer",
            "description": "Lead time for this vendor.",
            "format": "int32",
            "nullable": true
          },
          "notes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Notes on this association.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Vendor with additional context for an item."
      },
      "ItemVendorDto": {
        "required": [
          "id",
          "priceBreaks",
          "vendorId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Id"
          },
          "vendorId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Vendor id associated to this entity. Please reference /api/vendors endpoint."
          },
          "vendorItemNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The item number for this vendor.",
            "nullable": true
          },
          "vendorItemName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The item name for this vendor.",
            "nullable": true
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The price of this item for this vendor.",
            "format": "double",
            "nullable": true
          },
          "isPrimary": {
            "type": "boolean",
            "description": "Signifies if this is the primary vendor for this item."
          },
          "leadTimeInDays": {
            "type": "integer",
            "description": "Lead time for this vendor.",
            "format": "int32",
            "nullable": true
          },
          "unitOfMeasureName": {
            "minLength": 1,
            "type": "string",
            "description": "The unit of measure name. This can be standard unit measurement names (Piece, Square foot, etc) or a custom measurement name.",
            "nullable": true
          },
          "unitQuantity": {
            "type": "number",
            "description": "The vendor unit quantity for conversions. Ex: a FulcrumProduct.PublicApi.Dto.Item.Vendor.ItemVendorDto.UnitQuantity of 5 would indicate that 5 FulcrumProduct.PublicApi.Dto.Item.Vendor.ItemVendorDto.UnitOfMeasureName of this item for this vendor are equal to FulcrumProduct.PublicApi.Dto.Item.Vendor.ItemVendorDto.InventoryUnitQuantity in the base inventory unit of measure.",
            "format": "double",
            "nullable": true
          },
          "inventoryUnitQuantity": {
            "type": "number",
            "description": "The inventory unit quantity for conversions. Ex: an FulcrumProduct.PublicApi.Dto.Item.Vendor.ItemVendorDto.InventoryUnitQuantity of 5 would indicate that 5 inventory units (Pieces, Foot, etc) of this item are equal to FulcrumProduct.PublicApi.Dto.Item.Vendor.ItemVendorDto.UnitQuantity units in FulcrumProduct.PublicApi.Dto.Item.Vendor.ItemVendorDto.UnitOfMeasureName for this vendor.",
            "format": "double",
            "nullable": true
          },
          "priceBreaks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonPriceBreakDto"
            },
            "description": "Price breaks."
          },
          "notes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Notes on this association.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Vendor with additional context for an item."
      },
      "ItemVendorUpdateDto": {
        "type": "object",
        "properties": {
          "vendorItemNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The item number for this vendor.",
            "nullable": true
          },
          "vendorItemName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The item name for this vendor.",
            "nullable": true
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The price of this item for this vendor.",
            "format": "double",
            "nullable": true
          },
          "isPrimary": {
            "type": "boolean",
            "description": "Signifies if this is the primary vendor for this item."
          },
          "leadTimeInDays": {
            "type": "integer",
            "description": "Lead time for this vendor.",
            "format": "int32",
            "nullable": true
          },
          "notes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Notes on this association.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Vendor with additional context for an item."
      },
      "ItemsAndInventoryDataQualityPlanStatus": {
        "enum": [
          "needsApproval",
          "approved"
        ],
        "type": "string"
      },
      "ItemsAndInventoryRoutingsCostBreakdownType": {
        "enum": [
          "estimated",
          "inProgressJob",
          "completedJob",
          "cancelledJob"
        ],
        "type": "string"
      },
      "ItemsToMakeOperationsAddQuantityCompletedRequest": {
        "required": [
          "additionalQuantity"
        ],
        "type": "object",
        "properties": {
          "additionalQuantity": {
            "type": "number",
            "description": "The additional quantity to add to the operation's completed quantity.\nMust be greater than zero.",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Request to add additional quantity completed to a job operation"
      },
      "ItemsToMakeOperationsAddQuantityCompletedResponse": {
        "required": [
          "additionalQuantityAdded",
          "itemToMakeId",
          "jobId",
          "newTotalQuantityCompleted",
          "operationId",
          "operationStatus",
          "previousQuantityCompleted",
          "quantityRequired"
        ],
        "type": "object",
        "properties": {
          "jobId": {
            "minLength": 1,
            "type": "string",
            "description": "The ID of the job"
          },
          "itemToMakeId": {
            "minLength": 1,
            "type": "string",
            "description": "The ID of the item to make"
          },
          "operationId": {
            "minLength": 1,
            "type": "string",
            "description": "The ID of the operation"
          },
          "previousQuantityCompleted": {
            "type": "number",
            "description": "The quantity completed before this action",
            "format": "double"
          },
          "additionalQuantityAdded": {
            "type": "number",
            "description": "The quantity added in this action",
            "format": "double"
          },
          "newTotalQuantityCompleted": {
            "type": "number",
            "description": "The new total quantity completed after this action",
            "format": "double"
          },
          "quantityRequired": {
            "type": "number",
            "description": "The total quantity required for this operation",
            "format": "double"
          },
          "operationStatus": {
            "minLength": 1,
            "type": "string",
            "description": "The current status of the operation"
          }
        },
        "additionalProperties": false,
        "description": "Response after adding additional quantity completed to a job operation"
      },
      "JobCreateDto": {
        "required": [
          "quantityToMake"
        ],
        "type": "object",
        "properties": {
          "nameOfJob": {
            "type": "string",
            "description": "Name of the job to create. If omitted, the default naming convention will be used",
            "nullable": true
          },
          "customerId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The id of the customer to be created",
            "nullable": true
          },
          "autoSchedule": {
            "type": "boolean",
            "description": "Auto Schedule job. Defaults to FALSE if omitted.",
            "nullable": true
          },
          "note": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Note to customer. This will appear on PDFs.",
            "nullable": true
          },
          "priority": {
            "$ref": "#/components/schemas/JobPriorityEnum"
          },
          "productionDueDate": {
            "type": "string",
            "description": "The date that the production of items on the job needs to be completed by.",
            "format": "date-time",
            "nullable": true
          },
          "earliestStartDate": {
            "type": "string",
            "description": "If set, this is the earliest date that the job should be scheduled to begin.",
            "format": "date-time",
            "nullable": true
          },
          "quantityToMake": {
            "type": "number",
            "description": "Quantity to make",
            "format": "double"
          },
          "salesOrderId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Sales Order Id the job is created for. If used, ItemToMakeId will be ignored.",
            "nullable": true
          },
          "salesOrderLineItemId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Sales Order Line Item Id the job is created for. If used, ItemToMakeId will be ignored.",
            "nullable": true
          },
          "salesOrderLineItemNameOverride": {
            "type": "string",
            "description": "Sales Order Line Item - Name Override",
            "nullable": true
          },
          "itemToMakeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Id of the item to make. If SalesOrderId/SalesOrderLineItemId is set then ItemToMakeId will be ignored",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Details of job to be created"
      },
      "JobDto": {
        "required": [
          "id",
          "name",
          "number",
          "parentItemId",
          "priority",
          "quantityToMake",
          "status",
          "workOrderIds",
          "workOrders"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique Id associated to this entity"
          },
          "number": {
            "minimum": 0,
            "type": "integer",
            "description": "Job number",
            "format": "int32"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Job name, defaults to number unless otherwise specified."
          },
          "parentItemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique identifier of the parent item produced by this job.\nPlease reference api/items endpoint."
          },
          "quantityToMake": {
            "minimum": 0,
            "type": "number",
            "description": "Quantity of parent item produced by this job",
            "format": "double"
          },
          "productionDueDate": {
            "type": "string",
            "description": "Due date",
            "format": "date-time",
            "nullable": true
          },
          "earliestStartDate": {
            "type": "string",
            "description": "If set, this is the earliest date that the job should be scheduled to begin.",
            "format": "date-time",
            "nullable": true
          },
          "salesOrderId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Identifier of sales order fulfilled by this job, if applicable.\nPlease reference api/sales-orders endpoint.",
            "nullable": true
          },
          "salesOrderLineItemId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Identifier of sales order line item fulfilled by this job, if applicable.\nPlease reference endpoints nested under api/sales-orders.",
            "nullable": true
          },
          "createdUtc": {
            "type": "string",
            "description": "The date the job was created",
            "format": "date-time"
          },
          "originalScheduledStartUtc": {
            "type": "string",
            "description": "The first scheduled start time.",
            "format": "date-time",
            "nullable": true
          },
          "originalScheduledEndUtc": {
            "type": "string",
            "description": "The first scheduled end time.",
            "format": "date-time",
            "nullable": true
          },
          "scheduledStartUtc": {
            "type": "string",
            "description": "The current scheduled start time.",
            "format": "date-time",
            "nullable": true
          },
          "scheduledEndUtc": {
            "type": "string",
            "description": "The current scheduled end time.",
            "format": "date-time",
            "nullable": true
          },
          "completedOnUtc": {
            "type": "string",
            "description": "The job completion datetime.",
            "format": "date-time",
            "nullable": true
          },
          "cancelledOnUtc": {
            "type": "string",
            "description": "The job cancelled datetime.",
            "format": "date-time",
            "nullable": true
          },
          "revenue": {
            "type": "number",
            "description": "Revenue",
            "format": "double",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "Job level internal notes",
            "nullable": true
          },
          "workOrderIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Identifier of work order(s) that this job is associated to, if applicable.\nPlease reference api/work-orders endpoint."
          },
          "workOrders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkOrderReferenceDto"
            },
            "description": "Work order information, if applicable."
          },
          "status": {
            "$ref": "#/components/schemas/JobStatusEnum"
          },
          "priority": {
            "$ref": "#/components/schemas/JobPriorityEnum"
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined on this entity.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a job"
      },
      "JobItemToMakeCostBreakdownsDto": {
        "type": "object",
        "properties": {
          "costBreakdown": {
            "$ref": "#/components/schemas/CommonCostBreakdownDto"
          },
          "costBreakdownEstimated": {
            "$ref": "#/components/schemas/CommonCostBreakdownDto"
          }
        },
        "additionalProperties": false,
        "description": "Cost breakdowns for an item to make"
      },
      "JobItemToMakeDto": {
        "required": [
          "depth",
          "id",
          "isCustom",
          "itemId",
          "quantityToMake",
          "status"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique Id associated to this entity"
          },
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Id of the item on which this entity is based.\nPlease reference /api/items endpoint."
          },
          "quantityToMake": {
            "type": "number",
            "description": "Quantity of this item produced by the associated job.",
            "format": "double"
          },
          "isCustom": {
            "type": "boolean",
            "description": "Denotes whether this job produces a customized version of the base item"
          },
          "status": {
            "$ref": "#/components/schemas/JobItemToMakeStatusEnum"
          },
          "quantityMade": {
            "type": "number",
            "description": "Quantity already produced, if the job is in progress.",
            "format": "double",
            "nullable": true
          },
          "depth": {
            "type": "integer",
            "description": "Structurally, identify where in the tree of building the parent item this item lies.\nExample: The top-level item would have a depth of zero and it's direct subcomponents would be 1.\nThis cascades down so that a subcomponent to a subcomponent would be 2... and so on.",
            "format": "int32"
          },
          "costBreakdown": {
            "$ref": "#/components/schemas/CommonCostBreakdownDto"
          },
          "costBreakdownEstimated": {
            "$ref": "#/components/schemas/CommonCostBreakdownDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents an ItemToMake on a Job"
      },
      "JobItemToMakeOpStatusEnum": {
        "enum": [
          "pending",
          "ready",
          "running",
          "paused",
          "complete",
          "cancelled"
        ],
        "type": "string",
        "description": "Job Item to Make Operation status"
      },
      "JobItemToMakeOperationPickInventoryDto": {
        "required": [
          "itemId",
          "quantity"
        ],
        "type": "object",
        "properties": {
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The identifier of the item to be picked. Please reference api/items endpoint"
          },
          "quantity": {
            "type": "number",
            "description": "Quantity of the item to pick.",
            "format": "double"
          },
          "locationId": {
            "type": "string",
            "description": "ID of the location to pick from. If not set or set to an empty string, will\npick from inventory not assigned to a location. Cannot be set if FulcrumProduct.PublicApi.Dto.Job.ItemToMake.OperationPickInventoryDto.UseDefaultLocation\nis set to ```true```.",
            "nullable": true
          },
          "useDefaultLocation": {
            "type": "boolean",
            "description": "If set to true, inventory will be picked from the default location for the item. If set to true,\nFulcrumProduct.PublicApi.Dto.Job.ItemToMake.OperationPickInventoryDto.LocationId cannot be set.  If the item does not have a default location set and this\nis set to true, will pick from inventory not assigned to a location."
          },
          "lotId": {
            "type": "string",
            "description": "The ID of the lot to pick from.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Pick event for an input item"
      },
      "JobItemToMakeStatusEnum": {
        "enum": [
          "new",
          "working",
          "complete",
          "cancelled"
        ],
        "type": "string",
        "description": "Job Item to Make status"
      },
      "JobPriorityEnum": {
        "enum": [
          "low",
          "moderate",
          "high"
        ],
        "type": "string",
        "description": "Job priority"
      },
      "JobRequestFindParameters": {
        "type": "object",
        "properties": {
          "jobIds": {
            "maxItems": 500,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter to jobs whose ids are in the list",
            "nullable": true
          },
          "numbers": {
            "maxItems": 500,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Filter jobs to only given numbers",
            "nullable": true
          },
          "jobNames": {
            "maxItems": 500,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter jobs to only given names",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/JobStatusEnum"
          },
          "statuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JobStatusEnum"
            },
            "description": "Filter jobs to match the given statuses",
            "nullable": true
          },
          "parentItemId": {
            "type": "string",
            "description": "Filter jobs based on the id of the parent item they produce",
            "nullable": true
          },
          "hasIncompleteOperations": {
            "type": "boolean",
            "description": "Filters jobs to have those that have at least 1 incomplete operation.\nNote that this will filter out jobs that haven't been approved yet because they technically have \nno operations on them until approved.",
            "nullable": true
          },
          "salesOrderId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Filters for jobs that are for this sales order id.\nPlease reference /api/sales-orders endpoint.",
            "nullable": true
          },
          "createdBeforeUtc": {
            "type": "string",
            "description": "Filters jobs created before (exclusive) this parameter in UTC time. If not time component is passed, midnight UTC will be used.",
            "format": "date-time",
            "nullable": true
          },
          "createdAfterUtc": {
            "type": "string",
            "description": "Filters jobs created after (exclusive) this parameter in UTC time. If not time component is passed, midnight UTC will be used.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding jobs."
      },
      "JobRequestUpdateStatus": {
        "required": [
          "status"
        ],
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/JobStatusEnum"
          },
          "createPOs": {
            "type": "boolean",
            "description": "Create Purchase Orders for the Job. Required for the following statuses: Engineering, Approved",
            "nullable": true
          },
          "isInitialDataImport": {
            "type": "boolean",
            "description": "The job will be created as Complete. No inventory transactions. This is should mostly be used when importing jobs from legacy systems.\nRequired for the following statuses: Complete",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Update a job status."
      },
      "JobStatusEnum": {
        "enum": [
          "draft",
          "needsReview",
          "approved",
          "engineering",
          "scheduled",
          "inProgress",
          "complete",
          "cancelled",
          "hold"
        ],
        "type": "string",
        "description": "Job status"
      },
      "JobTrackingDto": {
        "required": [
          "id",
          "name",
          "number",
          "parentItemId",
          "priority",
          "quantityToMake",
          "status",
          "workOrderIds",
          "workOrders"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique Id associated to this entity"
          },
          "number": {
            "minimum": 0,
            "type": "integer",
            "description": "Job number",
            "format": "int32"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Job name, defaults to number unless otherwise specified."
          },
          "parentItemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique identifier of the parent item produced by this job.\nPlease reference api/items endpoint."
          },
          "quantityToMake": {
            "minimum": 0,
            "type": "number",
            "description": "Quantity of parent item produced by this job",
            "format": "double"
          },
          "productionDueDate": {
            "type": "string",
            "description": "Due date",
            "format": "date-time",
            "nullable": true
          },
          "earliestStartDate": {
            "type": "string",
            "description": "If set, this is the earliest date that the job should be scheduled to begin.",
            "format": "date-time",
            "nullable": true
          },
          "salesOrderId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Identifier of sales order fulfilled by this job, if applicable.\nPlease reference api/sales-orders endpoint.",
            "nullable": true
          },
          "salesOrderLineItemId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Identifier of sales order line item fulfilled by this job, if applicable.\nPlease reference endpoints nested under api/sales-orders.",
            "nullable": true
          },
          "createdUtc": {
            "type": "string",
            "description": "The date the job was created",
            "format": "date-time"
          },
          "originalScheduledStartUtc": {
            "type": "string",
            "description": "The first scheduled start time.",
            "format": "date-time",
            "nullable": true
          },
          "originalScheduledEndUtc": {
            "type": "string",
            "description": "The first scheduled end time.",
            "format": "date-time",
            "nullable": true
          },
          "scheduledStartUtc": {
            "type": "string",
            "description": "The current scheduled start time.",
            "format": "date-time",
            "nullable": true
          },
          "scheduledEndUtc": {
            "type": "string",
            "description": "The current scheduled end time.",
            "format": "date-time",
            "nullable": true
          },
          "completedOnUtc": {
            "type": "string",
            "description": "The job completion datetime.",
            "format": "date-time",
            "nullable": true
          },
          "cancelledOnUtc": {
            "type": "string",
            "description": "The job cancelled datetime.",
            "format": "date-time",
            "nullable": true
          },
          "revenue": {
            "type": "number",
            "description": "Revenue",
            "format": "double",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "Job level internal notes",
            "nullable": true
          },
          "workOrderIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Identifier of work order(s) that this job is associated to, if applicable.\nPlease reference api/work-orders endpoint."
          },
          "workOrders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkOrderReferenceDto"
            },
            "description": "Work order information, if applicable."
          },
          "status": {
            "$ref": "#/components/schemas/JobStatusEnum"
          },
          "priority": {
            "$ref": "#/components/schemas/JobPriorityEnum"
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined on this entity.",
            "nullable": true
          },
          "previousOperations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JobTrackingOperationDetailsDto"
            },
            "description": "The previously completed operation(s) for the job."
          },
          "currentOperations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JobTrackingOperationDetailsDto"
            },
            "description": "The current in progress/paused operation(s) for the job."
          },
          "nextOperations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JobTrackingOperationDetailsDto"
            },
            "description": "The next ready operation(s) for the job."
          },
          "pendingOperations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JobTrackingOperationDetailsDto"
            },
            "description": "The operations that are awaiting other operations to finish."
          },
          "cancelledOperations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JobTrackingOperationDetailsDto"
            },
            "description": "The operations that were cancelled."
          },
          "estimatedSetupTimeInSeconds": {
            "type": "number",
            "description": "Estimated setup time (in seconds).",
            "format": "double",
            "nullable": true,
            "readOnly": true
          },
          "estimatedRunTimeInSeconds": {
            "type": "number",
            "description": "Estimated run time (in seconds).",
            "format": "double",
            "nullable": true,
            "readOnly": true
          },
          "estimatedLaborTimeInSeconds": {
            "type": "number",
            "description": "Estimated labor time (in seconds).",
            "format": "double",
            "nullable": true,
            "readOnly": true
          },
          "estimatedMachineTimeInSeconds": {
            "type": "number",
            "description": "Estimated machine time (in seconds).",
            "format": "double",
            "nullable": true,
            "readOnly": true
          },
          "elapsedSetupTimeInSeconds": {
            "type": "number",
            "description": "Elapsed setup time (in seconds).",
            "format": "double",
            "nullable": true
          },
          "elapsedRunTimeInSeconds": {
            "type": "number",
            "description": "Elapsed run time (in seconds).",
            "format": "double",
            "nullable": true
          },
          "elapsedLaborTimeInSeconds": {
            "type": "number",
            "description": "Elapsed labor time (in seconds).",
            "format": "double",
            "nullable": true
          },
          "elapsedMachineTimeInSeconds": {
            "type": "number",
            "description": "Elapsed machine time (in seconds).",
            "format": "double",
            "nullable": true
          },
          "customerName": {
            "type": "string",
            "description": "The customer that this job is associated with",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a job (for tracking purposes). This is essentially a summary of the job's current state."
      },
      "JobTrackingItemToMakeDto": {
        "required": [
          "depth",
          "id",
          "isCustom",
          "itemId",
          "quantityToMake",
          "status"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique Id associated to this entity"
          },
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Id of the item on which this entity is based.\nPlease reference /api/items endpoint."
          },
          "quantityToMake": {
            "type": "number",
            "description": "Quantity of this item produced by the associated job.",
            "format": "double"
          },
          "isCustom": {
            "type": "boolean",
            "description": "Denotes whether this job produces a customized version of the base item"
          },
          "status": {
            "$ref": "#/components/schemas/JobItemToMakeStatusEnum"
          },
          "quantityMade": {
            "type": "number",
            "description": "Quantity already produced, if the job is in progress.",
            "format": "double",
            "nullable": true
          },
          "depth": {
            "type": "integer",
            "description": "Structurally, identify where in the tree of building the parent item this item lies.\nExample: The top-level item would have a depth of zero and it's direct subcomponents would be 1.\nThis cascades down so that a subcomponent to a subcomponent would be 2... and so on.",
            "format": "int32"
          },
          "costBreakdown": {
            "$ref": "#/components/schemas/CommonCostBreakdownDto"
          },
          "costBreakdownEstimated": {
            "$ref": "#/components/schemas/CommonCostBreakdownDto"
          },
          "itemReference": {
            "$ref": "#/components/schemas/ItemReferenceDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents an item to make on a job (for tracking purposes)"
      },
      "JobTrackingOperationDetailsDto": {
        "required": [
          "itemToMake",
          "operation"
        ],
        "type": "object",
        "properties": {
          "itemToMake": {
            "$ref": "#/components/schemas/JobTrackingItemToMakeDto"
          },
          "operation": {
            "$ref": "#/components/schemas/JobTrackingOperationDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a job operation and the item affected (for tracking purposes)."
      },
      "JobTrackingOperationDto": {
        "required": [
          "id",
          "isOutsideProcessing",
          "order",
          "status",
          "systemOperationId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique Id associated to this entity"
          },
          "status": {
            "$ref": "#/components/schemas/JobItemToMakeOpStatusEnum"
          },
          "order": {
            "minimum": 0,
            "type": "integer",
            "description": "Routing order of the operation",
            "format": "int32"
          },
          "systemOperationId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Identifier of the system operation associated to this entity\nPlease reference api/operations."
          },
          "isOutsideProcessing": {
            "type": "boolean",
            "description": "Denotes whether this is an outside processing operation"
          },
          "originalScheduledStartUtc": {
            "type": "string",
            "description": "The first scheduled start time.",
            "format": "date-time",
            "nullable": true
          },
          "originalScheduledEndUtc": {
            "type": "string",
            "description": "The first scheduled end time.",
            "format": "date-time",
            "nullable": true
          },
          "scheduledStartUtc": {
            "type": "string",
            "description": "Scheduled start datetime of the operation",
            "format": "date-time",
            "nullable": true
          },
          "scheduledEndUtc": {
            "type": "string",
            "description": "Scheduled end datetime of the operation",
            "format": "date-time",
            "nullable": true
          },
          "completedOnUtc": {
            "type": "string",
            "description": "The operation completion datetime.",
            "format": "date-time",
            "nullable": true
          },
          "completedById": {
            "type": "string",
            "description": "Operation completed user identifier. Please reference /api/users endpoint.",
            "nullable": true
          },
          "scheduledEquipmentId": {
            "type": "string",
            "description": "Identifier of the equipment that this operation is scheduled to run on",
            "nullable": true
          },
          "scheduledEquipmentName": {
            "type": "string",
            "description": "The name of the equipment that this operation is scheduled to run on.",
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "The custom field data on the object",
            "nullable": true
          },
          "instructions": {
            "type": "string",
            "description": "Instructions specific to the item to make operation.",
            "nullable": true
          },
          "name": {
            "type": "string",
            "description": "System operation name.",
            "nullable": true
          },
          "leadTimeInDays": {
            "minimum": 0,
            "type": "integer",
            "description": "Number of days required between order and receipt. Only applicable for outside processing operations.",
            "format": "int32",
            "nullable": true
          },
          "associatedPurchaseOrderIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Associated purchase order IDs.",
            "nullable": true
          },
          "estimatedSetupTimeInSeconds": {
            "type": "number",
            "description": "The estimated setup time in seconds for the operation.",
            "format": "double",
            "nullable": true
          },
          "estimatedSetupTimeBasis": {
            "$ref": "#/components/schemas/DomainOperationsRouting_Step_SetupTimeOption"
          },
          "estimatedRunTimeInSeconds": {
            "type": "number",
            "description": "The estimated run time in seconds for the operation.\nNote: This is an obsolete field from when operation could not separate between machine (unattended) and labor (attended) time.",
            "format": "double",
            "nullable": true
          },
          "estimatedRunTimeBasis": {
            "$ref": "#/components/schemas/DomainOperationsRouting_Step_RunTimeOption"
          },
          "estimatedMachineTimeInSeconds": {
            "type": "number",
            "description": "The estimated machine time in seconds for the operation.",
            "format": "double",
            "nullable": true
          },
          "estimatedMachineTimeBasis": {
            "$ref": "#/components/schemas/DomainOperationsRouting_Step_RunTimeOption"
          },
          "estimatedLaborTimeInSeconds": {
            "type": "number",
            "description": "The estimated labor time in seconds for the operation.",
            "format": "double",
            "nullable": true
          },
          "estimatedLaborTimeBasis": {
            "$ref": "#/components/schemas/DomainOperationsRouting_Step_RunTimeOption"
          },
          "isMachineTimeOnly": {
            "type": "boolean",
            "description": "Whether this operation can be run without an employee present.  If true, use the machineTime properties.  If false,\nuse the laborTime properties."
          },
          "workOrderId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Identifier of work order that this operation is associated to, if applicable.\nPlease reference api/work-orders endpoint.",
            "nullable": true
          },
          "isRework": {
            "type": "boolean",
            "description": "Whether this operation is a rework operation (a redo created from a prior operation)."
          },
          "hasAssociatedRework": {
            "type": "boolean",
            "description": "Whether this operation was sent for rework (one or more rework operations were created from it)."
          },
          "rework": {
            "$ref": "#/components/schemas/JobTrackingOperationReworkDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a job operation (for tracking purposes)."
      },
      "JobTrackingOperationReworkDto": {
        "type": "object",
        "properties": {
          "reasonId": {
            "type": "string",
            "description": "Identifier of the rework reason.",
            "nullable": true
          },
          "reason": {
            "type": "string",
            "description": "The rework reason.",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "Free-text notes captured when the rework was recorded.",
            "nullable": true
          },
          "quantityToRework": {
            "type": "integer",
            "description": "The quantity sent for rework.",
            "format": "int32"
          },
          "quantityScrapped": {
            "type": "integer",
            "description": "The quantity scrapped as part of the rework.",
            "format": "int32"
          },
          "hasScrapMaterials": {
            "type": "boolean",
            "description": "Whether scrap materials were tracked as part of the rework."
          },
          "createdByUserId": {
            "type": "string",
            "description": "Identifier of the user who recorded the rework. Please reference /api/users endpoint.",
            "nullable": true
          },
          "createdUtc": {
            "type": "string",
            "description": "The datetime the rework was recorded.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Rework details associated with a job operation."
      },
      "JobTrackingTimerRequestListTimersParameters": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "Filter timers based on who started it",
            "nullable": true
          },
          "jobId": {
            "type": "string",
            "description": "Filter timers based on job",
            "nullable": true
          },
          "runningTimersOnly": {
            "type": "boolean",
            "description": "Filter to only running timers",
            "nullable": true
          },
          "types": {
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DomainTimeTrackingTimer_Type"
            },
            "description": "Filter to specific timer types",
            "nullable": true
          },
          "createdBeforeUtc": {
            "type": "string",
            "description": "Filters timers created before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.",
            "format": "date-time",
            "nullable": true
          },
          "createdAfterUtc": {
            "type": "string",
            "description": "Filters timers created after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.",
            "format": "date-time",
            "nullable": true
          },
          "modifiedBeforeUtc": {
            "type": "string",
            "description": "Filters timers modified before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.",
            "format": "date-time",
            "nullable": true
          },
          "modifiedAfterUtc": {
            "type": "string",
            "description": "Filters timers modified after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.",
            "format": "date-time",
            "nullable": true
          },
          "startedBeforeUtc": {
            "type": "string",
            "description": "Filters timers started before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.",
            "format": "date-time",
            "nullable": true
          },
          "startedAfterUtc": {
            "type": "string",
            "description": "Filters timers started after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.",
            "format": "date-time",
            "nullable": true
          },
          "stoppedBeforeUtc": {
            "type": "string",
            "description": "Filters timers stopped before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.",
            "format": "date-time",
            "nullable": true
          },
          "stoppedAfterUtc": {
            "type": "string",
            "description": "Filters timers stopped after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.",
            "format": "date-time",
            "nullable": true
          },
          "stoppedBeforeUtcOriginal": {
            "type": "string",
            "description": "Filters timers stopped before (exclusive) this parameter in UTC time.\nThis explicitly looks at the ORIGINAL stopped date which means this would be primarily for filtering mechanics that necessitate scope limiting.\nIf no time component is passed, midnight UTC will be used.",
            "format": "date-time",
            "nullable": true
          },
          "stoppedAfterUtcOriginal": {
            "type": "string",
            "description": "Filters timers stopped after (exclusive) this parameter in UTC time.\nThis explicitly looks at the ORIGINAL stopped date which means this would be primarily for filtering mechanics that necessitate scope limiting.\nIf no time component is passed, midnight UTC will be used.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching job tracking timers"
      },
      "JobTrackingTimerStartTimerDto": {
        "required": [
          "itemToMakeId",
          "jobId",
          "operationId",
          "type"
        ],
        "type": "object",
        "properties": {
          "userId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The user identifier to associate the timer to.  If not supplied, will use the user assigned to the api key used for authorization",
            "nullable": true
          },
          "jobId": {
            "minLength": 1,
            "type": "string",
            "description": "The job identifier"
          },
          "itemToMakeId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "The item to make identifier"
          },
          "operationId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "The operation identifier"
          },
          "type": {
            "$ref": "#/components/schemas/DomainTimeTrackingTimer_Type"
          }
        },
        "additionalProperties": false,
        "description": "Model for starting a job tracking timer via the public api"
      },
      "JobTrackingTimerStopTimerDto": {
        "required": [
          "timerId"
        ],
        "type": "object",
        "properties": {
          "userId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The user identifier to associate the timer to.  If not supplied, will use the user assigned to the api key used for authorization",
            "nullable": true
          },
          "timerId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The timer identifier"
          }
        },
        "additionalProperties": false,
        "description": "Model for stopping a timer"
      },
      "JobUpdateDto": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the job",
            "nullable": true
          },
          "priority": {
            "$ref": "#/components/schemas/JobPriorityEnum"
          },
          "quantityToMake": {
            "type": "number",
            "description": "The quantity the job should make",
            "format": "double",
            "nullable": true
          },
          "productionDueDate": {
            "type": "string",
            "description": "The production due date",
            "format": "date-time",
            "nullable": true
          },
          "earliestStartDate": {
            "type": "string",
            "description": "If set, this is the earliest date that the job should be scheduled to begin.",
            "format": "date-time",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "The internal notes",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents an update on an Job."
      },
      "JsonPatchDocument": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/JsonPatchOperation"
        },
        "description": "Array of operations to perform"
      },
      "JsonPatchOperation": {
        "type": "object",
        "properties": {
          "op": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "path": {
            "type": "string"
          }
        }
      },
      "JsonSerializationIContractResolver": {
        "type": "object",
        "additionalProperties": false
      },
      "LocationDto": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Identifying name. Must be unique."
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "A verbose description of the location.",
            "nullable": true
          },
          "barcode": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Barcode identifier for this entity.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Location definition."
      },
      "LocationRequestFindParameters": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter locations based on their name.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding locations."
      },
      "MaterialRequestActivateMaterials": {
        "required": [
          "materialIds"
        ],
        "type": "object",
        "properties": {
          "materialIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Material ids to activate."
          },
          "unit": {
            "$ref": "#/components/schemas/FulcrumProductMaterialsFulcrumLengthUnits"
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for activating materials."
      },
      "MaterialRequestFindParameters": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter materials based on matching ids.",
            "nullable": true
          },
          "materials": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Material names.",
            "nullable": true
          },
          "grades": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Grades.",
            "nullable": true
          },
          "forms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonEnumMaterialFormEnum"
            },
            "description": "Material forms.",
            "nullable": true
          },
          "displayDimensions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "A list of dimension display values to include",
            "nullable": true
          },
          "active": {
            "type": "boolean",
            "description": "Indicate whether to specifically only pull active materials. If left null, all rows are included.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding materials."
      },
      "MaterialRequestGetMaterialRequestDto": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Unique id of the material to retrieve."
          }
        },
        "additionalProperties": false,
        "description": "Request parameters for looking up a single material by id.\nIntroduced for the v2 endpoint because material ids may contain '/' characters,\nwhich cannot be round-tripped through URL path segments."
      },
      "MaterialShapeDto": {
        "required": [
          "form",
          "id",
          "materialReferenceId",
          "materialReferenceName",
          "name",
          "vendors"
        ],
        "type": "object",
        "properties": {
          "id": {
            "minLength": 1,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "active": {
            "type": "boolean",
            "description": "Indicates if this material is activated."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Identifying name."
          },
          "form": {
            "$ref": "#/components/schemas/CommonEnumMaterialFormEnum"
          },
          "materialReferenceId": {
            "minLength": 1,
            "type": "string",
            "description": "Material Id"
          },
          "materialReferenceName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Material name"
          },
          "specification": {
            "type": "string",
            "description": "Specification",
            "nullable": true
          },
          "subSpecification": {
            "type": "string",
            "description": "Sub-specification",
            "nullable": true
          },
          "finish": {
            "type": "string",
            "description": "Finish",
            "nullable": true
          },
          "grade": {
            "type": "string",
            "description": "Grade",
            "nullable": true
          },
          "dimension": {
            "type": "string",
            "description": "Dimension",
            "nullable": true
          },
          "type": {
            "type": "string",
            "description": "Material type",
            "nullable": true
          },
          "version": {
            "type": "string",
            "description": "Version",
            "nullable": true
          },
          "vendors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MaterialShapeVendorDto"
            },
            "description": "Vendors that supply this material."
          }
        },
        "additionalProperties": false,
        "description": "Material definition."
      },
      "MaterialShapeVendorCreateDto": {
        "required": [
          "priceBreaks",
          "priceUnit",
          "vendorId"
        ],
        "type": "object",
        "properties": {
          "vendorId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Vendor id associated to this entity. Please reference /api/vendors endpoint."
          },
          "priceUnit": {
            "$ref": "#/components/schemas/CommonEnumMaterialVendorPriceUnitEnum"
          },
          "isPrimary": {
            "type": "boolean",
            "description": "Signifies if this is the primary vendor for this material."
          },
          "leadTimeInDays": {
            "minimum": 0,
            "type": "integer",
            "description": "Lead time for this vendor.",
            "format": "int32",
            "nullable": true
          },
          "priceBreaks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MaterialShapeVendorPriceBreakCreateDto"
            },
            "description": "Vendor price breaks"
          }
        },
        "additionalProperties": false,
        "description": "Vendor with additional context for a material."
      },
      "MaterialShapeVendorDto": {
        "required": [
          "id",
          "isPrimary",
          "priceBreaks",
          "priceUnit",
          "vendorId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique id associated to this entity.",
            "format": "uuid"
          },
          "vendorId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Vendor identifier. Pelase reference /api/vendors endpoint."
          },
          "isPrimary": {
            "type": "boolean",
            "description": "Signifies if this is the primary vendor for this material."
          },
          "currencyCode": {
            "type": "string",
            "description": "Currency code/denomination associated to this vendor.",
            "nullable": true
          },
          "priceUnit": {
            "$ref": "#/components/schemas/CommonEnumMaterialVendorPriceUnitEnum"
          },
          "leadTimeInDays": {
            "minimum": 0,
            "type": "integer",
            "description": "Number of days required between order and receipt",
            "format": "int32",
            "nullable": true
          },
          "priceBreaks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MaterialShapeVendorPriceBreakDto"
            },
            "description": "Vendor price breaks"
          }
        },
        "additionalProperties": false,
        "description": "Material vendor definition"
      },
      "MaterialShapeVendorPriceBreakCreateDto": {
        "required": [
          "price",
          "quantity"
        ],
        "type": "object",
        "properties": {
          "quantity": {
            "minimum": 0,
            "type": "integer",
            "description": "The minimum quantity to associate this price break to.",
            "format": "int32"
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The price per unit.",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Vendor prices break create/update for a material shape."
      },
      "MaterialShapeVendorPriceBreakDto": {
        "required": [
          "id",
          "price",
          "quantity"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique id associated to this entity.",
            "format": "uuid"
          },
          "quantity": {
            "minimum": 0,
            "type": "integer",
            "description": "The minimum quantity to associate this price break to.",
            "format": "int32"
          },
          "price": {
            "type": "number",
            "description": "The price per unit.",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Vendor prices breaks for a material shape."
      },
      "MaterialShapeVendorUpdateDto": {
        "required": [
          "priceBreaks"
        ],
        "type": "object",
        "properties": {
          "isPrimary": {
            "type": "boolean",
            "description": "Signifies if this is the primary vendor for this material."
          },
          "leadTimeInDays": {
            "minimum": 0,
            "type": "integer",
            "description": "Lead time for this vendor.",
            "format": "int32",
            "nullable": true
          },
          "priceBreaks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MaterialShapeVendorPriceBreakCreateDto"
            },
            "description": "Vendor price breaks"
          }
        },
        "additionalProperties": false,
        "description": "Vendor with additional context for a material."
      },
      "MaterialVendorCreateMaterialVendorRequestDto": {
        "required": [
          "materialId",
          "priceBreaks",
          "priceUnit",
          "vendorId"
        ],
        "type": "object",
        "properties": {
          "materialId": {
            "minLength": 1,
            "type": "string",
            "description": "Unique id of the material to create the vendor on."
          },
          "vendorId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Vendor id associated to this entity. Please reference /api/vendors endpoint."
          },
          "priceUnit": {
            "$ref": "#/components/schemas/CommonEnumMaterialVendorPriceUnitEnum"
          },
          "isPrimary": {
            "type": "boolean",
            "description": "Signifies if this is the primary vendor for this material."
          },
          "leadTimeInDays": {
            "minimum": 0,
            "type": "integer",
            "description": "Lead time for this vendor.",
            "format": "int32",
            "nullable": true
          },
          "priceBreaks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MaterialShapeVendorPriceBreakCreateDto"
            },
            "description": "Vendor price breaks"
          }
        },
        "additionalProperties": false,
        "description": "Request parameters for creating a vendor on a material.\nIntroduced for the v2 endpoint because material ids may contain '/' characters,\nwhich cannot be round-tripped through URL path segments."
      },
      "MaterialVendorListMaterialVendorRequestDto": {
        "required": [
          "materialId"
        ],
        "type": "object",
        "properties": {
          "materialId": {
            "minLength": 1,
            "type": "string",
            "description": "Unique id of the material to list vendors for."
          }
        },
        "additionalProperties": false,
        "description": "Request parameters for listing the vendors on a material.\nIntroduced for the v2 endpoint because material ids may contain '/' characters,\nwhich cannot be round-tripped through URL path segments."
      },
      "MaterialVendorUpdateMaterialVendorRequestDto": {
        "required": [
          "materialId",
          "priceBreaks"
        ],
        "type": "object",
        "properties": {
          "materialId": {
            "minLength": 1,
            "type": "string",
            "description": "Unique id of the material whose vendor will be updated."
          },
          "isPrimary": {
            "type": "boolean",
            "description": "Signifies if this is the primary vendor for this material."
          },
          "leadTimeInDays": {
            "minimum": 0,
            "type": "integer",
            "description": "Lead time for this vendor.",
            "format": "int32",
            "nullable": true
          },
          "priceBreaks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MaterialShapeVendorPriceBreakCreateDto"
            },
            "description": "Vendor price breaks"
          }
        },
        "additionalProperties": false,
        "description": "Request parameters for updating a vendor on a material.\nIntroduced for the v2 endpoint because material ids may contain '/' characters,\nwhich cannot be round-tripped through URL path segments."
      },
      "NCRNcrDto": {
        "required": [
          "cause",
          "detail",
          "id",
          "number",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "number": {
            "minimum": 0,
            "type": "integer",
            "description": "Number",
            "format": "int32"
          },
          "type": {
            "minLength": 1,
            "type": "string",
            "description": "NCR Type"
          },
          "cause": {
            "minLength": 1,
            "type": "string",
            "description": "Cause"
          },
          "detail": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Detail - required notes on the NCR"
          },
          "departmentId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Department key identifier. Please reference /api/departments endpoint.",
            "nullable": true
          },
          "department": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "vendorId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Vendor key identifier. Please reference /api/vendors endpoint.",
            "nullable": true
          },
          "vendor": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "workCenters": {
            "type": "string",
            "description": "The work centers assigned to this NCR.",
            "nullable": true,
            "readOnly": true
          },
          "scheduledEquipment": {
            "type": "string",
            "description": "Affected Equipment",
            "nullable": true,
            "readOnly": true
          },
          "reason": {
            "type": "string",
            "description": "Reason",
            "nullable": true
          },
          "operator": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "status": {
            "type": "string",
            "description": "NCR Status",
            "nullable": true
          },
          "quantityImpacted": {
            "type": "number",
            "description": "Quantity Impacted",
            "format": "double",
            "nullable": true,
            "readOnly": true
          },
          "incrementalCost": {
            "type": "number",
            "description": "Incremental Cost",
            "format": "double",
            "nullable": true,
            "readOnly": true
          },
          "createdUtc": {
            "type": "string",
            "description": "Created Date",
            "format": "date-time",
            "nullable": true
          },
          "completedUtc": {
            "type": "string",
            "description": "Completed Date",
            "format": "date-time",
            "nullable": true
          },
          "jobIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Impacted Job IDs",
            "readOnly": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined on this entity.",
            "nullable": true
          },
          "completedBy": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "analyzedBy": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "impacts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonImpactDto"
            },
            "description": "Impact information.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents an NCR"
      },
      "NCRRequestNcrListParameters": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "Filter NCRs by a specific status\nAccepted Values:\nClosed, Hold, New, Quality Review, Engineering Review",
            "nullable": true
          },
          "type": {
            "type": "string",
            "description": "Filter NCRs by a specific type. Available values are configured per tenant in Quality settings (NCR dropdowns).",
            "nullable": true
          },
          "cause": {
            "type": "string",
            "description": "Filter NCRs by a specific cause. Available values are configured per tenant in Quality settings (NCR dropdowns).",
            "nullable": true
          },
          "reason": {
            "type": "string",
            "description": "Filter NCRs by a specific reason. Available values are configured per tenant in Quality settings (NCR dropdowns).",
            "nullable": true
          },
          "createdUtc": {
            "type": "string",
            "description": "Filter NCRs created after a certain date",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching NCRs"
      },
      "NoteCreateDto": {
        "required": [
          "body",
          "parentId",
          "parentType"
        ],
        "type": "object",
        "properties": {
          "parentId": {
            "maxLength": 36,
            "minLength": 24,
            "type": "string",
            "description": "Unique identifier of the object to which the note is attached\nCan be 24 or 36 characters, depending on parent type"
          },
          "parentType": {
            "$ref": "#/components/schemas/NoteTypeEnum"
          },
          "body": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Note text"
          },
          "mentions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "User Ids to tag in the note. Please reference /api/users endpoints.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a note on a document"
      },
      "NoteDto": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "parentId": {
            "maxLength": 36,
            "minLength": 24,
            "type": "string",
            "description": "Unique identifier of the object to which the note is attached\nCan be 24 or 36 characters, depending on parent type",
            "nullable": true
          },
          "parentType": {
            "$ref": "#/components/schemas/NoteTypeEnum"
          },
          "body": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Note text",
            "nullable": true
          },
          "mentions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "User Ids to tag in the note. Please reference /api/users endpoints.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a note on a document"
      },
      "NoteRequestFindParameters": {
        "required": [
          "parentId",
          "parentType"
        ],
        "type": "object",
        "properties": {
          "parentType": {
            "$ref": "#/components/schemas/NoteTypeEnum"
          },
          "parentId": {
            "maxLength": 36,
            "minLength": 24,
            "type": "string",
            "description": "Filter notes by parent Id.\nEither 24 or 36 characters, depending on parent type"
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching notes"
      },
      "NoteTypeEnum": {
        "enum": [
          "salesOrder",
          "purchaseOrder",
          "quote",
          "invoice"
        ],
        "type": "string",
        "description": "Note parent document type"
      },
      "OperationCreateDto": {
        "required": [
          "description",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name of operation."
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The description of the operation."
          },
          "isOutsideProcessing": {
            "type": "boolean",
            "description": "Specifies whether this is an outside processing operation."
          },
          "setupTime": {
            "$ref": "#/components/schemas/ItemRoutingOperationTime"
          },
          "laborTime": {
            "$ref": "#/components/schemas/ItemRoutingOperationTime"
          },
          "machineTime": {
            "$ref": "#/components/schemas/ItemRoutingOperationTime"
          },
          "machineTimeTrackingEnabled": {
            "type": "boolean",
            "description": "Specifies whether machine tracking is enabled."
          },
          "outsideProcessingCost": {
            "$ref": "#/components/schemas/ItemRoutingOutsideProcessingOperationCost"
          },
          "defaultVendorId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Default vendor id that will be used for this operation. Please reference /api/vendors endpoint.",
            "nullable": true
          },
          "vendors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Available vendors.",
            "nullable": true
          },
          "leadDays": {
            "minimum": 0,
            "type": "integer",
            "description": "Lead days.",
            "format": "int32",
            "nullable": true
          },
          "instructions": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Instructions.",
            "nullable": true
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Details of operation to be created"
      },
      "OperationDto": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Identifying name. Must be unique."
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "A verbose description of the location.",
            "nullable": true
          },
          "setupTime": {
            "$ref": "#/components/schemas/ItemRoutingOperationTime"
          },
          "laborTime": {
            "$ref": "#/components/schemas/ItemRoutingOperationTime"
          },
          "machineTimeTrackingEnabled": {
            "type": "boolean",
            "description": "Is machine time tracking enabled.",
            "nullable": true
          },
          "machineTime": {
            "$ref": "#/components/schemas/ItemRoutingOperationTime"
          },
          "isOutsideProcessing": {
            "type": "boolean",
            "description": "Specifies whether this is an outside processing operation"
          },
          "outsideProcessingCost": {
            "$ref": "#/components/schemas/ItemRoutingOutsideProcessingOperationCost"
          },
          "unattended": {
            "type": "boolean",
            "description": "Specifies whether this is operation will be unattended."
          },
          "defaultVendorId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Default vendor id that will be used for this operation. Please reference /api/vendors endpoint.",
            "nullable": true
          },
          "leadDays": {
            "type": "integer",
            "description": "Lead days.",
            "format": "int32"
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "workCenters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonReferenceDto"
            },
            "description": "The work centers associated with the operation"
          },
          "isNestable": {
            "type": "boolean",
            "description": "Indicates if this operation is nestable."
          },
          "instructions": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Instructions.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Operation definition."
      },
      "OperationRequestFindParameters": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter operations based on their name.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding operations."
      },
      "PaymentTermRequestFindParameters": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter payment terms based on their name.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding payment terms."
      },
      "PriceBreakItemPriceBreakPointDto": {
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Identifier for this break point. Server-generated; ignored on write.",
            "nullable": true
          },
          "quantity": {
            "maximum": 2147483647,
            "minimum": 2,
            "type": "integer",
            "description": "The quantity at which this break point becomes active. Must be greater than 1\n(the unit/base price covers quantity 1).",
            "format": "int32"
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The price per unit at this break point. Required for Price-type sales breaks and all\npurchase (Cost) breaks.",
            "format": "double",
            "nullable": true
          },
          "margin": {
            "type": "number",
            "description": "The margin percentage at this break point. Used when the price break is calculated by Margin.",
            "format": "double",
            "nullable": true
          },
          "showOnPdf": {
            "type": "boolean",
            "description": "Whether this break point should be displayed on customer-facing PDFs (quotes, sales orders).\nHas no effect for purchase price breaks."
          }
        },
        "additionalProperties": false,
        "description": "A single quantity break inside a price break."
      },
      "PriceBreakListPurchasePriceBreaksDto": {
        "type": "object",
        "properties": {
          "vendorId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Restrict to price breaks for the given vendor.",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "description": "Restrict to price breaks in the given currency.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Filters for listing purchase price breaks."
      },
      "PriceBreakListSalesPriceBreaksDto": {
        "type": "object",
        "properties": {
          "customerId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Restrict to price breaks for the given customer.",
            "nullable": true
          },
          "customerTierId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Restrict to price breaks for the given customer tier.",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "description": "Restrict to price breaks in the given currency.",
            "nullable": true
          },
          "baseOnly": {
            "type": "boolean",
            "description": "When true, include only the item's base price (no customer or customer tier).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Filters for listing sales price breaks."
      },
      "PriceBreakPurchasePriceBreakDto": {
        "required": [
          "breakPoints",
          "id",
          "itemId",
          "vendorId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Identifier of the price break."
          },
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Identifier of the item this price break applies to."
          },
          "vendorId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Identifier of the vendor this price break applies to."
          },
          "currencyCode": {
            "type": "string",
            "description": "ISO 4217 currency code. Null indicates the company's primary currency.",
            "nullable": true
          },
          "unitOfMeasureName": {
            "type": "string",
            "description": "Purchasing unit of measure for this price break. Null indicates the item's default unit of measure.",
            "nullable": true
          },
          "unitPrice": {
            "type": "number",
            "description": "The unit price at quantity 1.",
            "format": "double",
            "nullable": true
          },
          "vendorItemNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The vendor's part number for this item, if different from the internal number.",
            "nullable": true
          },
          "vendorItemName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The vendor's part description for this item.",
            "nullable": true
          },
          "breakPoints": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PriceBreakItemPriceBreakPointDto"
            },
            "description": "Quantity break points beyond quantity 1."
          },
          "modifiedUtc": {
            "type": "string",
            "description": "When this price break was last modified.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Purchase (vendor cost) price break for an item."
      },
      "PriceBreakPurchasePriceBreakUpsertDto": {
        "required": [
          "breakPoints",
          "vendorId"
        ],
        "type": "object",
        "properties": {
          "vendorId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Identifier of the vendor this price break applies to."
          },
          "currencyCode": {
            "type": "string",
            "description": "ISO 4217 currency code. Null is treated as the vendor's currency (or, if the vendor has no\ncurrency, the company's primary currency) for identity matching. When matching an existing\nbreak, that break's stored CurrencyCode is preserved. On insert, the value stored is the\nsupplied value or the vendor's currency if none was supplied.",
            "nullable": true
          },
          "unitOfMeasureName": {
            "type": "string",
            "description": "Purchasing unit of measure. Null indicates the item's default unit of measure.\nSame null/default-equivalence rules as FulcrumProduct.PublicApi.Dto.PriceBreak.PurchasePriceBreakUpsertDto.CurrencyCode.",
            "nullable": true
          },
          "unitPrice": {
            "minimum": 0,
            "type": "number",
            "description": "The unit price at quantity 1. Required.",
            "format": "double",
            "nullable": true
          },
          "vendorItemNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The vendor's part number for this item, if different from the internal number.",
            "nullable": true
          },
          "vendorItemName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The vendor's part description for this item.",
            "nullable": true
          },
          "breakPoints": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PriceBreakItemPriceBreakPointDto"
            },
            "description": "Quantity break points beyond quantity 1. The complete set of break points is replaced\non each upsert; omit a quantity to remove it."
          }
        },
        "additionalProperties": false,
        "description": "Upsert payload for a purchase (vendor cost) price break.\n            \nIdentity key (item-id is the route parameter):\n  FulcrumProduct.PublicApi.Dto.PriceBreak.PurchasePriceBreakUpsertDto.VendorId, FulcrumProduct.PublicApi.Dto.PriceBreak.PurchasePriceBreakUpsertDto.CurrencyCode, FulcrumProduct.PublicApi.Dto.PriceBreak.PurchasePriceBreakUpsertDto.UnitOfMeasureName.\nIf a price break already exists for this key, it is updated; otherwise a new one is created."
      },
      "PriceBreakSalesPriceBreakDto": {
        "required": [
          "breakPoints",
          "id",
          "itemId",
          "pricingType"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Identifier of the price break."
          },
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Identifier of the item this price break applies to."
          },
          "customerId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Identifier of the customer this price break applies to. Mutually exclusive with\nFulcrumProduct.PublicApi.Dto.PriceBreak.SalesPriceBreakDto.CustomerTierId; null on both means this is the item's base price.",
            "nullable": true
          },
          "customerTierId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Identifier of the customer tier this price break applies to. Mutually exclusive with\nFulcrumProduct.PublicApi.Dto.PriceBreak.SalesPriceBreakDto.CustomerId; null on both means this is the item's base price.",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "description": "ISO 4217 currency code. Null indicates the company's primary currency.",
            "nullable": true
          },
          "unitOfMeasureName": {
            "type": "string",
            "description": "Sales unit of measure for this price break. Null indicates the item's default sales unit of measure.",
            "nullable": true
          },
          "pricingType": {
            "$ref": "#/components/schemas/DtoPriceBreakSalesPriceBreakPricingTypeEnum"
          },
          "unitPrice": {
            "type": "number",
            "description": "The unit price at quantity 1. Populated when FulcrumProduct.PublicApi.Dto.PriceBreak.SalesPriceBreakDto.PricingType is Price.",
            "format": "double",
            "nullable": true
          },
          "margin": {
            "type": "number",
            "description": "The margin percentage applied at quantity 1. Populated when FulcrumProduct.PublicApi.Dto.PriceBreak.SalesPriceBreakDto.PricingType is Margin.",
            "format": "double",
            "nullable": true
          },
          "showOnPdf": {
            "type": "boolean",
            "description": "Whether the unit/base price should be displayed on customer-facing PDFs."
          },
          "breakPoints": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PriceBreakItemPriceBreakPointDto"
            },
            "description": "Quantity break points beyond quantity 1."
          },
          "modifiedUtc": {
            "type": "string",
            "description": "When this price break was last modified.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Sales price break for an item. A sales price break is targeted at one of:\nthe item's base price, a specific customer, or a customer tier."
      },
      "PriceBreakSalesPriceBreakUpsertDto": {
        "required": [
          "breakPoints",
          "pricingType"
        ],
        "type": "object",
        "properties": {
          "customerId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Identifier of the customer this price break applies to. Mutually exclusive with\nFulcrumProduct.PublicApi.Dto.PriceBreak.SalesPriceBreakUpsertDto.CustomerTierId. Leave both null to upsert the item's base price.",
            "nullable": true
          },
          "customerTierId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Identifier of the customer tier this price break applies to. Mutually exclusive with\nFulcrumProduct.PublicApi.Dto.PriceBreak.SalesPriceBreakUpsertDto.CustomerId. Leave both null to upsert the item's base price.",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "description": "ISO 4217 currency code. Null indicates the company's primary currency.\nNull and the explicit primary currency code are treated as equivalent for identity matching;\nwhen matching an existing break, that break's stored CurrencyCode is preserved (legacy\nrecords may hold null even after primary is set, and downstream code distinguishes them).\nOn insert, the value is stored exactly as supplied.",
            "nullable": true
          },
          "unitOfMeasureName": {
            "type": "string",
            "description": "Sales unit of measure. Null indicates the item's default sales unit of measure.\nSame null/default-equivalence rules as FulcrumProduct.PublicApi.Dto.PriceBreak.SalesPriceBreakUpsertDto.CurrencyCode.",
            "nullable": true
          },
          "pricingType": {
            "$ref": "#/components/schemas/DtoPriceBreakSalesPriceBreakPricingTypeEnum"
          },
          "unitPrice": {
            "minimum": 0,
            "type": "number",
            "description": "The unit price at quantity 1. Required when FulcrumProduct.PublicApi.Dto.PriceBreak.SalesPriceBreakUpsertDto.PricingType is Price.",
            "format": "double",
            "nullable": true
          },
          "margin": {
            "type": "number",
            "description": "The margin percentage at quantity 1. Required when FulcrumProduct.PublicApi.Dto.PriceBreak.SalesPriceBreakUpsertDto.PricingType is Margin.",
            "format": "double",
            "nullable": true
          },
          "showOnPdf": {
            "type": "boolean",
            "description": "Whether the unit/base price should be displayed on customer-facing PDFs."
          },
          "breakPoints": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PriceBreakItemPriceBreakPointDto"
            },
            "description": "Quantity break points beyond quantity 1. The complete set of break points is replaced\non each upsert; omit a quantity to remove it."
          }
        },
        "additionalProperties": false,
        "description": "Upsert payload for a sales price break.\n            \nIdentity key (item-id is the route parameter):\n  FulcrumProduct.PublicApi.Dto.PriceBreak.SalesPriceBreakUpsertDto.CustomerId, FulcrumProduct.PublicApi.Dto.PriceBreak.SalesPriceBreakUpsertDto.CustomerTierId, FulcrumProduct.PublicApi.Dto.PriceBreak.SalesPriceBreakUpsertDto.CurrencyCode, FulcrumProduct.PublicApi.Dto.PriceBreak.SalesPriceBreakUpsertDto.UnitOfMeasureName.\nIf a price break already exists for this key, it is updated; otherwise a new one is created."
      },
      "PurchaseOrderAppliedTaxDto": {
        "required": [
          "taxAmount",
          "taxLineItemId"
        ],
        "type": "object",
        "properties": {
          "taxLineItemId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "The id of the PO-level tax line item that generated this tax amount.\nReference /api/purchase-orders/{id}/tax-line-items for full details."
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The tax code id. Please reference /api/tax-rates endpoint.",
            "nullable": true
          },
          "taxCodeCode": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The tax code identifier string (e.g., \"CA State Tax\").",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "The tax rate applied (as a decimal, e.g., 0.0725 for 7.25%).",
            "format": "double"
          },
          "taxAmount": {
            "type": "number",
            "description": "The calculated tax amount allocated to this line item from this tax line.",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Represents a tax allocation from a PO-level tax line item to an individual line item."
      },
      "PurchaseOrderCreateDto": {
        "required": [
          "type",
          "vendorId"
        ],
        "type": "object",
        "properties": {
          "vendorId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Vendor Id"
          },
          "type": {
            "$ref": "#/components/schemas/PurchaseOrderTypeEnum"
          },
          "contactId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Vendor Contact Id;\ndefaults to the Id of the first contact belonging to the input vendor",
            "nullable": true
          },
          "companyInfoId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Company Information Id;\ndefaults to primary company info Id",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "description": "Currency code override;\ndefaults to vendor currency code override, then the company's primary currency code",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "External references associated with this entity.",
            "nullable": true
          },
          "expectedReceiveDate": {
            "type": "string",
            "description": "PO Expected receipt date",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Details of purchase order to be created"
      },
      "PurchaseOrderDiscountLineItemDto": {
        "required": [
          "accountingDetails",
          "amount",
          "id",
          "isPercentage",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name of the discount line."
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Line item description",
            "nullable": true
          },
          "isPercentage": {
            "type": "boolean",
            "description": "Indicates whether FulcrumProduct.PublicApi.Dto.PurchaseOrder.DiscountLineItem.DiscountLineItemDto.Amount discount is percentage based (else, it's an absolute amount)."
          },
          "amount": {
            "minimum": 0,
            "type": "number",
            "description": "The amount of the discount.",
            "format": "double"
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          },
          "price": {
            "type": "number",
            "description": "The calculated amount of this discount.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a discount line item on a purchase order."
      },
      "PurchaseOrderDto": {
        "required": [
          "companyInfoId",
          "contactId",
          "id",
          "number",
          "receivingStatus",
          "status",
          "type",
          "vendorId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "number": {
            "minimum": 0,
            "type": "integer",
            "description": "Number",
            "format": "int32"
          },
          "issueDate": {
            "type": "string",
            "description": "PO creation date",
            "format": "date-time",
            "nullable": true
          },
          "earliestReceiveDate": {
            "type": "string",
            "description": "Earliest Receive Date",
            "format": "date-time",
            "nullable": true
          },
          "orderDate": {
            "type": "string",
            "description": "PO order date (null until status set to Ordered)",
            "format": "date-time",
            "nullable": true
          },
          "expectedReceiveDate": {
            "type": "string",
            "description": "PO Expected receipt date",
            "format": "date-time",
            "nullable": true
          },
          "promiseDate": {
            "type": "string",
            "description": "PO Promise date.",
            "format": "date-time",
            "nullable": true
          },
          "vendorId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Vendor Id"
          },
          "contactId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Vendor Contact Id"
          },
          "paymentTermsId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Payment terms key identifier. Please reference /api/payment-terms endpoint.",
            "nullable": true
          },
          "paymentTerms": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "type": {
            "$ref": "#/components/schemas/PurchaseOrderTypeEnum"
          },
          "status": {
            "$ref": "#/components/schemas/PurchaseOrderStatusEnum"
          },
          "receivingStatus": {
            "$ref": "#/components/schemas/PurchaseOrderReceivingStatusEnum"
          },
          "vendorCredit": {
            "type": "number",
            "description": "Vendor credit applied to this purchase order, if applicable",
            "format": "double",
            "nullable": true
          },
          "discount": {
            "type": "number",
            "description": "Discount applied to this purchase order, if applicable",
            "format": "double",
            "nullable": true
          },
          "subTotal": {
            "type": "number",
            "description": "Total cost of this purchase order, sans tax (if applicable)",
            "format": "double"
          },
          "total": {
            "type": "number",
            "description": "Total cost of this purchase order, tax included (if applicable)",
            "format": "double"
          },
          "companyInfoId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Company Information Id;"
          },
          "vendorNote": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The vendor note is a string property that represents a note provided to the vendor.",
            "nullable": true
          },
          "notes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Notes",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "External references associated with this entity.",
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined on this entity.",
            "nullable": true
          },
          "deleted": {
            "type": "boolean",
            "description": "Indicates whether this purchase order has been deleted"
          },
          "currencyCode": {
            "minLength": 1,
            "type": "string",
            "description": "Currency code/denomination associated to this vendor.\nIf not provided, default to the primary currency code for the organization.",
            "nullable": true
          },
          "vendorOrderNumber": {
            "type": "string",
            "description": "The vendor's purchase order number",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a purchase order"
      },
      "PurchaseOrderEnumLineItemReceiptStatusEnum": {
        "enum": [
          "open",
          "partiallyReceived",
          "received"
        ],
        "type": "string",
        "description": "Purchase order line item receipt status"
      },
      "PurchaseOrderFeeLineItemCreateDto": {
        "required": [
          "price"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose name for this entity.",
            "nullable": true
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose description for this entity.",
            "nullable": true
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity. Required for receivable line items.",
            "format": "double",
            "nullable": true
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item unit price.",
            "format": "double"
          },
          "isReceivable": {
            "type": "boolean",
            "description": "Dictate if this fee is receivable. If not provided, defaults to false.",
            "nullable": true
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "unitOfMeasure": {
            "$ref": "#/components/schemas/CommonEnumLineItemUomEnum"
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this fee is taxable. If not provided, defaults to false.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax code to use for this entity. If a FulcrumProduct.PublicApi.Dto.PurchaseOrder.FeeLineItem.FeeLineItemCreateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.PurchaseOrder.FeeLineItem.FeeLineItemCreateDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Indicate if the tax supplied is intended to be an override.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a fee line item on a purchase order."
      },
      "PurchaseOrderFeeLineItemDto": {
        "required": [
          "accountingDetails",
          "id",
          "price"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose name for this entity.",
            "nullable": true
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Verbose description for this entity.",
            "nullable": true
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double",
            "nullable": true
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item unit price.",
            "format": "double"
          },
          "unitOfMeasure": {
            "$ref": "#/components/schemas/CommonEnumLineItemUomEnum"
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this fee is taxable.",
            "nullable": true
          },
          "isReceivable": {
            "type": "boolean",
            "description": "Dictate if this fee is receivable.",
            "nullable": true
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Dictate if the tax rate is overridden.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.",
            "nullable": true
          },
          "taxRate": {
            "type": "number",
            "description": "Tax code to use for this entity. If a FulcrumProduct.PublicApi.Dto.PurchaseOrder.FeeLineItem.FeeLineItemDto.TaxCodeId is provided and FulcrumProduct.PublicApi.Dto.PurchaseOrder.FeeLineItem.FeeLineItemDto.OverrideTaxRate = true, the provided FulcrumProduct.PublicApi.Dto.PurchaseOrder.FeeLineItem.FeeLineItemDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a fee line item on a purchase order."
      },
      "PurchaseOrderFeeLineItemUpdateDto": {
        "required": [
          "price"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose name for this entity.",
            "nullable": true
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose description for this entity.",
            "nullable": true
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity. Required for receivable line items.",
            "format": "double",
            "nullable": true
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.",
            "format": "double"
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "unitOfMeasure": {
            "$ref": "#/components/schemas/CommonEnumLineItemUomEnum"
          },
          "isReceivable": {
            "type": "boolean",
            "description": "Dictate if this fee is receivable. If not provided, defaults to false.",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this fee is taxable. If not provided, defaults to false.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax code to use for this entity. If a FulcrumProduct.PublicApi.Dto.PurchaseOrder.FeeLineItem.FeeLineItemUpdateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.PurchaseOrder.FeeLineItem.FeeLineItemUpdateDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Indicate if the tax supplied is intended to be an override.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a fee line item on a purchase order."
      },
      "PurchaseOrderLineItemDto": {
        "required": [
          "accountingDetails",
          "id",
          "isTaxable",
          "preDiscountSubTotal",
          "price",
          "quantity",
          "subTotal",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "type": {
            "$ref": "#/components/schemas/PurchaseOrderLineItemTypeEnum"
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.",
            "format": "double"
          },
          "discountedPrice": {
            "minimum": 0,
            "type": "number",
            "description": "The line item discounted unit price.",
            "format": "double",
            "nullable": true
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose name for this entity.",
            "nullable": true
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Line item description.",
            "nullable": true
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double"
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The key identifier for the tax code for the line item.",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this line item is taxable."
          },
          "lineItemId": {
            "type": "string",
            "description": "The line item id (if applicable).",
            "nullable": true
          },
          "expectedReceiveDate": {
            "type": "string",
            "description": "Line item Expected receipt date.",
            "format": "date-time",
            "nullable": true
          },
          "subTotal": {
            "minimum": 0,
            "type": "number",
            "description": "Total line item cost, including applicable discounts",
            "format": "double"
          },
          "preDiscountSubTotal": {
            "minimum": 0,
            "type": "number",
            "description": "Total line item cost, before discounts",
            "format": "double"
          },
          "isPercentageDiscount": {
            "type": "boolean",
            "description": "Indicates whether FulcrumProduct.PublicApi.Dto.PurchaseOrder.PurchaseOrderLineItemDto.DiscountAmount discount is percentage based (else, it's an absolute amount).",
            "nullable": true
          },
          "discountAmount": {
            "type": "number",
            "description": "The amount of the discount.",
            "format": "double",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a generic line item on a purchase order."
      },
      "PurchaseOrderLineItemTaxAllocationResponseDto": {
        "type": "object",
        "properties": {
          "appliedTaxes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PurchaseOrderAppliedTaxDto"
            },
            "description": "Tax amounts allocated to this line item from PO-level tax lines.\nNull if the line item is not taxable or has no tax allocations.",
            "nullable": true
          },
          "totalTax": {
            "type": "number",
            "description": "Total tax amount allocated to this line item across all applicable tax lines.\nNull if the line item is not taxable.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Tax allocation data for a purchase order line item."
      },
      "PurchaseOrderLineItemTypeEnum": {
        "enum": [
          "part",
          "outsideProcessing",
          "tax",
          "discount",
          "fee",
          "vendorCredit"
        ],
        "type": "string",
        "description": "Purchase order line item type"
      },
      "PurchaseOrderListDto": {
        "required": [
          "id",
          "number",
          "receivingStatus",
          "status",
          "type",
          "vendorId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "number": {
            "minimum": 0,
            "type": "integer",
            "description": "Number",
            "format": "int32"
          },
          "issueDate": {
            "type": "string",
            "description": "PO creation date",
            "format": "date-time",
            "nullable": true
          },
          "orderDate": {
            "type": "string",
            "description": "PO order date (null until status set to Ordered)",
            "format": "date-time",
            "nullable": true
          },
          "vendorId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Vendor Id"
          },
          "type": {
            "$ref": "#/components/schemas/PurchaseOrderTypeEnum"
          },
          "status": {
            "$ref": "#/components/schemas/PurchaseOrderStatusEnum"
          },
          "receivingStatus": {
            "$ref": "#/components/schemas/PurchaseOrderReceivingStatusEnum"
          },
          "expectedReceiveDate": {
            "type": "string",
            "description": "PO Expected receipt date",
            "format": "date-time",
            "nullable": true
          },
          "customFieldData": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom Fields",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "External references associated with this entity.",
            "nullable": true
          },
          "currencyCode": {
            "minLength": 1,
            "type": "string",
            "description": "Currency code/denomination associated to this vendor.\nIf not provided, default to the primary currency code for the organization.",
            "nullable": true
          },
          "vendorOrderNumber": {
            "type": "string",
            "description": "The vendor's purchase order number",
            "nullable": true
          },
          "vendorNote": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The vendor note is a string property that represents a note provided to the vendor.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a purchase order"
      },
      "PurchaseOrderOutsideProcessingLineItemCreateDto": {
        "required": [
          "jobId",
          "operationId"
        ],
        "type": "object",
        "properties": {
          "jobId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Job id associated with this line item."
          },
          "operationId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Operation id associated with this line item."
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity.  If not provided, defaults to Job operation QuantityToMake",
            "format": "double",
            "nullable": true
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item unit price.  If not provided, defaults to price data stored on Job operation.",
            "format": "double",
            "nullable": true
          },
          "expectedReceiveDate": {
            "type": "string",
            "description": "Expected receipt date for this line item.",
            "format": "date-time",
            "nullable": true
          },
          "promiseDate": {
            "type": "string",
            "description": "Promise date (UTC).",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents an outside processing line item on a purchase order."
      },
      "PurchaseOrderOutsideProcessingLineItemDto": {
        "required": [
          "accountingDetails",
          "id",
          "isTaxable",
          "itemId",
          "jobId",
          "name",
          "operationId",
          "price",
          "quantity"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Line item name"
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double"
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item unit price.",
            "format": "double"
          },
          "jobId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Job id associated with this line item."
          },
          "operationId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Job operation associated with this line item."
          },
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item id associated with this line item."
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictates whether the line item is taxable."
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The line item description.",
            "nullable": true
          },
          "receivedStatus": {
            "$ref": "#/components/schemas/PurchaseOrderEnumLineItemReceiptStatusEnum"
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined for the outside processing line item.",
            "nullable": true
          },
          "expectedReceiveDate": {
            "type": "string",
            "description": "Expected receipt date for this line item.",
            "format": "date-time",
            "nullable": true
          },
          "promiseDate": {
            "type": "string",
            "description": "Promise date (UTC).",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents an outside processing line item on a purchase order."
      },
      "PurchaseOrderOutsideProcessingLineItemUpdateDto": {
        "type": "object",
        "properties": {
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double",
            "nullable": true
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.",
            "format": "double",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "expectedReceiveDate": {
            "type": "string",
            "description": "Expected receipt date for this line item.",
            "format": "date-time",
            "nullable": true
          },
          "promiseDate": {
            "type": "string",
            "description": "Promise date (UTC).",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents an outside processing line item on a purchase order"
      },
      "PurchaseOrderPartLineItemCreateDto": {
        "required": [
          "itemId"
        ],
        "type": "object",
        "properties": {
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item id associated with this line item."
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double"
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item unit price. Defaults to item's vendor price, if not provided.",
            "format": "double",
            "nullable": true
          },
          "isTaxExempt": {
            "type": "boolean",
            "description": "Dictate if this line item is tax exempt.  Defaults to item details, if not provided.",
            "nullable": true
          },
          "expectedReceiveDate": {
            "type": "string",
            "description": "Expected receipt date for this line item.",
            "format": "date-time",
            "nullable": true
          },
          "promiseDate": {
            "type": "string",
            "description": "Promise date (UTC).",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a part line item on a purchase order."
      },
      "PurchaseOrderPartLineItemDto": {
        "required": [
          "accountingDetails",
          "discountedPrice",
          "id",
          "isInventoried",
          "isTaxable",
          "itemId",
          "name",
          "preDiscountSubTotal",
          "price",
          "quantity",
          "receivedStatus",
          "subTotal"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "part line item name"
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double"
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item unit price.",
            "format": "double"
          },
          "discountedPrice": {
            "minimum": 0,
            "type": "number",
            "description": "The line item discounted unit price.",
            "format": "double"
          },
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item id associated with this line item."
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictates whether the line item is taxable."
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Dictate if the tax rate is overridden.",
            "nullable": true
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The part line item description.",
            "nullable": true
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "receivedStatus": {
            "$ref": "#/components/schemas/PurchaseOrderEnumLineItemReceiptStatusEnum"
          },
          "convertedQuantity": {
            "type": "number",
            "description": "Quantity converted into vendor UoM, if applicable",
            "format": "double",
            "nullable": true
          },
          "subTotal": {
            "minimum": 0,
            "type": "number",
            "description": "Total line item cost, including applicable discounts",
            "format": "double"
          },
          "preDiscountSubTotal": {
            "minimum": 0,
            "type": "number",
            "description": "Total line item cost, before discounts",
            "format": "double"
          },
          "expectedReceiveDate": {
            "type": "string",
            "description": "Expected receipt date for this line item",
            "format": "date-time",
            "nullable": true
          },
          "promiseDate": {
            "type": "string",
            "description": "Promise date (UTC).",
            "format": "date-time",
            "nullable": true
          },
          "notes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "General notes associated to this part line item",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "customFieldData": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom Fields",
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined for the part line item. This should be used in favor of \"CustomFieldData\".",
            "nullable": true
          },
          "isPercentageDiscount": {
            "type": "boolean",
            "description": "Indicates whether FulcrumProduct.PublicApi.Dto.PurchaseOrder.PartLineItem.PartLineItemDto.DiscountAmount discount is percentage based (else, it's an absolute amount).",
            "nullable": true
          },
          "discountAmount": {
            "type": "number",
            "description": "The amount of the discount.",
            "format": "double",
            "nullable": true
          },
          "vendorPartNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The vendor's known part line item number.",
            "nullable": true
          },
          "vendorPartDescription": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The vendor's known part line item description.",
            "nullable": true
          },
          "vendorNote": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Notes intended for the vendor for this part line item",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          },
          "isInventoried": {
            "type": "boolean",
            "description": "Indicate if this item is an inventoried item."
          }
        },
        "additionalProperties": false,
        "description": "Represents a part line item on a purchase order."
      },
      "PurchaseOrderPartLineItemUpdateDto": {
        "required": [
          "quantity"
        ],
        "type": "object",
        "properties": {
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double"
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item unit price. Defaults to item's vendor price, if not provided.",
            "format": "double",
            "nullable": true
          },
          "isTaxExempt": {
            "type": "boolean",
            "description": "Override tax exempt status of the part line item, if present.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "vendorNote": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Notes intended for the vendor for this part line item",
            "nullable": true
          },
          "expectedReceiveDate": {
            "type": "string",
            "description": "Expected receipt date (UTC)",
            "format": "date-time",
            "nullable": true
          },
          "promiseDate": {
            "type": "string",
            "description": "Promise date (UTC).",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a part line item on a purchase order."
      },
      "PurchaseOrderReceivingStatusEnum": {
        "enum": [
          "notReceived",
          "partiallyReceived",
          "received"
        ],
        "type": "string",
        "description": "Purchase order receipt status"
      },
      "PurchaseOrderRequestFindParameters": {
        "type": "object",
        "properties": {
          "numbers": {
            "maxItems": 500,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Filter purchase orders to only given numbers",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/PurchaseOrderStatusEnum"
          },
          "receivingStatus": {
            "$ref": "#/components/schemas/PurchaseOrderReceivingStatusEnum"
          },
          "externalReference": {
            "$ref": "#/components/schemas/CommonExternalReferenceFindDto"
          },
          "includeReceiptData": {
            "type": "boolean",
            "description": "If set to true, receipt data will be included in the results"
          },
          "vendorId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The vendor id.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding purchase orders."
      },
      "PurchaseOrderRequestUpdateStatus": {
        "required": [
          "status"
        ],
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/PurchaseOrderStatusEnum"
          },
          "paidDate": {
            "type": "string",
            "description": "The date that the purchase order was paid. Should be provided in UTC. Will default to current date/time if not provided when applicable.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Update a purchase order status."
      },
      "PurchaseOrderStatusEnum": {
        "enum": [
          "draft",
          "needsApproval",
          "approved",
          "ordered",
          "paid",
          "cancelled"
        ],
        "type": "string",
        "description": "Purchase order status"
      },
      "PurchaseOrderTaxLineItemDto": {
        "required": [
          "accountingDetails",
          "code",
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose description for this entity.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.",
            "nullable": true
          },
          "code": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Identifying code. Must be unique."
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax code to use for this entity. If a FulcrumProduct.PublicApi.Dto.PurchaseOrder.TaxLineItem.TaxLineItemDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.PurchaseOrder.TaxLineItem.TaxLineItemDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "Tax amount applied at this rate across the entire purchase order.",
            "format": "double",
            "nullable": true
          },
          "taxCodeEditable": {
            "type": "boolean",
            "description": "Indicates if the tax code used is editable.",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a tax line item on a purchase order."
      },
      "PurchaseOrderTypeEnum": {
        "enum": [
          "standard",
          "outsideProcessing",
          "vendorCredit"
        ],
        "type": "string",
        "description": "Purchase order type"
      },
      "PurchaseOrderUpdateDto": {
        "type": "object",
        "properties": {
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "vendorNote": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The vendor note is a string property that represents a note provided to the vendor.",
            "nullable": true
          },
          "vendorOrderNumber": {
            "type": "string",
            "description": "Vendor order number associated to a third party system.",
            "nullable": true
          },
          "expectedReceiveDate": {
            "type": "string",
            "description": "PO Expected receipt date (UTC)",
            "format": "date-time",
            "nullable": true
          },
          "promiseDate": {
            "type": "string",
            "description": "PO Promise date (UTC).",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents an update on a purchase order."
      },
      "PurchaseOrderVendorCreditLineItemDto": {
        "required": [
          "accountingDetails",
          "id",
          "itemId",
          "lineItemId",
          "name",
          "quantity",
          "vendorCredit"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "line item name"
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double"
          },
          "vendorCredit": {
            "minimum": 0,
            "type": "number",
            "description": "The value of the vendor credit.",
            "format": "double"
          },
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item id associated with this credit."
          },
          "purchaseOrderId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Parent purchase order id associated with this credit.",
            "nullable": true
          },
          "lineItemId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Part or outside processing line item id associated with this credit."
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The line item description.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a vendor credit line item on a purchase order."
      },
      "PurchaseOrderVendorCreditLineItemUpdateDto": {
        "type": "object",
        "properties": {
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a vendor credit line item on a purchase order."
      },
      "QuoteCreateDto": {
        "required": [
          "customerId"
        ],
        "type": "object",
        "properties": {
          "customerId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The id of the customer to be created"
          },
          "billingAddress": {
            "$ref": "#/components/schemas/CommonAddressCreateDto"
          },
          "shippingAddress": {
            "$ref": "#/components/schemas/CommonAddressCreateDto"
          },
          "contact": {
            "$ref": "#/components/schemas/CustomerContactCreateDto"
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for the Quote",
            "nullable": true
          },
          "salesPersonId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Sales Person identifier.  Please reference /api/users endpoint.\nIf not provided, the salesperson defined on the customer will be used.",
            "nullable": true
          },
          "crmOpportunity": {
            "$ref": "#/components/schemas/FulcrumProDomainReference"
          },
          "opportunity": {
            "type": "string",
            "description": "CRM Opportunity identifier.",
            "nullable": true
          },
          "notesToCustomer": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "A field for the seller to provide additional details or instructions for the customer relating to the order.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Details of sales order to be created"
      },
      "QuoteDiscountLineItemDto": {
        "required": [
          "accountingDetails",
          "amount",
          "id",
          "isPercentage",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name of the discount line."
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The name of the discount line.",
            "nullable": true
          },
          "isPercentage": {
            "type": "boolean",
            "description": "Indicates whether FulcrumProduct.PublicApi.Dto.Quote.DiscountLineItem.DiscountLineItemDto.Amount discount is percentage based (else, it's an absolute amount)."
          },
          "amount": {
            "minimum": 0,
            "type": "number",
            "description": "The amount of the discount.",
            "format": "double"
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a discount line item on a quote."
      },
      "QuoteDiscountLineItemUpdateDto": {
        "required": [
          "amount",
          "isPercentage",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name of the discount line."
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The description of the discount line.",
            "nullable": true
          },
          "isPercentage": {
            "type": "boolean",
            "description": "Indicates whether \"Amount\" value is percentage based or an absolute amount."
          },
          "amount": {
            "minimum": 0,
            "type": "number",
            "description": "The amount of the discount.",
            "format": "double"
          }
        },
        "additionalProperties": false,
        "description": "Represents a discount line item on a quote."
      },
      "QuoteDto": {
        "required": [
          "createdUtc",
          "customerId",
          "id",
          "number",
          "quotedDate",
          "status"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "number": {
            "minimum": 0,
            "type": "integer",
            "description": "Number",
            "format": "int32"
          },
          "customerId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Customer identifier. Please reference /api/customers endpoint."
          },
          "quotedDate": {
            "type": "string",
            "description": "Quoted date (generally the creation date but can be post/pre-dated).",
            "format": "date-time"
          },
          "status": {
            "$ref": "#/components/schemas/DtoQuotesStatus"
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "External references associated with this entity.",
            "nullable": true
          },
          "totalInPrimaryCurrency": {
            "type": "number",
            "description": "The total quote price in local currency of the fulcrum customer",
            "format": "double",
            "nullable": true
          },
          "currencyInfo": {
            "$ref": "#/components/schemas/DomainCurrenciesDocumentCurrencyInfo"
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined for the quote;",
            "nullable": true
          },
          "opportunity": {
            "type": "string",
            "description": "CRM Opportunity identifier.",
            "nullable": true
          },
          "salesPersonId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique identifier of the sales person attached to this sales order.\nPlease reference /api/users endpoints.",
            "nullable": true
          },
          "billingAddress": {
            "$ref": "#/components/schemas/CommonAddressDto"
          },
          "shippingAddresses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonAddressDto"
            },
            "description": "The customer address(es) that the quote contents should be shipped to.",
            "nullable": true
          },
          "companyId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Company identifier. Please reference /api/companies endpoint.",
            "nullable": true
          },
          "paymentTermsId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Payment terms key identifier. Please reference /api/payment-terms endpoint.",
            "nullable": true
          },
          "paymentTerms": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "createdUtc": {
            "type": "string",
            "description": "Date this record was created (UTC).",
            "format": "date-time"
          },
          "notesToCustomer": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "A field for the seller to provide additional details or instructions for the customer relating to the order.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a Quote"
      },
      "QuoteFeeLineItemCreateDto": {
        "required": [
          "price"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose name for this entity.",
            "nullable": true
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Verbose description for this entity.",
            "nullable": true
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double",
            "nullable": true
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.",
            "format": "double"
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "unitOfMeasure": {
            "$ref": "#/components/schemas/CommonEnumLineItemUomEnum"
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this fee is taxable.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax code to use for this entity. If a FulcrumProduct.PublicApi.Dto.Quote.FeeLineItem.QuoteFeeLineItemCreateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.Quote.FeeLineItem.QuoteFeeLineItemCreateDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Indicate if the tax supplied is intended to be an override.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a fee line item on a sales order."
      },
      "QuoteFeeLineItemDto": {
        "required": [
          "accountingDetails",
          "id",
          "price"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose name for this entity.",
            "nullable": true
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Verbose description for this entity.",
            "nullable": true
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double",
            "nullable": true
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.",
            "format": "double"
          },
          "unitOfMeasure": {
            "$ref": "#/components/schemas/CommonEnumLineItemUomEnum"
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this fee is taxable.",
            "nullable": true
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Dictate if the tax rate is overridden.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier.",
            "nullable": true
          },
          "taxRate": {
            "type": "number",
            "description": "Tax code to use for this entity. If a FulcrumProduct.PublicApi.Dto.Quote.FeeLineItem.QuoteFeeLineItemDto.TaxCodeId is provided and FulcrumProduct.PublicApi.Dto.Quote.FeeLineItem.QuoteFeeLineItemDto.OverrideTaxRate = true, the provided FulcrumProduct.PublicApi.Dto.Quote.FeeLineItem.QuoteFeeLineItemDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a fee line item on a sales order."
      },
      "QuoteFeeLineItemUpdateDto": {
        "required": [
          "price"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose name for this entity.",
            "nullable": true
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Verbose description for this entity.",
            "nullable": true
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double",
            "nullable": true
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.",
            "format": "double"
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "unitOfMeasure": {
            "$ref": "#/components/schemas/CommonEnumLineItemUomEnum"
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this fee is taxable.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax code to use for this entity. If a FulcrumProduct.PublicApi.Dto.Quote.FeeLineItem.QuoteFeeLineItemUpdateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.Quote.FeeLineItem.QuoteFeeLineItemUpdateDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Indicate if the tax supplied is intended to be an override.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a fee line item on a sales order."
      },
      "QuotePartLineItemCreateBatchDto": {
        "required": [
          "lineItems"
        ],
        "type": "object",
        "properties": {
          "lineItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QuotePartLineItemCreateDto"
            },
            "description": "The line items to add to a sales order."
          }
        },
        "additionalProperties": false,
        "description": "Represents a batch of part line items to add to a quote."
      },
      "QuotePartLineItemCreateDto": {
        "required": [
          "itemId"
        ],
        "type": "object",
        "properties": {
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item id associated with this line item."
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double"
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.",
            "format": "double"
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The part line item description.  Defaults to the item's description if none specified.",
            "nullable": true
          },
          "internalNotes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The line item internal notes",
            "nullable": true
          },
          "itemNotes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The line item notes.",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this line item is taxable.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.Quote.PartLineItem.QuotePartLineItemCreateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.Quote.PartLineItem.QuotePartLineItemCreateDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Indicate if the tax supplied is intended to be an override.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "isPercentageDiscount": {
            "type": "boolean",
            "description": "Indicates whether FulcrumProduct.PublicApi.Dto.Quote.PartLineItem.QuotePartLineItemCreateDto.DiscountAmount discount is percentage based (else, it's an absolute amount).",
            "nullable": true
          },
          "discountAmount": {
            "type": "number",
            "description": "The amount of the discount.",
            "format": "double",
            "nullable": true
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a part line item on a quote."
      },
      "QuotePartLineItemDto": {
        "required": [
          "accountingDetails",
          "discountedPrice",
          "id",
          "isTaxable",
          "itemId",
          "preDiscountSubTotal",
          "price",
          "quantity",
          "subTotal"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double"
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.",
            "format": "double"
          },
          "discountedPrice": {
            "minimum": 0,
            "type": "number",
            "description": "The discounted line item price.",
            "format": "double"
          },
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item id associated with this line item."
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The part line item description.  Defaults to the item's description if none specified.",
            "nullable": true
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this line item is taxable."
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.Quote.PartLineItem.QuotePartLineItemDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.Quote.PartLineItem.QuotePartLineItemDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Dictate if the tax rate is overridden.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "isPercentageDiscount": {
            "type": "boolean",
            "description": "Indicates whether FulcrumProduct.PublicApi.Dto.Quote.PartLineItem.QuotePartLineItemDto.DiscountAmount discount is percentage based (else, it's an absolute amount).",
            "nullable": true
          },
          "discountAmount": {
            "type": "number",
            "description": "The amount of the discount.",
            "format": "double",
            "nullable": true
          },
          "subTotal": {
            "minimum": 0,
            "type": "number",
            "description": "Total line item cost, including applicable discounts",
            "format": "double"
          },
          "preDiscountSubTotal": {
            "minimum": 0,
            "type": "number",
            "description": "Total line item cost, before discounts",
            "format": "double"
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined for the part line item;",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          },
          "costBreakdown": {
            "$ref": "#/components/schemas/CommonCostBreakdownDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a part line item on a quote."
      },
      "QuotePartLineItemUpdateDto": {
        "type": "object",
        "properties": {
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double"
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.",
            "format": "double"
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The part line item description.  Defaults to the item's description if none specified.",
            "nullable": true
          },
          "internalNotes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The line item internal notes",
            "nullable": true
          },
          "itemNotes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The line item notes.",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this line item is taxable.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.Quote.PartLineItem.QuotePartLineItemUpdateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.Quote.PartLineItem.QuotePartLineItemUpdateDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Indicate if the tax supplied is intended to be an override.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "isPercentageDiscount": {
            "type": "boolean",
            "description": "Indicates whether FulcrumProduct.PublicApi.Dto.Quote.PartLineItem.QuotePartLineItemUpdateDto.DiscountAmount discount is percentage based (else, it's an absolute amount).",
            "nullable": true
          },
          "discountAmount": {
            "type": "number",
            "description": "The amount of the discount.",
            "format": "double",
            "nullable": true
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a part line item on a quote."
      },
      "QuoteRequestFindParameters": {
        "type": "object",
        "properties": {
          "numbers": {
            "maxItems": 500,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Filter quotes to only given numbers",
            "nullable": true
          },
          "externalReference": {
            "$ref": "#/components/schemas/CommonExternalReferenceFindDto"
          },
          "status": {
            "$ref": "#/components/schemas/DtoQuotesStatus"
          },
          "modifiedAfterUtc": {
            "type": "string",
            "description": "Filter to quote records modified after the given datetime (in UTC)",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding quotes."
      },
      "QuoteRequestUpdateQuoteStatusRequest": {
        "required": [
          "status"
        ],
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/DtoQuoteUpdateQuotesStatus"
          }
        },
        "additionalProperties": false,
        "description": "Update a Quote status."
      },
      "QuoteTaxLineItemCreateDto": {
        "type": "object",
        "properties": {
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Verbose description for this entity.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.\nIf FulcrumProduct.PublicApi.Dto.Quote.TaxLineItem.QuoteTaxLineItemCreateDto.AvalaraOptions is provided, FulcrumProduct.PublicApi.Dto.Quote.TaxLineItem.QuoteTaxLineItemCreateDto.TaxCodeId will be ignored.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.Quote.TaxLineItem.QuoteTaxLineItemCreateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.Quote.TaxLineItem.QuoteTaxLineItemCreateDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "avalaraOptions": {
            "$ref": "#/components/schemas/DtoCommonAvalaraOptions"
          }
        },
        "additionalProperties": false,
        "description": "Represents a tax line item on a quote."
      },
      "QuoteTaxLineItemDto": {
        "required": [
          "accountingDetails",
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Verbose description for this entity.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax code to use for this entity. If a FulcrumProduct.PublicApi.Dto.Quote.TaxLineItem.QuoteTaxLineItemDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.Quote.TaxLineItem.QuoteTaxLineItemDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "avalaraOptions": {
            "$ref": "#/components/schemas/DtoCommonAvalaraOptions"
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a tax line item on a Quote."
      },
      "QuoteTaxLineItemUpdateDto": {
        "type": "object",
        "properties": {
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Verbose description for this entity.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.\nIf FulcrumProduct.PublicApi.Dto.Quote.TaxLineItem.QuoteTaxLineItemUpdateDto.AvalaraOptions is provided, FulcrumProduct.PublicApi.Dto.Quote.TaxLineItem.QuoteTaxLineItemUpdateDto.TaxCodeId will be ignored.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.Quote.TaxLineItem.QuoteTaxLineItemUpdateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.Quote.TaxLineItem.QuoteTaxLineItemUpdateDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "avalaraOptions": {
            "$ref": "#/components/schemas/DtoCommonAvalaraOptions"
          }
        },
        "additionalProperties": false,
        "description": "Represents a tax line item on a quote."
      },
      "QuoteUpdateDto": {
        "type": "object",
        "properties": {
          "billingAddress": {
            "$ref": "#/components/schemas/CommonAddressCreateDto"
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for the Quote",
            "nullable": true
          },
          "opportunity": {
            "type": "string",
            "description": "CRM Opportunity identifier.",
            "nullable": true
          },
          "salesPersonId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Sales Person identifier.  Please reference /api/users endpoint.",
            "nullable": true
          },
          "notesToCustomer": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "A field for the seller to provide additional details or instructions for the customer relating to the order.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Details of quote to be updated"
      },
      "ReceivingLineItemReceiptLineItemCreateDto": {
        "required": [
          "lineItemId",
          "quantityReceived"
        ],
        "type": "object",
        "properties": {
          "lineItemId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Id of the line item corresponding to this receiving."
          },
          "quantityReceived": {
            "type": "number",
            "description": "Quantity of the associated item that has been received (non-cumulative).",
            "format": "double"
          },
          "lotNumber": {
            "type": "string",
            "description": "Lot number to receive the item into.",
            "nullable": true
          },
          "locationId": {
            "type": "string",
            "description": "Location to receive the item into. Please reference /api/locations endpoint.",
            "nullable": true
          },
          "expirationDate": {
            "type": "string",
            "description": "Expiration date indicating when this receiving is good until.",
            "format": "date-time",
            "nullable": true
          },
          "fullyReceived": {
            "type": "boolean",
            "description": "Indicate if this is fully received.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents creating a receiving object on a purchase order"
      },
      "ReceivingLineItemReceiptLineItemDto": {
        "required": [
          "fullyReceived",
          "id",
          "lineItemId",
          "rolledBack"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "lineItemId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Id of the purchase order line item corresponding to this update"
          },
          "fullyReceived": {
            "type": "boolean",
            "description": "Indicates whether the entire quantity of this line item have been received"
          },
          "rolledBack": {
            "type": "boolean",
            "description": "Indicates whether this update is active."
          },
          "quantityReceived": {
            "type": "number",
            "description": "Quantity of the associated item that has been received on this update in the specified unit of measure (non-cumulative)",
            "format": "double",
            "nullable": true
          },
          "unitOfMeasureMultiplier": {
            "type": "number",
            "description": "If the receipt has a different unit of measure than the item is stored in fulcrum, you would use this multiplier with the QuantityReceived to get the amount you received into\nFulcrum.",
            "format": "double"
          },
          "convertedQuantityReceived": {
            "type": "number",
            "description": "Quantity of the associated item that has been received in Fulcrum's unit of measure",
            "format": "double",
            "readOnly": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a line item on a receipt for a purchase or sales order"
      },
      "ReceivingLineItemReceiptLineItemUpdateDto": {
        "type": "object",
        "properties": {
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this receipt line item object.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a receiving line item on a purchase order or sales order receiving record"
      },
      "ReceivingReceiptCreateDto": {
        "required": [
          "lines",
          "orderId",
          "orderType"
        ],
        "type": "object",
        "properties": {
          "orderType": {
            "$ref": "#/components/schemas/CommonEnumOrderType"
          },
          "orderId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Id of parent order to which this receipt belongs"
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceivingLineItemReceiptLineItemCreateDto"
            },
            "description": "Line items"
          }
        },
        "additionalProperties": false,
        "description": "Represents creating a receiving object on an entity"
      },
      "ReceivingReceiptDto": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "receivedBy": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Id of the user who received the item(s)",
            "nullable": true,
            "readOnly": true
          },
          "number": {
            "type": "number",
            "description": "Number",
            "format": "double",
            "nullable": true
          },
          "date": {
            "type": "string",
            "description": "Received date",
            "format": "date-time",
            "nullable": true
          },
          "dateOriginal": {
            "type": "string",
            "description": "Original received date",
            "format": "date-time",
            "nullable": true
          },
          "dateOverride": {
            "type": "string",
            "description": "Override received date",
            "format": "date-time",
            "nullable": true
          },
          "orderType": {
            "$ref": "#/components/schemas/CommonEnumOrderType"
          },
          "orderId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Id of parent order to which this receipt belongs",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this receipt object.",
            "nullable": true
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceivingLineItemReceiptLineItemDto"
            },
            "description": "Receipt Line item data."
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined on this entity.",
            "nullable": true
          },
          "invoiceNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The vendor invoice invoice number associated to the receipt.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a receiving object"
      },
      "ReceivingReceiptUpdateDto": {
        "required": [
          "receivedBy"
        ],
        "type": "object",
        "properties": {
          "receivedBy": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Id of the user who received the item(s)"
          },
          "date": {
            "type": "string",
            "description": "Received date override.  If not provided,\nreceipt date will default to the date the object was initially created.",
            "format": "date-time",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this receipt object.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a receiving object on a purchase order"
      },
      "ReceivingRequestListFindParameters": {
        "type": "object",
        "properties": {
          "salesOrderIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Include receipts for specific sales order ids",
            "nullable": true
          },
          "purchaseOrderIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Include receipts for specific purchase order ids",
            "nullable": true
          },
          "receiptIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Include receipts with specific ids",
            "nullable": true
          },
          "includeReceiptLines": {
            "type": "boolean",
            "description": "If set to true, receipt line items will be included in the results"
          },
          "externalReference": {
            "$ref": "#/components/schemas/CommonExternalReferenceFindDto"
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding receipts."
      },
      "RoutingDataFullRoutingMakeSummaryDto": {
        "type": "object",
        "properties": {
          "itemLevel": {
            "type": "string",
            "nullable": true
          },
          "itemId": {
            "type": "string",
            "nullable": true
          },
          "itemName": {
            "type": "string",
            "nullable": true
          },
          "routingId": {
            "type": "string",
            "nullable": true
          },
          "path": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "RoutingRequestIptFindParameters": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter to in process tracking fields whose label contains the given string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding operations on an item's routing."
      },
      "RoutingRequestItemFindParameters": {
        "type": "object",
        "properties": {
          "number": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter to items who's number contains the given string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding input items on an item's routing."
      },
      "RoutingRequestOperationFindParameters": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter to operations who's name contains the given string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding operations on an item's routing."
      },
      "SalesOrderBlanketLineItemDto": {
        "required": [
          "accountingDetails",
          "discountedPrice",
          "id",
          "isTaxable",
          "itemId",
          "name",
          "preDiscountSubTotal",
          "price",
          "quantity",
          "subTotal"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The line item name."
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double"
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.",
            "format": "double"
          },
          "discountedPrice": {
            "minimum": 0,
            "type": "number",
            "description": "The discounted line item price.",
            "format": "double"
          },
          "dueDate": {
            "type": "string",
            "description": "Customer delivery date",
            "format": "date-time",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this line item is taxable."
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Dictate if the tax rate is overridden.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item id associated with this line item."
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The part line item description.  Defaults to the item's description if none specified.",
            "nullable": true
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "internalNotes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The line item internal notes. Aka production notes.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "isPercentageDiscount": {
            "type": "boolean",
            "description": "Indicates whether FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemDto.DiscountAmount discount is percentage based (else, it's an absolute amount).",
            "nullable": true
          },
          "discountAmount": {
            "type": "number",
            "description": "The amount of the discount.",
            "format": "double",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonUrlDto"
            },
            "description": "List of links associated with the line item",
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined for the part line item;",
            "nullable": true
          },
          "parentLineId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Identifier pointing to the parent line item (if this part line was sourced from a blanket line item). Please reference /api/sales-order/{salesOrderId}/blanket-line-items/list endpoint.",
            "nullable": true
          },
          "subTotal": {
            "minimum": 0,
            "type": "number",
            "description": "Total line item cost, including applicable discounts",
            "format": "double"
          },
          "preDiscountSubTotal": {
            "minimum": 0,
            "type": "number",
            "description": "Total line item cost, before discounts",
            "format": "double"
          },
          "customerPartNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The customer's known part line item number.",
            "nullable": true
          },
          "customerPartDescription": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The customer's known part line item description.",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          },
          "isFullyInvoiced": {
            "type": "boolean",
            "description": "Indicate if this item has been fully invoiced."
          },
          "isInvoiced": {
            "type": "boolean",
            "description": "Indicate if this item has ANY invoices."
          },
          "quantityInvoiced": {
            "minimum": 0,
            "type": "number",
            "description": "Indicate the total quantity that have been invoiced (issued/paid).",
            "format": "double",
            "nullable": true
          },
          "quantityOnInvoices": {
            "minimum": 0,
            "type": "number",
            "description": "Indicate the total quantity that exists on any invoice (including open).",
            "format": "double",
            "nullable": true
          },
          "costBreakdown": {
            "$ref": "#/components/schemas/CommonCostBreakdownDto"
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SalesOrderPartLineItemDto"
            },
            "description": "Underlying part line items associated to this blanket line."
          }
        },
        "additionalProperties": false,
        "description": "Represents a blanket line item on a sales order."
      },
      "SalesOrderBlanketLineItemUpdateDto": {
        "type": "object",
        "properties": {
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a blanket line item on a sales order."
      },
      "SalesOrderCreateDto": {
        "required": [
          "customerId"
        ],
        "type": "object",
        "properties": {
          "customerId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The id of the customer to be created"
          },
          "orderedDate": {
            "type": "string",
            "description": "The ordered date of the sales order. If no supplied, will default to current UTC timestamp.",
            "format": "date-time",
            "nullable": true
          },
          "customerPoNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Optional customer supplied purchase order number",
            "nullable": true
          },
          "shippingAddress": {
            "$ref": "#/components/schemas/CommonAddressCreateDto"
          },
          "billingAddress": {
            "$ref": "#/components/schemas/CommonAddressCreateDto"
          },
          "contact": {
            "$ref": "#/components/schemas/CustomerContactCreateDto"
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for the Sales Order",
            "nullable": true
          },
          "externalQuoteUrl": {
            "type": "string",
            "description": "A reference URL that points to an external quote entity.",
            "nullable": true
          },
          "dueDate": {
            "type": "string",
            "description": "The due date of the sales order. This indicates the expected date of completion.",
            "format": "date-time",
            "nullable": true
          },
          "paymentTermsId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Payment terms key identifier. Please reference /api/payment-terms endpoint.",
            "nullable": true
          },
          "salesPersonId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Sales Person identifier. Please reference /api/users endpoint.\nIf not provided, the salesperson defined on the customer will be used.",
            "nullable": true
          },
          "publicNote": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Note to customer. This will appear on PDFs.",
            "nullable": true
          },
          "priority": {
            "$ref": "#/components/schemas/SalesOrderPriority"
          },
          "companyId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Company identifier. Please reference /api/companies endpoint.\nIf not provided, the primary company will be used (if available).",
            "nullable": true
          },
          "productionDueDate": {
            "type": "string",
            "description": "The date that the production of items on the sales order needs to be completed by.",
            "format": "date-time",
            "nullable": true
          },
          "shippingMethodId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Shipping method identifier. Please reference /api/shipping-methods endpoint.",
            "nullable": true
          },
          "deposit": {
            "$ref": "#/components/schemas/CommonDepositCreateDto"
          }
        },
        "additionalProperties": false,
        "description": "Details of sales order to be created"
      },
      "SalesOrderDiscountLineItemDto": {
        "required": [
          "accountingDetails",
          "amount",
          "id",
          "isPercentage",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name of the discount line."
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name of the discount line.",
            "nullable": true
          },
          "isPercentage": {
            "type": "boolean",
            "description": "Indicates whether FulcrumProduct.PublicApi.Dto.SalesOrder.DiscountLineItem.DiscountLineItemDto.Amount discount is percentage based (else, it's an absolute amount)."
          },
          "amount": {
            "minimum": 0,
            "type": "number",
            "description": "The amount of the discount.",
            "format": "double"
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "absoluteAmount": {
            "minimum": 0,
            "type": "number",
            "description": "The absolute amount of the discount.",
            "format": "double",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          },
          "price": {
            "type": "number",
            "description": "The calculated amount of this discount.",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a discount line item on a sales order."
      },
      "SalesOrderDiscountLineItemUpdateDto": {
        "required": [
          "amount",
          "isPercentage",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name of the discount line."
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The description of the discount line.",
            "nullable": true
          },
          "isPercentage": {
            "type": "boolean",
            "description": "Indicates whether \"Amount\" value is percentage based or an absolute amount."
          },
          "amount": {
            "minimum": 0,
            "type": "number",
            "description": "The amount of the discount.",
            "format": "double"
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a discount line item on a sales order."
      },
      "SalesOrderDto": {
        "required": [
          "createdUtc",
          "customerId",
          "id",
          "number",
          "orderedDate",
          "status"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "number": {
            "minimum": 0,
            "type": "integer",
            "description": "Number",
            "format": "int32"
          },
          "orderedDate": {
            "type": "string",
            "description": "Sales order ordered date (generally the creation date but can be post/pre-dated).",
            "format": "date-time"
          },
          "customerPoNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "CustomerPoNumber",
            "nullable": true
          },
          "externalQuoteUrl": {
            "type": "string",
            "description": "A reference URL that points to an external quote entity.",
            "nullable": true
          },
          "createdFromQuoteId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique identifier of the quote that this sales order was created from. Please reference /api/quotes endpoints.",
            "nullable": true
          },
          "customerId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The id of the customer that the sales order is for"
          },
          "deliveryDueDate": {
            "type": "string",
            "description": "The date the SO needs to be delivered to the customer",
            "format": "date-time",
            "nullable": true
          },
          "productionDueDate": {
            "type": "string",
            "description": "The date that production needs to be completed by",
            "format": "date-time",
            "nullable": true
          },
          "sentToProductionDateUtc": {
            "type": "string",
            "description": "The datetime in UTC that the SO status was updated to Send to Production",
            "format": "date-time",
            "nullable": true
          },
          "billingAddress": {
            "$ref": "#/components/schemas/CommonAddressDto"
          },
          "paymentTermsId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The payment terms assigned to this sales order.",
            "nullable": true
          },
          "paymentTerms": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "discount": {
            "type": "number",
            "description": "Total discount for the SO when a Discount Line as been aded",
            "format": "double",
            "nullable": true
          },
          "subtotal": {
            "type": "number",
            "description": "Subtotal for the SO",
            "format": "double"
          },
          "salesPersonId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique identifier of the sales person attached to this sales order.\nPlease reference /api/users endpoints.",
            "nullable": true
          },
          "publicNote": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Note to customer. This will appear on PDFs.",
            "nullable": true
          },
          "deleted": {
            "type": "boolean",
            "description": "Indicates whether this sales order has been deleted"
          },
          "companyId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Company identifier. Please reference /api/companies endpoint.",
            "nullable": true
          },
          "createdUtc": {
            "type": "string",
            "description": "Date this record was created (UTC).",
            "format": "date-time"
          },
          "modifiedUtc": {
            "type": "string",
            "description": "Date this record was modified (UTC). Of note, this does account for children items (line items).",
            "format": "date-time",
            "nullable": true
          },
          "usesV3Shipping": {
            "type": "boolean",
            "description": "Indicate if this sales order uses V3 shipping."
          },
          "status": {
            "$ref": "#/components/schemas/SalesOrderStatus"
          },
          "priority": {
            "$ref": "#/components/schemas/SalesOrderPriority"
          },
          "deposit": {
            "$ref": "#/components/schemas/CommonDepositDto"
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "External references associated with this entity.",
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined on this entity.",
            "nullable": true
          },
          "contact": {
            "$ref": "#/components/schemas/CustomerContactDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a sales order"
      },
      "SalesOrderFeeLineItemCreateDto": {
        "required": [
          "price"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose name for this entity.",
            "nullable": true
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose description for this entity.\nIf this value is not provided and the name matches a defined \"default fee\", the description\non the \"default fee\" will be used.",
            "nullable": true
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double",
            "nullable": true
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.",
            "format": "double"
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.\nIf this value is not provided and the name matches a defined \"default fee\", the accounting code\non the \"default fee\" will be used.",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this fee is taxable.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax code to use for this entity. If a FulcrumProduct.PublicApi.Dto.SalesOrder.FeeLineItem.FeeLineItemCreateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.SalesOrder.FeeLineItem.FeeLineItemCreateDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Indicate if the tax supplied is intended to be an override.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a fee line item on a sales order."
      },
      "SalesOrderFeeLineItemDto": {
        "required": [
          "accountingDetails",
          "id",
          "price"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose name for this entity.",
            "nullable": true
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose description for this entity.",
            "nullable": true
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double",
            "nullable": true
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.",
            "format": "double"
          },
          "unitOfMeasure": {
            "$ref": "#/components/schemas/CommonEnumLineItemUomEnum"
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this fee is taxable.",
            "nullable": true
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Dictate if the tax rate is overridden.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier.",
            "nullable": true
          },
          "taxRate": {
            "type": "number",
            "description": "Tax code to use for this entity. If a FulcrumProduct.PublicApi.Dto.SalesOrder.FeeLineItem.FeeLineItemDto.TaxCodeId is provided and FulcrumProduct.PublicApi.Dto.SalesOrder.FeeLineItem.FeeLineItemDto.OverrideTaxRate = true, the provided FulcrumProduct.PublicApi.Dto.SalesOrder.FeeLineItem.FeeLineItemDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a fee line item on a sales order."
      },
      "SalesOrderFeeLineItemUpdateDto": {
        "required": [
          "price"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose name for this entity.",
            "nullable": true
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose description for this entity.",
            "nullable": true
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double",
            "nullable": true
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.",
            "format": "double"
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this fee is taxable.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax code to use for this entity. If a FulcrumProduct.PublicApi.Dto.SalesOrder.FeeLineItem.FeeLineItemUpdateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.SalesOrder.FeeLineItem.FeeLineItemUpdateDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Indicate if the tax supplied is intended to be an override.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a fee line item on a sales order."
      },
      "SalesOrderLineItemDto": {
        "required": [
          "accountingDetails",
          "id",
          "isTaxable",
          "preDiscountSubTotal",
          "price",
          "subTotal",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "lineItemId": {
            "type": "string",
            "description": "The line item id (if applicable).",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/SalesOrderLineItemTypeEnum"
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.",
            "format": "double"
          },
          "discountedPrice": {
            "minimum": 0,
            "type": "number",
            "description": "The line item discounted unit price (if applicable).",
            "format": "double",
            "nullable": true
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose name for this entity.",
            "nullable": true
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Line item description.",
            "nullable": true
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double"
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this line item is taxable."
          },
          "subTotal": {
            "minimum": 0,
            "type": "number",
            "description": "Total line item cost, including applicable discounts",
            "format": "double"
          },
          "preDiscountSubTotal": {
            "minimum": 0,
            "type": "number",
            "description": "Total line item cost, before discounts",
            "format": "double"
          },
          "isPercentageDiscount": {
            "type": "boolean",
            "description": "Indicates whether FulcrumProduct.PublicApi.Dto.SalesOrder.SalesOrderLineItemDto.DiscountAmount discount is percentage based (else, it's an absolute amount).",
            "nullable": true
          },
          "discountAmount": {
            "type": "number",
            "description": "The amount of the discount.",
            "format": "double",
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined for the sales order part line item;",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a generic line item on a sales order."
      },
      "SalesOrderLineItemTypeEnum": {
        "enum": [
          "part",
          "shipping",
          "tax",
          "discount",
          "fee",
          "refund"
        ],
        "type": "string",
        "description": "Sales order line item type"
      },
      "SalesOrderPartLineItemCreateBatchDto": {
        "required": [
          "lineItems"
        ],
        "type": "object",
        "properties": {
          "lineItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SalesOrderPartLineItemCreateDto"
            },
            "description": "The line items to add to a sales order."
          }
        },
        "additionalProperties": false,
        "description": "Represents a batch of part line items to add to a sales order."
      },
      "SalesOrderPartLineItemCreateDto": {
        "required": [
          "itemId"
        ],
        "type": "object",
        "properties": {
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item id associated with this line item."
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double"
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.\nNote, if a price break exists for the item being added (vendor price breaks, item price breaks, etc), this value will be ignored\nas it is quantity-driven based on the price breaks that do/will exist.\nIf this value is not provided and no price breaks exist, the default will be 0.",
            "format": "double",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this line item is taxable.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemCreateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemCreateDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Indicate if the tax supplied is intended to be an override.",
            "nullable": true
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The part line item description.  Defaults to the item's description if none specified.",
            "nullable": true
          },
          "internalNotes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The line item internal notes",
            "nullable": true
          },
          "itemNotes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The line item notes (visible in job tracking).",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "isPercentageDiscount": {
            "type": "boolean",
            "description": "Indicates whether FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemCreateDto.DiscountAmount discount is percentage based (else, it's an absolute amount).",
            "nullable": true
          },
          "discountAmount": {
            "type": "number",
            "description": "The amount of the discount.",
            "format": "double",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonUrlDto"
            },
            "description": "A list of links/urls to associated with the line item.",
            "nullable": true
          },
          "deliveryDate": {
            "type": "string",
            "description": "The delivery date for the line item",
            "format": "date-time",
            "nullable": true
          },
          "unitOfMeasureName": {
            "type": "string",
            "description": "The unit of measure to apply. If left blank, the default unit of measure for the item will be applied.",
            "nullable": true
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.\nIf this value is not provided and the name matches a defined \"default fee\", the accounting code\non the \"default fee\" will be used.",
            "nullable": true
          },
          "isCustomerItem": {
            "type": "boolean",
            "description": "Determines whether or not to display the customer part number and customer part description.",
            "nullable": true
          },
          "customerPartNumber": {
            "type": "string",
            "description": "Used for the part number on customer facing documents when IsCustomerItem is true",
            "nullable": true
          },
          "customerPartDescription": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Used for the description on customer facing documents when IsCustomerItem is true",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a part line item on a sales order."
      },
      "SalesOrderPartLineItemDto": {
        "required": [
          "accountingDetails",
          "discountedPrice",
          "id",
          "isTaxable",
          "itemId",
          "name",
          "preDiscountSubTotal",
          "price",
          "quantity",
          "subTotal"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The line item name."
          },
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double"
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.",
            "format": "double"
          },
          "discountedPrice": {
            "minimum": 0,
            "type": "number",
            "description": "The discounted line item price.",
            "format": "double"
          },
          "dueDate": {
            "type": "string",
            "description": "Customer delivery date",
            "format": "date-time",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this line item is taxable."
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Dictate if the tax rate is overridden.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Item id associated with this line item."
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The part line item description.  Defaults to the item's description if none specified.",
            "nullable": true
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "internalNotes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The line item internal notes. Aka production notes.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "isPercentageDiscount": {
            "type": "boolean",
            "description": "Indicates whether FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemDto.DiscountAmount discount is percentage based (else, it's an absolute amount).",
            "nullable": true
          },
          "discountAmount": {
            "type": "number",
            "description": "The amount of the discount.",
            "format": "double",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonUrlDto"
            },
            "description": "List of links associated with the line item",
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined for the part line item;",
            "nullable": true
          },
          "parentLineId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Identifier pointing to the parent line item (if this part line was sourced from a blanket line item). Please reference /api/sales-order/{salesOrderId}/blanket-line-items/list endpoint.",
            "nullable": true
          },
          "subTotal": {
            "minimum": 0,
            "type": "number",
            "description": "Total line item cost, including applicable discounts",
            "format": "double"
          },
          "preDiscountSubTotal": {
            "minimum": 0,
            "type": "number",
            "description": "Total line item cost, before discounts",
            "format": "double"
          },
          "customerPartNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The customer's known part line item number.",
            "nullable": true
          },
          "customerPartDescription": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The customer's known part line item description.",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          },
          "isFullyInvoiced": {
            "type": "boolean",
            "description": "Indicate if this item has been fully invoiced."
          },
          "isInvoiced": {
            "type": "boolean",
            "description": "Indicate if this item has ANY invoices."
          },
          "quantityInvoiced": {
            "minimum": 0,
            "type": "number",
            "description": "Indicate the total quantity that have been invoiced (issued/paid).",
            "format": "double",
            "nullable": true
          },
          "quantityOnInvoices": {
            "minimum": 0,
            "type": "number",
            "description": "Indicate the total quantity that exists on any invoice (including open).",
            "format": "double",
            "nullable": true
          },
          "costBreakdown": {
            "$ref": "#/components/schemas/CommonCostBreakdownDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a part line item on a sales order."
      },
      "SalesOrderPartLineItemInputItemCreateBatchDto": {
        "required": [
          "lineItems"
        ],
        "type": "object",
        "properties": {
          "lineItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ItemRoutingInputItemCreateDto"
            },
            "description": "The input items to add to an item."
          }
        },
        "additionalProperties": false,
        "description": "Represents a batch of input items to add to an item."
      },
      "SalesOrderPartLineItemUpdateDto": {
        "type": "object",
        "properties": {
          "quantity": {
            "minimum": 0,
            "type": "number",
            "description": "The line item quantity",
            "format": "double"
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "The line item price.\nNote, if a price break exists for the item being added (vendor price breaks, item price breaks, etc), this value will be ignored\nas it is quantity-driven based on the price breaks that do/will exist.\nIf this value is not provided and no price breaks exist, the default will be 0.",
            "format": "double",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this line item is taxable.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemUpdateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemUpdateDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Indicate if the tax supplied is intended to be an override.",
            "nullable": true
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The part line item description.  Defaults to the item's description if none specified.",
            "nullable": true
          },
          "internalNotes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The line item internal notes. Aka production notes.",
            "nullable": true
          },
          "itemNotes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The line item notes (visible in job tracking).",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "isPercentageDiscount": {
            "type": "boolean",
            "description": "Indicates whether FulcrumProduct.PublicApi.Dto.SalesOrder.PartLineItem.PartLineItemUpdateDto.DiscountAmount discount is percentage based (else, it's an absolute amount).",
            "nullable": true
          },
          "discountAmount": {
            "type": "number",
            "description": "The amount of the discount.",
            "format": "double",
            "nullable": true
          },
          "links": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonUrlDto"
            },
            "description": "List of links associated with the line item.",
            "nullable": true
          },
          "deliveryDate": {
            "type": "string",
            "description": "The Delivery Date for the line item.",
            "format": "date-time",
            "nullable": true
          },
          "unitOfMeasureName": {
            "type": "string",
            "description": "The unit of measure to apply. If left blank, the existing unit of measure on the line item will be retained.",
            "nullable": true
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.\nIf this value is not provided and the name matches a defined \"default fee\", the accounting code\non the \"default fee\" will be used.",
            "nullable": true
          },
          "isCustomerItem": {
            "type": "boolean",
            "description": "Determines whether or not to display the customer part number and customer part description.",
            "nullable": true
          },
          "customerPartNumber": {
            "type": "string",
            "description": "Used for the part number on customer facing documents when IsCustomerItem is true",
            "nullable": true
          },
          "customerPartDescription": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Used for the description on customer facing documents when IsCustomerItem is true",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a part line item on a sales order."
      },
      "SalesOrderPriority": {
        "enum": [
          "low",
          "moderate",
          "high"
        ],
        "type": "string",
        "description": "Priority of the sales order"
      },
      "SalesOrderRefundLineItemCreateDto": {
        "required": [
          "refundAmount",
          "refundedLineId",
          "refundQuantity"
        ],
        "type": "object",
        "properties": {
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The refund line item description.  Defaults to the item's description if none specified.",
            "nullable": true
          },
          "refundedLineId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "The related, original line id that was refunded."
          },
          "refundQuantity": {
            "minimum": 0,
            "type": "number",
            "description": "The quantity to be refunded.",
            "format": "double"
          },
          "refundAmount": {
            "minimum": 0,
            "type": "number",
            "description": "The refund amount.",
            "format": "double"
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "refundReasonCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Refund reason code key identifier. Please reference /api/refund-reason-codes endpoint.",
            "nullable": true
          },
          "isReturn": {
            "type": "boolean",
            "description": "Indicate if a return is expected.",
            "nullable": true
          },
          "returnQuantity": {
            "type": "number",
            "description": "The quantity to be returned.",
            "format": "double",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a refund line item on a sales order."
      },
      "SalesOrderRefundLineItemDto": {
        "required": [
          "accountingDetails",
          "id",
          "name",
          "refundAmount",
          "refundedLineId",
          "refundQuantity"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "refundedLineId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "The related, original line id that was refunded."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The line item name."
          },
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The refund line item description.  Defaults to the item's description if none specified.",
            "nullable": true
          },
          "refundQuantity": {
            "minimum": 0,
            "type": "number",
            "description": "The quantity to be refunded.",
            "format": "double"
          },
          "refundAmount": {
            "minimum": 0,
            "type": "number",
            "description": "The refund amount.",
            "format": "double"
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "refundReasonCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Refund reason code key identifier. Please reference /api/refund-reason-codes endpoint.",
            "nullable": true
          },
          "isReturn": {
            "type": "boolean",
            "description": "Indicate if a return is expected.",
            "nullable": true
          },
          "returnQuantity": {
            "type": "number",
            "description": "The quantity to be returned.",
            "format": "double",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "Refund line item."
      },
      "SalesOrderRefundLineItemUpdateDto": {
        "required": [
          "refundAmount",
          "refundQuantity"
        ],
        "type": "object",
        "properties": {
          "description": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "The refund line item description.",
            "nullable": true
          },
          "refundQuantity": {
            "minimum": 0,
            "type": "number",
            "description": "The quantity to be refunded.",
            "format": "double"
          },
          "refundAmount": {
            "minimum": 0,
            "type": "number",
            "description": "The refund amount.",
            "format": "double"
          },
          "accountingCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Accounting code key identifier. Please reference /api/accounting-codes endpoint.",
            "nullable": true
          },
          "refundReasonCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Refund reason code key identifier. Please reference /api/refund-reason-codes endpoint.",
            "nullable": true
          },
          "isReturn": {
            "type": "boolean",
            "description": "Indicate if a return is expected.",
            "nullable": true
          },
          "returnQuantity": {
            "minimum": 0,
            "type": "number",
            "description": "The quantity to be returned.",
            "format": "double",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a refund line item on a sales order."
      },
      "SalesOrderRequestFindParameters": {
        "type": "object",
        "properties": {
          "numbers": {
            "maxItems": 500,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Filter sales orders to only given numbers",
            "nullable": true
          },
          "externalReference": {
            "$ref": "#/components/schemas/CommonExternalReferenceFindDto"
          },
          "status": {
            "$ref": "#/components/schemas/SalesOrderStatus"
          },
          "externalQuoteUrls": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter sales orders to those matching an external quote URL.",
            "nullable": true
          },
          "createdFromQuoteId": {
            "type": "string",
            "description": "Filter sales orders created from the specific quote",
            "nullable": true
          },
          "createdBeforeUtc": {
            "type": "string",
            "description": "Filters created before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.",
            "format": "date-time",
            "nullable": true
          },
          "createdAfterUtc": {
            "type": "string",
            "description": "Filters created after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.",
            "format": "date-time",
            "nullable": true
          },
          "modifiedBeforeUtc": {
            "type": "string",
            "description": "Filters modified before (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.",
            "format": "date-time",
            "nullable": true
          },
          "modifiedAfterUtc": {
            "type": "string",
            "description": "Filters modified after (exclusive) this parameter in UTC time. If no time component is passed, midnight UTC will be used.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding sales orders."
      },
      "SalesOrderRequestUpdateStatus": {
        "required": [
          "status"
        ],
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/SalesOrderStatus"
          }
        },
        "additionalProperties": false,
        "description": "Update a sales order status."
      },
      "SalesOrderShippingChargeLineItemDto": {
        "required": [
          "accountingDetails",
          "amount",
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name of the shipping charge line."
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The description of the shipping charge line.",
            "nullable": true
          },
          "amount": {
            "minimum": 0,
            "type": "number",
            "description": "The amount of the charge.",
            "format": "double"
          },
          "overrideTaxRate": {
            "type": "boolean",
            "description": "Dictate if the tax rate is overridden.",
            "nullable": true
          },
          "isTaxable": {
            "type": "boolean",
            "description": "Dictate if this line item is taxable.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.SalesOrder.ShippingChargeLineItem.ShippingChargeLineItemDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.SalesOrder.ShippingChargeLineItem.ShippingChargeLineItemDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "salesOrderLineItemId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Related sales order line item id.",
            "nullable": true
          },
          "number": {
            "type": "integer",
            "description": "Line number",
            "format": "int32"
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a shipping charge line item on a Sales Order."
      },
      "SalesOrderStatus": {
        "enum": [
          "draft",
          "needsApproval",
          "approved",
          "inProgress",
          "complete"
        ],
        "type": "string",
        "description": "Sales order status"
      },
      "SalesOrderTaxLineItemAvalaraOptions": {
        "type": "object",
        "properties": {
          "address": {
            "$ref": "#/components/schemas/CommonAddressDto"
          }
        },
        "additionalProperties": false,
        "description": "Options for use with Avalara (if enabled)."
      },
      "SalesOrderTaxLineItemCreateDto": {
        "type": "object",
        "properties": {
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose description for this entity.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.\nIf FulcrumProduct.PublicApi.Dto.SalesOrder.TaxLineItem.TaxLineItemCreateDto.AvalaraOptions is provided, FulcrumProduct.PublicApi.Dto.SalesOrder.TaxLineItem.TaxLineItemCreateDto.TaxCodeId will be ignored.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.SalesOrder.TaxLineItem.TaxLineItemCreateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.SalesOrder.TaxLineItem.TaxLineItemCreateDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "avalaraOptions": {
            "$ref": "#/components/schemas/SalesOrderTaxLineItemAvalaraOptions"
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a tax line item on a sales order."
      },
      "SalesOrderTaxLineItemDto": {
        "required": [
          "accountingDetails",
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose description for this entity.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax code to use for this entity. If a FulcrumProduct.PublicApi.Dto.SalesOrder.TaxLineItem.TaxLineItemDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.SalesOrder.TaxLineItem.TaxLineItemDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "avalaraOptions": {
            "$ref": "#/components/schemas/SalesOrderTaxLineItemAvalaraOptions"
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "price": {
            "minimum": 0,
            "type": "number",
            "description": "Tax amount applied at this rate across the entire sales order.",
            "format": "double",
            "nullable": true
          },
          "accountingDetails": {
            "$ref": "#/components/schemas/CommonAccountingDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "Represents a tax line item on a sales order."
      },
      "SalesOrderTaxLineItemUpdateDto": {
        "type": "object",
        "properties": {
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Verbose description for this entity.",
            "nullable": true
          },
          "taxCodeId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Tax code key identifier. Please reference /api/tax-rates endpoint.\nIf FulcrumProduct.PublicApi.Dto.SalesOrder.TaxLineItem.TaxLineItemUpdateDto.AvalaraOptions is provided, FulcrumProduct.PublicApi.Dto.SalesOrder.TaxLineItem.TaxLineItemUpdateDto.TaxCodeId will be ignored.",
            "nullable": true
          },
          "taxRate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax rate to use for this entity. If a FulcrumProduct.PublicApi.Dto.SalesOrder.TaxLineItem.TaxLineItemUpdateDto.TaxCodeId is provided, the provided FulcrumProduct.PublicApi.Dto.SalesOrder.TaxLineItem.TaxLineItemUpdateDto.TaxRate will supercede the defined tax rate.",
            "format": "double",
            "nullable": true
          },
          "avalaraOptions": {
            "$ref": "#/components/schemas/SalesOrderTaxLineItemAvalaraOptions"
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a tax line item on a sales order."
      },
      "SalesOrderUpdateDto": {
        "type": "object",
        "properties": {
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          },
          "customerPoNumber": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "CustomerPoNumber",
            "nullable": true
          },
          "priority": {
            "$ref": "#/components/schemas/SalesOrderPriority"
          },
          "deliveryDueDate": {
            "type": "string",
            "description": "The date the SO needs to be delivered to the customer.  Note: this does not affect individual line update delivery dates.",
            "format": "date-time",
            "nullable": true
          },
          "publicNote": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Note to customer. This will appear on PDFs.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents an update on an SalesOrder."
      },
      "ScrapReportEntryDto": {
        "required": [
          "dateUtc",
          "quantity",
          "value"
        ],
        "type": "object",
        "properties": {
          "item": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "quantity": {
            "type": "number",
            "description": "Quantity scrapped, in the item's unit of measure.",
            "format": "double"
          },
          "value": {
            "type": "number",
            "description": "Cost value of the scrapped quantity, in the tenant's primary currency.",
            "format": "double"
          },
          "operator": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "operation": {
            "type": "string",
            "description": "Operation name on the job during which the scrap was logged.",
            "nullable": true
          },
          "workCenter": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "department": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "equipment": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "job": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "dateUtc": {
            "type": "string",
            "description": "UTC timestamp at which the scrap entry was recorded.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "One scrap entry in the scrap report — a quantity of a specific item that\nwas scrapped during a specific operation, on a specific job. Aggregated\nfrom job-tracking activity rather than stored as a top-level entity."
      },
      "ShipmentLineItemDto": {
        "required": [
          "id",
          "packingStatus",
          "quantityToShip",
          "shipmentName",
          "shipmentType"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Shipment line item identifier"
          },
          "packingStatus": {
            "$ref": "#/components/schemas/ShippingDataPackingStatus"
          },
          "shipmentType": {
            "$ref": "#/components/schemas/ShippingDataShipmentType"
          },
          "quantityToShip": {
            "type": "number",
            "description": "The quantity to ship",
            "format": "double"
          },
          "shipmentName": {
            "minLength": 1,
            "type": "string",
            "description": "The shipment name (eg. SHP-S0123-1)"
          },
          "quantityInvoiced": {
            "type": "number",
            "description": "The quantity invoiced",
            "format": "double"
          },
          "quantityPacked": {
            "type": "number",
            "description": "The quantity packed",
            "format": "double"
          },
          "itemId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The item identifier",
            "nullable": true
          },
          "shipmentId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The shipment identifier",
            "nullable": true
          },
          "salesOrderId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The sales order identifier",
            "nullable": true
          },
          "salesOrderLineItemId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "The sales order line item identifier",
            "nullable": true
          },
          "purchaseOrderId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The purchase order identifier",
            "nullable": true
          },
          "purchaseOrderLineItemId": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "The purchase order line item identifier",
            "nullable": true
          },
          "quantityShipped": {
            "type": "number",
            "description": "The quantity shipped",
            "format": "double",
            "readOnly": true
          },
          "shippedFromLocations": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The locations this line was shipped from"
          },
          "shippedFromLots": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The lots this line was shipped from"
          },
          "packingDetails": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShipmentLineItemPackingDetailDto"
            },
            "description": "Packing details indicating how quantities were split amongst lots/locations."
          }
        },
        "additionalProperties": false,
        "description": "Shipment line item data transfer object"
      },
      "ShipmentLineItemPackingDetailDto": {
        "type": "object",
        "properties": {
          "lotId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Lot identifier. Please reference /api/inventory-lots endpoint.",
            "nullable": true
          },
          "lotName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Lot name.",
            "nullable": true
          },
          "locationId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Location identifier. Please reference /api/locations endpoint.",
            "nullable": true
          },
          "locationName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Location name.",
            "nullable": true
          },
          "quantityPacked": {
            "minimum": 0,
            "type": "number",
            "description": "Quantity packed for this shipment line item that are associated to this lot.",
            "format": "double",
            "nullable": true
          },
          "box": {
            "maxLength": 36,
            "minLength": 0,
            "type": "string",
            "description": "Box identifier this packing detail was packed into. Free-form (e.g., \"1\", \"A1\").",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Packing detail associated to a shipment line item."
      },
      "ShipmentLineItemsListParameters": {
        "type": "object",
        "properties": {
          "packingStatus": {
            "$ref": "#/components/schemas/ShippingDataPackingStatus"
          },
          "itemId": {
            "type": "string",
            "description": "Filter shipment line items based on item identifier.",
            "nullable": true
          },
          "shipmentId": {
            "type": "string",
            "description": "Filter shipment line items based on shipment identifier.",
            "nullable": true
          },
          "salesOrderLineItemIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter shipment line items based on sales order line item(s) identifier.",
            "nullable": true
          },
          "purchaseOrderLineItemIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter shipment line items based on purchase order line item identifier.",
            "nullable": true
          },
          "shipmentIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter shipment line items based on shipment identifiers.",
            "nullable": true
          },
          "shipmentType": {
            "$ref": "#/components/schemas/ShippingDataShipmentType"
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching V3 shipment line items"
      },
      "ShipmentsListParameters": {
        "type": "object",
        "properties": {
          "shipmentStatus": {
            "$ref": "#/components/schemas/ShippingDataShipmentStatus"
          },
          "packingStatus": {
            "$ref": "#/components/schemas/ShippingDataPackingStatus"
          },
          "salesOrderId": {
            "type": "string",
            "description": "Filter shipments by sales order identifier",
            "nullable": true
          },
          "purchaseOrderId": {
            "type": "string",
            "description": "Filter shipments by purchase order identifier",
            "nullable": true
          },
          "shipmentType": {
            "$ref": "#/components/schemas/ShippingDataShipmentType"
          },
          "shipmentIds": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter shipments by shipment identifiers."
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching V3 shipments"
      },
      "ShipmentsShipmentDto": {
        "required": [
          "id",
          "name",
          "number",
          "packingStatus",
          "status"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "number": {
            "minimum": 0,
            "type": "integer",
            "description": "Number",
            "format": "int32"
          },
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Shipment Name"
          },
          "status": {
            "$ref": "#/components/schemas/ShippingDataShipmentStatus"
          },
          "packingStatus": {
            "$ref": "#/components/schemas/ShippingDataPackingStatus"
          },
          "trackingNumber": {
            "type": "string",
            "description": "Tracking number",
            "nullable": true
          },
          "shipByDate": {
            "type": "string",
            "description": "Ship by date.",
            "format": "date-time",
            "nullable": true
          },
          "shippedDate": {
            "type": "string",
            "description": "Shipped date.",
            "format": "date-time",
            "nullable": true
          },
          "shippedDateOverride": {
            "type": "string",
            "description": "Shipped date override.",
            "format": "date-time",
            "nullable": true
          },
          "notes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Shipment notes.",
            "nullable": true
          },
          "displayNotesToCustomer": {
            "type": "boolean",
            "description": "Whether to display the shipment notes on the pack list."
          },
          "shippingMethod": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "shippingAccount": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "shippingCost": {
            "type": "number",
            "description": "The actual cost to ship as set on the shipment page",
            "format": "double",
            "nullable": true
          },
          "shippingCharge": {
            "type": "number",
            "description": "The estimated cost to ship as set on the original shipment from the sales order page. It is charged to the customer via the Shipping/Handling line",
            "format": "double",
            "nullable": true
          },
          "address": {
            "$ref": "#/components/schemas/CommonAddressDto"
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined on this entity.",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "The external references associated with this shipment",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a shipment"
      },
      "ShipmentsShipmentUpdateDto": {
        "type": "object",
        "properties": {
          "shipByDate": {
            "type": "string",
            "description": "Ship by date.",
            "format": "date-time",
            "nullable": true
          },
          "notes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Shipment notes.",
            "nullable": true
          },
          "displayNotesToCustomer": {
            "type": "boolean",
            "description": "Whether or not to display the shipment notes on the pack list."
          },
          "trackingNumber": {
            "type": "string",
            "description": "The tracking number for the shipment.",
            "nullable": true
          },
          "shippingMethodId": {
            "type": "string",
            "description": "The shipping method identifier",
            "nullable": true
          },
          "shippedDate": {
            "type": "string",
            "description": "The shipped date",
            "format": "date-time",
            "nullable": true
          },
          "shippedDateOverride": {
            "type": "string",
            "description": "The override of the shipped date (used for changing the date of a shipment after it's been created)",
            "format": "date-time",
            "nullable": true
          },
          "shippingCost": {
            "type": "number",
            "description": "The shipment's cost",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents an update to a Shipment."
      },
      "ShippingDataPackingStatus": {
        "enum": [
          "notPacked",
          "partiallyPacked",
          "fullyPacked",
          "overPacked"
        ],
        "type": "string"
      },
      "ShippingDataShipmentStatus": {
        "enum": [
          "pending",
          "open",
          "shipped",
          "cancelled"
        ],
        "type": "string"
      },
      "ShippingDataShipmentType": {
        "enum": [
          "unknown",
          "standard",
          "outsideProcessing"
        ],
        "type": "string"
      },
      "ShippingMethodDto": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Identifying name. Must be unique."
          }
        },
        "additionalProperties": false,
        "description": "Shipping method definition."
      },
      "ShippingMethodRequestFindParameters": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter shipping methods based on their name.",
            "nullable": true
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter shipping methods based on matching ids.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding shipping methods."
      },
      "TagCreateBaseDto": {
        "required": [
          "name",
          "style"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Descriptive name associated to the object"
          },
          "style": {
            "$ref": "#/components/schemas/CommonEnumStyleEnum"
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Descriptive name associated to the object",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a tag for creation"
      },
      "TagCreateDto": {
        "required": [
          "name",
          "style",
          "types"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Descriptive name associated to the object"
          },
          "style": {
            "$ref": "#/components/schemas/CommonEnumStyleEnum"
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Descriptive name associated to the object",
            "nullable": true
          },
          "types": {
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonEnumTagTypeEnum"
            },
            "description": "The type(s) of this tag."
          }
        },
        "additionalProperties": false,
        "description": "Represents a tag for creation"
      },
      "TagDto": {
        "required": [
          "id",
          "name",
          "style",
          "types"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique Id associated to the referenced object"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Descriptive name associated to the object"
          },
          "style": {
            "$ref": "#/components/schemas/CommonEnumStyleEnum"
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Descriptive name associated to the object",
            "nullable": true
          },
          "types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonEnumTagTypeEnum"
            },
            "description": "Represents where/how this tag is used."
          },
          "deleted": {
            "type": "boolean",
            "description": "Indicate if this tag has been deleted.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents a tag"
      },
      "TagRequestFindParameters": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter tags based on their name.",
            "nullable": true
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter tags based on matching ids.",
            "nullable": true
          },
          "types": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonEnumTagTypeEnum"
            },
            "description": "Filter tags based on matching types.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding accounting codes."
      },
      "TagRequestFindParametersBase": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter tags based on their name.",
            "nullable": true
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter tags based on matching ids.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding accounting codes."
      },
      "TagUpdateDto": {
        "required": [
          "name",
          "style",
          "types"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Descriptive name associated to the object"
          },
          "style": {
            "$ref": "#/components/schemas/CommonEnumStyleEnum"
          },
          "description": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Descriptive name associated to the object",
            "nullable": true
          },
          "types": {
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonEnumTagTypeEnum"
            },
            "description": "The type(s) of this tag."
          }
        },
        "additionalProperties": false,
        "description": "Represents a tag for update"
      },
      "TaxRateCreateDto": {
        "required": [
          "code",
          "rate"
        ],
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The code for the tax rate. Must be unique to all active tax rates."
          },
          "rate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax rate. This is the ratio (0.17 = 17%)",
            "format": "double"
          },
          "applyToLandedCosts": {
            "type": "boolean",
            "description": "Indicate if this tax rate applies to landed costs."
          }
        },
        "additionalProperties": false,
        "description": "Details of tax rate to be created"
      },
      "TaxRateDto": {
        "required": [
          "code",
          "id",
          "rate"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "code": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Identifying code. Must be unique."
          },
          "provider": {
            "$ref": "#/components/schemas/DomainSystemDataTaxCodeProvider"
          },
          "rate": {
            "type": "number",
            "description": "Tax Rate (%)",
            "format": "double"
          },
          "applyToLandedCosts": {
            "type": "boolean",
            "description": "Indicate if this tax rate applies to landed costs."
          },
          "deleted": {
            "type": "boolean",
            "description": "Indicate if this record is deleted."
          }
        },
        "additionalProperties": false,
        "description": "Tax rate definition."
      },
      "TaxRateRequestFindParameters": {
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter tax rates based on their code.",
            "nullable": true
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter tax rates based on matching ids.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding tax rates."
      },
      "TaxRateUpdateDto": {
        "required": [
          "code",
          "rate"
        ],
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The code for the tax rate. Must be unique to all active tax rates."
          },
          "rate": {
            "minimum": 0,
            "type": "number",
            "description": "Tax rate. This is the proportion (0.17 = 17%)",
            "format": "double"
          },
          "applyToLandedCosts": {
            "type": "boolean",
            "description": "Indicate if this tax rate applies to landed costs."
          }
        },
        "additionalProperties": false,
        "description": "Details of tax rate to be update"
      },
      "TimeClockClockInDto": {
        "type": "object",
        "properties": {
          "userId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The user identifier to associate the clock in to.  If not supplied, will use the user assigned to the api key used for authorization",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Model for clocking in via the public api"
      },
      "TimeClockClockOutDto": {
        "type": "object",
        "properties": {
          "userId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The user identifier to associate the timer to.  If not supplied, will use the user assigned to the api key used for authorization",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Model for clocking a user out"
      },
      "TimeClockDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The timer identifier",
            "nullable": true
          },
          "startedById": {
            "type": "string",
            "description": "The user identifier who started the timer",
            "nullable": true
          },
          "startedOnUtc": {
            "type": "string",
            "description": "When the timer was started in UTC time.",
            "format": "date-time",
            "nullable": true
          },
          "stoppedOnUtc": {
            "type": "string",
            "description": "When the timer was stopped in UTC time.",
            "format": "date-time",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/DomainTimeTrackingTimer_Type"
          },
          "isRunning": {
            "type": "boolean",
            "description": "Whether the timer is running or not",
            "readOnly": true
          },
          "reasonCodeId": {
            "type": "string",
            "description": "The tag identifier for the reason code",
            "nullable": true
          },
          "clockInCodeId": {
            "type": "string",
            "description": "The tag identifier for the clock in code",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object for Timer entity"
      },
      "TimeClockRequestListTimeClocksParameters": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "description": "Filter timers based on who started it",
            "nullable": true
          },
          "startedDateRange": {
            "$ref": "#/components/schemas/DtoCommonDateRangeFilter"
          },
          "stoppedDateRange": {
            "$ref": "#/components/schemas/DtoCommonDateRangeFilter"
          },
          "runningTimersOnly": {
            "type": "boolean",
            "description": "Filter to only open timers",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching time clocks"
      },
      "TimerDto": {
        "required": [
          "createdUtc",
          "id",
          "segments",
          "startedOnUtc",
          "startedOnUtcOriginal",
          "type"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "The timer identifier"
          },
          "jobId": {
            "type": "string",
            "description": "The job identifier",
            "nullable": true
          },
          "jobName": {
            "type": "string",
            "description": "The job name.",
            "nullable": true
          },
          "itemToMakeId": {
            "type": "string",
            "description": "The item to make identifier",
            "nullable": true
          },
          "itemToMakeItemId": {
            "type": "string",
            "description": "The item to make's original item id.",
            "nullable": true
          },
          "itemToMakeName": {
            "type": "string",
            "description": "The item to make name.",
            "nullable": true
          },
          "itemToMakeDescription": {
            "type": "string",
            "description": "The item to make description.",
            "nullable": true
          },
          "jobOperationId": {
            "type": "string",
            "description": "The job operation identifier",
            "nullable": true
          },
          "jobOperationName": {
            "type": "string",
            "description": "The job operation name.",
            "nullable": true
          },
          "jobOperationDescription": {
            "type": "string",
            "description": "The job operation description.",
            "nullable": true
          },
          "startedById": {
            "type": "string",
            "description": "The user identifier who started the timer",
            "nullable": true
          },
          "startedOnUtc": {
            "type": "string",
            "description": "When the timer was started in UTC time.",
            "format": "date-time"
          },
          "startedOnUtcOriginal": {
            "type": "string",
            "description": "When the timer was ORIGINALLY started in UTC time.",
            "format": "date-time"
          },
          "stoppedOnUtc": {
            "type": "string",
            "description": "When the timer was stopped in UTC time.",
            "format": "date-time",
            "nullable": true
          },
          "stoppedOnUtcOriginal": {
            "type": "string",
            "description": "When the timer was ORIGINALLY stopped in UTC time.",
            "format": "date-time",
            "nullable": true
          },
          "type": {
            "$ref": "#/components/schemas/DomainTimeTrackingTimer_Type"
          },
          "isRunning": {
            "type": "boolean",
            "description": "Whether the timer is running or not",
            "readOnly": true
          },
          "createdUtc": {
            "type": "string",
            "description": "When the timer was created in UTC time.",
            "format": "date-time"
          },
          "modifiedUtc": {
            "type": "string",
            "description": "When the timer was modified in UTC time.",
            "format": "date-time",
            "nullable": true
          },
          "elapsedTimeInSeconds": {
            "type": "number",
            "description": "Elapsed time this timer was running.  Can be greater than the labor time if the operator has multiple concurrent timers.",
            "format": "double",
            "nullable": true
          },
          "operationTimeInSeconds": {
            "type": "number",
            "description": "Total Operation run time\nIf this timer was overridden, the operation time will be adjusted by the multiple of the adjustment",
            "format": "double",
            "nullable": true
          },
          "laborTimeInSeconds": {
            "type": "number",
            "description": "Labor time for use in costing calculations\nCan be less than elapsed time if an operator's time was split between jobs",
            "format": "double",
            "nullable": true
          },
          "machineTimeInSeconds": {
            "type": "number",
            "description": "Machine time for use in costing and time displays which is just the elapsed time of the segments\nIf the start/stop time has been overridden directly, use that value",
            "format": "double",
            "nullable": true
          },
          "segments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TimerSegmentDto"
            },
            "description": "The segments of time that this overall timer represents."
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "External references associated with this entity.",
            "nullable": true
          },
          "details": {
            "$ref": "#/components/schemas/DtoTimerAttributionDetails"
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object for Timer entity"
      },
      "TimerSegmentDto": {
        "required": [
          "id",
          "startedOnUtc"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "The timer segment identifier.",
            "format": "uuid"
          },
          "startedOnUtc": {
            "type": "string",
            "description": "When this segment begins.",
            "format": "date-time"
          },
          "stoppedOnUtc": {
            "type": "string",
            "description": "When this segment ends. If the timer is not stopped (still running), this value will be blank.",
            "format": "date-time",
            "nullable": true
          },
          "isRunning": {
            "type": "boolean",
            "description": "Whether the timer segment is running or not.",
            "readOnly": true
          },
          "details": {
            "$ref": "#/components/schemas/DtoTimerSegmentAttributionDetails"
          }
        },
        "additionalProperties": false,
        "description": "Data transfer object for TimerSegments entity"
      },
      "TimerUpdateDto": {
        "type": "object",
        "properties": {
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents an update on a timer."
      },
      "UserDto": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "employeeId": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "This property represents the unique identifier of an employee.",
            "nullable": true
          },
          "firstName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "First name",
            "nullable": true
          },
          "lastName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Last name",
            "nullable": true
          },
          "emailAddress": {
            "type": "string",
            "description": "Email address",
            "format": "email",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "description": "Email address",
            "nullable": true
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Roles associated to the user.",
            "nullable": true
          },
          "deleted": {
            "type": "boolean",
            "description": "Indicates whether this user has been deleted"
          }
        },
        "additionalProperties": false,
        "description": "User."
      },
      "UserListDto": {
        "required": [
          "id"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "firstName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "First name",
            "nullable": true
          },
          "lastName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Last name",
            "nullable": true
          },
          "emailAddress": {
            "type": "string",
            "description": "Email address",
            "format": "email",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "description": "Email address",
            "nullable": true
          },
          "roleIds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CommonReferenceDto"
            },
            "description": "Roles associated to the user.",
            "nullable": true
          },
          "deleted": {
            "type": "boolean",
            "description": "Indicates whether this user has been deleted"
          }
        },
        "additionalProperties": false,
        "description": "User."
      },
      "UserRequestFindParameters": {
        "type": "object",
        "properties": {
          "firstName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter users based on their first name.",
            "nullable": true
          },
          "lastName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter users based on their last name.",
            "nullable": true
          },
          "emailAddress": {
            "type": "string",
            "description": "Email address",
            "nullable": true
          },
          "phoneNumber": {
            "type": "string",
            "description": "Phone number",
            "nullable": true
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter users to those with any of the provided roles.",
            "nullable": true
          },
          "omniSearch": {
            "type": "string",
            "description": "Search for users based on a string that should match any of the user's first name, last name, email address, phone number or roles.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding users."
      },
      "UserStatusDto": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "description": "The user's first name",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "description": "The user's last name",
            "nullable": true
          },
          "isOnBreak": {
            "type": "boolean",
            "description": "Whether user is on break."
          },
          "breakStartAtUtc": {
            "type": "string",
            "description": "Time the break started.",
            "format": "date-time",
            "nullable": true
          },
          "elapsedBreakTimeInSeconds": {
            "type": "number",
            "description": "The elapsed break time in seconds.",
            "format": "double",
            "nullable": true,
            "readOnly": true
          },
          "isClockedIn": {
            "type": "boolean",
            "description": "Whether the user is clocked in."
          },
          "clockedInAtUtc": {
            "type": "string",
            "description": "Date-time the user clocked in at.",
            "format": "date-time",
            "nullable": true
          },
          "elapsedClockedInTimeInSeconds": {
            "type": "number",
            "description": "The elapsed clocked in time in seconds.",
            "format": "double",
            "nullable": true,
            "readOnly": true
          },
          "jobs": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DtoUserJobOpTimer"
            },
            "description": "The jobs the user is working on."
          }
        },
        "additionalProperties": false,
        "description": "A user object that contains information about the jobs/operations the user is clocked into, as well as if the user is on break."
      },
      "V2InventoryDataEventSourceType": {
        "enum": [
          "purchaseOrder",
          "job",
          "shipment",
          "shipmentLineItem",
          "shipping",
          "receiving",
          "item",
          "workOrder",
          "salesOrder",
          "jobOperation",
          "workOrderOperation",
          "fulfillment",
          "itemToMakeMaterialRemnant",
          "poRcvValueAdj"
        ],
        "type": "string"
      },
      "V2InventoryRestResourcesTransactionChangeType": {
        "enum": [
          "increase",
          "decrease",
          "static"
        ],
        "type": "string"
      },
      "VendorAddressDto": {
        "required": [
          "address1",
          "city",
          "id",
          "postalCode"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Name of the address (Bob's Shipping, Primary, Reno Warehouse, etc).",
            "nullable": true
          },
          "address1": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Primary address line."
          },
          "address2": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Second address line.",
            "nullable": true
          },
          "address3": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Third address line.",
            "nullable": true
          },
          "city": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Address city"
          },
          "stateProvince": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Address state/province.",
            "nullable": true
          },
          "postalCode": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Postal/zip code."
          },
          "country": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Country identifier.",
            "nullable": true
          },
          "shippingLeadTime": {
            "minimum": 0,
            "type": "integer",
            "description": "Lead time for shipping contents.",
            "format": "int32",
            "nullable": true
          },
          "primaryBilling": {
            "type": "boolean",
            "description": "Signifies if this is a primary billing address."
          },
          "primaryShipping": {
            "type": "boolean",
            "description": "Signifies if this is a primary billing address."
          },
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "email": {
            "type": "string",
            "description": "Email address",
            "format": "email",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "Associated phone number",
            "nullable": true
          },
          "fax": {
            "type": "string",
            "description": "Associated fax number",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "General notes associated to this vendor address",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Address with additional context for a vendor"
      },
      "VendorAddressUpdateDto": {
        "required": [
          "address1",
          "city",
          "postalCode"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Name of the address (Bob's Shipping, Primary, Reno Warehouse, etc).",
            "nullable": true
          },
          "address1": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Primary address line."
          },
          "address2": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Second address line.",
            "nullable": true
          },
          "address3": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Third address line.",
            "nullable": true
          },
          "city": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Address city"
          },
          "stateProvince": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Address state/province.",
            "nullable": true
          },
          "postalCode": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Postal/zip code."
          },
          "country": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Country identifier.",
            "nullable": true
          },
          "shippingLeadTime": {
            "minimum": 0,
            "type": "integer",
            "description": "Lead time for shipping contents.",
            "format": "int32",
            "nullable": true
          },
          "primaryBilling": {
            "type": "boolean",
            "description": "Signifies if this is a primary billing address."
          },
          "primaryShipping": {
            "type": "boolean",
            "description": "Signifies if this is a primary billing address."
          },
          "email": {
            "type": "string",
            "description": "Email address",
            "format": "email",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "Associated phone number",
            "nullable": true
          },
          "fax": {
            "type": "string",
            "description": "Associated fax number",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "General notes associated to this customer address",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Address with additional context for updating for a vendor"
      },
      "VendorContactCreateDto": {
        "required": [
          "firstName"
        ],
        "type": "object",
        "properties": {
          "firstName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "First name"
          },
          "lastName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Last name",
            "nullable": true
          },
          "position": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Position / Job Title",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "Phone number",
            "nullable": true
          },
          "cellPhone": {
            "type": "string",
            "description": "Cellphone number",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Email address",
            "format": "email",
            "nullable": true
          },
          "fax": {
            "type": "string",
            "description": "Fax number",
            "nullable": true
          },
          "notes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Internal notes about this contact.",
            "nullable": true
          },
          "emailPurchaseOrders": {
            "type": "boolean",
            "description": "Whether this contact should receive purchase order emails."
          }
        },
        "additionalProperties": false,
        "description": "A vendor contact"
      },
      "VendorContactDto": {
        "required": [
          "firstName",
          "id",
          "lastName"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 36,
            "minLength": 36,
            "type": "string",
            "description": "Id"
          },
          "firstName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "First name"
          },
          "lastName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Last name"
          },
          "position": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Position / Job Title",
            "nullable": true
          },
          "cellPhone": {
            "type": "string",
            "description": "Cellphone number",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "Phone number",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Email address",
            "format": "email",
            "nullable": true
          },
          "fax": {
            "type": "string",
            "description": "Fax number",
            "nullable": true
          },
          "notes": {
            "type": "string",
            "description": "Internal notes about this contact.",
            "nullable": true
          },
          "emailPurchaseOrders": {
            "type": "boolean",
            "description": "Whether this contact should receive purchase order emails."
          }
        },
        "additionalProperties": false,
        "description": "A vendor contact"
      },
      "VendorContactUpdateDto": {
        "required": [
          "firstName"
        ],
        "type": "object",
        "properties": {
          "firstName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "First name"
          },
          "lastName": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Last name",
            "nullable": true
          },
          "position": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Position / Job Title",
            "nullable": true
          },
          "phone": {
            "type": "string",
            "description": "Phone number",
            "nullable": true
          },
          "cellPhone": {
            "type": "string",
            "description": "Cellphone number",
            "nullable": true
          },
          "email": {
            "type": "string",
            "description": "Email address",
            "format": "email",
            "nullable": true
          },
          "fax": {
            "type": "string",
            "description": "Fax number",
            "nullable": true
          },
          "notes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "Internal notes about this contact.",
            "nullable": true
          },
          "emailPurchaseOrders": {
            "type": "boolean",
            "description": "Whether this contact should receive purchase order emails. When omitted, the existing value is preserved.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A vendor contact"
      },
      "VendorCreateDto": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name to give the entity. Must be unique to all active vendors."
          },
          "paymentTermsId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Payment terms key identifier. Please reference /api/payment-terms endpoint.",
            "nullable": true
          },
          "vendorCode": {
            "minLength": 1,
            "type": "string",
            "description": "Unique identifier for this vendor.",
            "nullable": true
          },
          "notes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "General notes associated to this vendor",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "description": "The currency of the vendor",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for the vendor",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Definition for creating a vendor."
      },
      "VendorDto": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Id"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name to give the vendor. Must be unique to all active vendors."
          },
          "vendorCode": {
            "minLength": 1,
            "type": "string",
            "description": "Unique identifier for this vendor.",
            "nullable": true
          },
          "paymentTermsId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Payment terms identifier. Please reference /api/payment-terms endpoint.",
            "nullable": true
          },
          "paymentTerms": {
            "$ref": "#/components/schemas/CommonReferenceDto"
          },
          "notes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "General notes associated to this vendor",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "External references associated with this entity.",
            "nullable": true
          },
          "customFields": {
            "type": "object",
            "additionalProperties": { },
            "description": "Custom fields that have been defined on this entity.",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "description": "The currency of the vendor.",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "Approval/quality status of the vendor. One of: Approved, Probation, Monitor, Disqualified, Other.",
            "nullable": true
          },
          "active": {
            "type": "boolean",
            "description": "Whether the vendor is active."
          },
          "leadTime": {
            "type": "integer",
            "description": "Default lead time in days.",
            "format": "int32",
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "Vendor website URL.",
            "format": "uri",
            "nullable": true
          },
          "vendorSince": {
            "type": "string",
            "description": "Date the vendor relationship began.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A vendor"
      },
      "VendorRequestFindParameters": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter to vendors who's name contains the given string",
            "nullable": true
          },
          "vendorCode": {
            "minLength": 1,
            "type": "string",
            "description": "Unique identifier for this vendor.",
            "nullable": true
          },
          "externalReference": {
            "$ref": "#/components/schemas/CommonExternalReferenceFindDto"
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding vendors."
      },
      "VendorUpdateDto": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "The name to give the entity. Must be unique to all active vendors."
          },
          "paymentTermsId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Payment terms key identifier. Please reference /api/payment-terms endpoint.",
            "nullable": true
          },
          "vendorCode": {
            "minLength": 1,
            "type": "string",
            "description": "Unique identifier for this vendor.",
            "nullable": true
          },
          "notes": {
            "maxLength": 2000,
            "minLength": 1,
            "type": "string",
            "description": "General notes associated to this vendor.",
            "nullable": true
          },
          "currencyCode": {
            "type": "string",
            "description": "The currency of the vendor. When omitted, the existing value is preserved.",
            "nullable": true
          },
          "status": {
            "type": "string",
            "description": "Approval/quality status of the vendor. One of: Approved, Probation, Monitor, Disqualified, Other.\nWhen omitted, the existing value is preserved.",
            "nullable": true
          },
          "active": {
            "type": "boolean",
            "description": "Whether the vendor is active. When omitted, the existing value is preserved.",
            "nullable": true
          },
          "leadTime": {
            "minimum": 0,
            "type": "integer",
            "description": "Default lead time in days.",
            "format": "int32",
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "Vendor website URL.",
            "format": "uri",
            "nullable": true
          },
          "vendorSince": {
            "type": "string",
            "description": "Date the vendor relationship began.",
            "format": "date-time",
            "nullable": true
          },
          "externalReferences": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CommonExternalReferenceDto"
            },
            "description": "Arbitrary key-value-pair like data that can be used to later on search for this line item.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Definition for updating a vendor."
      },
      "WorkCenterDto": {
        "required": [
          "id",
          "name"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique id associated to this entity."
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Identifying name. Must be unique."
          },
          "departmentId": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Department identifier. Please reference /api/departments endpoint.",
            "nullable": true
          },
          "setupRate": {
            "minimum": 0,
            "type": "number",
            "description": "Hourly cost rate for setup.",
            "format": "double",
            "nullable": true
          },
          "runRate": {
            "minimum": 0,
            "type": "number",
            "description": "Hourly cost rate for run.",
            "format": "double",
            "nullable": true
          },
          "laborRate": {
            "minimum": 0,
            "type": "number",
            "description": "Hourly cost rate for labor.",
            "format": "double",
            "nullable": true
          },
          "overheadRate": {
            "minimum": 0,
            "type": "number",
            "description": "Hourly cost rate for overhead.",
            "format": "double",
            "nullable": true
          },
          "machineRate": {
            "minimum": 0,
            "type": "number",
            "description": "Hourly cost rate for machine.",
            "format": "double",
            "nullable": true
          },
          "deleted": {
            "type": "boolean",
            "description": "Indicates whether this equipment has been deleted"
          },
          "equipment": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EquipmentDto"
            },
            "description": "Equipment associated with this workcenter."
          }
        },
        "additionalProperties": false,
        "description": "Workcenter definition."
      },
      "WorkCenterRequestFindParameters": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter workcenters based on matching ids.",
            "nullable": true
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Filter workcenters based on their name.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding workcenters."
      },
      "WorkOrderDto": {
        "required": [
          "id",
          "name",
          "number",
          "status"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Unique Id associated to this entity"
          },
          "number": {
            "type": "integer",
            "description": "Job number",
            "format": "int32"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Job name, defaults to number unless otherwise specified."
          },
          "createdUtc": {
            "type": "string",
            "description": "The date the job was created",
            "format": "date-time"
          },
          "completedOnUtc": {
            "type": "string",
            "description": "The job completion datetime.",
            "format": "date-time",
            "nullable": true
          },
          "cancelledOnUtc": {
            "type": "string",
            "description": "The job cancelled datetime.",
            "format": "date-time",
            "nullable": true
          },
          "scheduledStartUtc": {
            "type": "string",
            "description": "The current scheduled start time.",
            "format": "date-time",
            "nullable": true
          },
          "scheduledEndUtc": {
            "type": "string",
            "description": "The current scheduled end time.",
            "format": "date-time",
            "nullable": true
          },
          "status": {
            "$ref": "#/components/schemas/WorkOrderStatusEnum"
          },
          "priority": {
            "$ref": "#/components/schemas/JobPriorityEnum"
          }
        },
        "additionalProperties": false,
        "description": "Represents a work order"
      },
      "WorkOrderReferenceDto": {
        "required": [
          "id",
          "name",
          "number"
        ],
        "type": "object",
        "properties": {
          "id": {
            "maxLength": 24,
            "minLength": 24,
            "type": "string",
            "description": "Identifier of work order.\nPlease reference api/work-orders endpoint for additional information."
          },
          "number": {
            "minimum": 0,
            "type": "integer",
            "description": "Number",
            "format": "int32"
          },
          "name": {
            "maxLength": 200,
            "minLength": 1,
            "type": "string",
            "description": "Work order name, defaults to number unless otherwise specified."
          }
        },
        "additionalProperties": false,
        "description": "Work order reference information"
      },
      "WorkOrderRequestFindParameters": {
        "type": "object",
        "properties": {
          "workOrderIds": {
            "maxItems": 500,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter to work orders whose ids are in the list",
            "nullable": true
          },
          "numbers": {
            "maxItems": 500,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Filter to only given numbers",
            "nullable": true
          },
          "names": {
            "maxItems": 500,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Filter to only given names",
            "nullable": true
          },
          "statuses": {
            "maxItems": 500,
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WorkOrderStatusEnum"
            },
            "description": "Filter to match the given statuses",
            "nullable": true
          },
          "createdBeforeUtc": {
            "type": "string",
            "description": "Filters jobs created before (exclusive) this parameter in UTC time. If not time component is passed, midnight UTC will be used.",
            "format": "date-time",
            "nullable": true
          },
          "createdAfterUtc": {
            "type": "string",
            "description": "Filters jobs created after (exclusive) this parameter in UTC time. If not time component is passed, midnight UTC will be used.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Parameters used for searching/finding work orders."
      },
      "WorkOrderStatusEnum": {
        "enum": [
          "needsReview",
          "approved",
          "scheduled",
          "inProgress",
          "complete",
          "cancelled"
        ],
        "type": "string",
        "description": "Work order status"
      }
    },
    "securitySchemes": {
      "bearer": {
        "type": "http",
        "description": "Your API bearer token generated in System Data > Advanced > Public API Setup",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  },
  "x-tagGroups": [
    {
      "name": "Accounting Code",
      "tags": [
        "Accounting Code"
      ]
    },
    {
      "name": "Attachment",
      "tags": [
        "Attachment",
        "Attachment Certification"
      ]
    },
    {
      "name": "Auth",
      "tags": [
        "Auth"
      ]
    },
    {
      "name": "CAPAs",
      "tags": [
        "CAPAs"
      ]
    },
    {
      "name": "Chart Of Accounts",
      "tags": [
        "Chart Of Accounts"
      ]
    },
    {
      "name": "Company Info",
      "tags": [
        "Company Info"
      ]
    },
    {
      "name": "Custom Field",
      "tags": [
        "Custom Field"
      ]
    },
    {
      "name": "Customer",
      "tags": [
        "Customer",
        "Customer Address",
        "Customer Contact"
      ]
    },
    {
      "name": "Customer Tier",
      "tags": [
        "Customer Tier"
      ]
    },
    {
      "name": "Department",
      "tags": [
        "Department"
      ]
    },
    {
      "name": "Equipment",
      "tags": [
        "Equipment"
      ]
    },
    {
      "name": "Gauge Code",
      "tags": [
        "Gauge Code"
      ]
    },
    {
      "name": "Grade Code",
      "tags": [
        "Grade Code"
      ]
    },
    {
      "name": "InProcessTrackingFieldType",
      "tags": [
        "InProcessTrackingFieldType"
      ]
    },
    {
      "name": "Inventory",
      "tags": [
        "Inventory"
      ]
    },
    {
      "name": "Inventory Event",
      "tags": [
        "Inventory Event",
        "Inventory Event Details"
      ]
    },
    {
      "name": "Inventory Lot",
      "tags": [
        "Inventory Lot"
      ]
    },
    {
      "name": "Inventory Transactions",
      "tags": [
        "Inventory Transactions"
      ]
    },
    {
      "name": "Invoice",
      "tags": [
        "Invoice",
        "Invoice Deposit Adjustment Line Item",
        "Invoice Deposit Line Item",
        "Invoice Discount Line Item",
        "Invoice Fee Line Item",
        "Invoice Line Item",
        "Invoice Note",
        "Invoice Part Line Item",
        "Invoice Refund Line Item",
        "Invoice Shipping Charge Line Item",
        "Invoice Tax Line Item"
      ]
    },
    {
      "name": "Item",
      "tags": [
        "Item",
        "Item Custom Fields",
        "Item Customer",
        "Item Material Vendor",
        "Item PriceBreaks",
        "Item Routing",
        "Item Vendor"
      ]
    },
    {
      "name": "Item Category",
      "tags": [
        "Item Category"
      ]
    },
    {
      "name": "Item Class",
      "tags": [
        "Item Class"
      ]
    },
    {
      "name": "Item Tag",
      "tags": [
        "Item Tag"
      ]
    },
    {
      "name": "Job",
      "tags": [
        "Job",
        "Job Custom Fields",
        "Job Full Routing",
        "Job Part Line Item Full Routing",
        "Job Item To Make",
        "Job Item To Make Operation",
        "Job Operation"
      ]
    },
    {
      "name": "Job Tracking Timers",
      "tags": [
        "Job Tracking Timers"
      ]
    },
    {
      "name": "Location",
      "tags": [
        "Location"
      ]
    },
    {
      "name": "Material",
      "tags": [
        "Material",
        "Material Vendor"
      ]
    },
    {
      "name": "Material Code",
      "tags": [
        "Material Code"
      ]
    },
    {
      "name": "NCRs",
      "tags": [
        "NCRs"
      ]
    },
    {
      "name": "Note",
      "tags": [
        "Note"
      ]
    },
    {
      "name": "Operation",
      "tags": [
        "Operation"
      ]
    },
    {
      "name": "Payment Term",
      "tags": [
        "Payment Term"
      ]
    },
    {
      "name": "Purchase Order",
      "tags": [
        "Purchase Order",
        "Purchase Order Custom Fields",
        "Purchase Order Discount Line Item",
        "Purchase Order Fee Line Item",
        "Purchase Order Line Item",
        "Purchase Order Outside Processing Line Item",
        "Purchase Order Part Line Item",
        "Purchase Order Tax Line Item",
        "Purchase Order Vendor Credit Line Item"
      ]
    },
    {
      "name": "Quote",
      "tags": [
        "Quote",
        "Quote Custom Fields",
        "Quote Discount Line Item",
        "Quote Fee Line Item",
        "Quote Part Line Item",
        "Quote Part Line Item Custom Fields",
        "Quote Part Line Item Full Routing",
        "Quote Tax Line Item"
      ]
    },
    {
      "name": "Receiving",
      "tags": [
        "Receiving Receipt",
        "Receiving Receipt Line Item"
      ]
    },
    {
      "name": "Refund Reason Code",
      "tags": [
        "Refund Reason Code"
      ]
    },
    {
      "name": "Reporting",
      "tags": [
        "Reporting"
      ]
    },
    {
      "name": "Sales Order",
      "tags": [
        "Sales Order",
        "Sales Order Blanket Line Item",
        "Sales Order Custom Fields",
        "Sales Order Discount Line Item",
        "Sales Order Fee Line Item",
        "Sales Order Line Item",
        "Sales Order Part Line Item",
        "Sales Order Part Line Item Custom Fields",
        "Sales Order Part Line Item Full Routing",
        "Sales Order Refund Line Item",
        "Sales Order Shipping Charge Line Item",
        "Sales Order Tax Line Item"
      ]
    },
    {
      "name": "ScrapReport",
      "tags": [
        "ScrapReport"
      ]
    },
    {
      "name": "Shape Code",
      "tags": [
        "Shape Code"
      ]
    },
    {
      "name": "Shipment Line Items (V3)",
      "tags": [
        "Shipment Line Items (V3)"
      ]
    },
    {
      "name": "Shipment",
      "tags": [
        "Shipment Custom Fields"
      ]
    },
    {
      "name": "Shipments",
      "tags": [
        "Shipments"
      ]
    },
    {
      "name": "Shipping Method",
      "tags": [
        "Shipping Method"
      ]
    },
    {
      "name": "Tag",
      "tags": [
        "Tag"
      ]
    },
    {
      "name": "Tax Rate",
      "tags": [
        "Tax Rate"
      ]
    },
    {
      "name": "Time Clock Timers",
      "tags": [
        "Time Clock Timers"
      ]
    },
    {
      "name": "Timer",
      "tags": [
        "Timer"
      ]
    },
    {
      "name": "User",
      "tags": [
        "User",
        "User Status"
      ]
    },
    {
      "name": "Vendor",
      "tags": [
        "Vendor",
        "Vendor Address",
        "Vendor Contact"
      ]
    },
    {
      "name": "Work Order",
      "tags": [
        "Work Order"
      ]
    },
    {
      "name": "WorkCenter",
      "tags": [
        "WorkCenter"
      ]
    }
  ]
}