swagger: "2.0"
securityDefinitions:
  ApiKeyAuth:
    type: "apiKey"
    in: "header"
    name: "X-API-Key"
security:
  - ApiKeyAuth: []
schemes:
  - "http"
host: "metrc-gw.fabric.tnxs.net:8080"
basePath: "/v1"
info:
  contact:
    email: "support@taxnexus.net"
    name: "Taxnexus Support"
    url: "https://www.taxnexus.net/contact-us/"
  description: Metrc Gateway Microservice
  license:
    name: "Proprietary"
  termsOfService: "https://www.taxnexus.com/terms/"
  title: metrc-gw
  version: 1.3.0
consumes:
  - "application/json"
produces:
  - "application/json"
parameters:
  activeStatusQuery:
    description: Get Active objects?
    in: query
    name: active
    required: false
    type: boolean
  itemNumberPath:
    description: The Item Number
    in: path
    name: itemId
    required: true
    type: number
  itemNumberQuery:
    description: The Item Number
    in: query
    name: itemId
    required: false
    type: number
  itemNumberQueryRequired:
    description: The Item Number
    in: query
    name: itemId
    required: true
    type: number
  lastModifiedEndQuery:
    description: The last modified end timestamp
    in: query
    name: lastModifiedEnd
    required: false
    type: string
  lastModifiedStartQuery:
    description: The last modified start timestamp
    in: query
    name: lastModifiedStart
    required: false
    type: string
  licenseNumberQuery:
    description: The Licnese Number for the query
    in: query
    name: license
    required: true
    type: string
  mediaType:
    default: application/json
    description: The response media type
    enum:
      - application/json
    in: header
    name: Accept
    type: string
  onholdStatusQuery:
    description: Get On Hold objects?
    in: query
    name: onhold
    required: false
    type: boolean
  packageLabelQuery:
    description: The METRC Package Label
    in: query
    name: label
    required: false
    type: string
  packageNumberQuery:
    description: The METRC Package Number
    in: query
    name: packageId
    required: false
    type: string
  productionQuery:
    description: Use Production API?
    in: query
    name: production
    required: false
    type: boolean
  resellerKeyQuery:
    description: The METRC Reseller Key
    in: query
    name: reseller
    required: true
    type: string
  roomNumberQueryRequired:
    description: The Room ID number
    in: query
    name: roomNumber
    required: true
    type: string
  salesDeliveryNumberQuery:
    description: The Sales Delivery Number
    in: query
    name: deliveryId
    required: false
    type: string
  salesDeliveryNumberQueryRequired:
    description: The Sales Delivery Number
    in: query
    name: salesDeliveryId
    required: true
    type: string
  salesReceiptNumberQuery:
    description: The Sales Receipt Number
    in: query
    name: salesReceiptId
    required: false
    type: string
  salesReceiptNumberQueryRequired:
    description: The Sales Receipt Number
    in: query
    name: salesReceiptId
    required: true
    type: string
  salesTransactionNumberQueryRequired:
    description: The Sales Transaction Number
    in: query
    name: transactionId
    required: true
    type: string
  stateCodeQuery:
    description: The 2-character State Code
    in: query
    name: state
    required: true
    type: string
  userKeyQuery:
    description: The METRC User Key
    in: query
    name: user
    required: true
    type: string
responses:
  Unauthorized:
    description: "Access unauthorized, invalid API-KEY was used"
    schema:
      $ref: "#/definitions/Error"
  AccessForbidden:
    description: "Access forbidden, account lacks access"
    schema:
      $ref: "#/definitions/Error"
  Conflict:
    description: Conflict
    schema:
      $ref: "#/definitions/Error"
  InvalidDataError:
    description: Invalid data was sent
    schema:
      $ref: "#/definitions/InvalidError"
  ServerError:
    description: Server Internal Error
    schema:
      $ref: "#/definitions/Error"
  NotFound:
    description: Resource was not found
    schema:
      $ref: "#/definitions/Error"
tags:
  - description: |
      METRC functions related to getting Facility information
    name: Facilities
  - description: |
      METRC functions related to Harvests
    name: Harvests
  - description: |
      METRC functions related to Items
    name: Items
  - description: |
      METRC functions related to Packages
    name: Packages
  - description: |
      METRC functions related to Lab Tests
    name: Lab Tests
  - description: |
      METRC functions related to Plants
    name: Plants
  - description: |
      METRC functions related to Plant Batches
    name: Plant Batches
  - description: |
      METRC functions related to Rooms
    name: Rooms
  - description: |
      METRC functions related to Strains
    name: Strains
  - description: |
      METRC functions related to Sales
    name: Sales
  - description: |
      METRC functions related to Transfers
    name: Transfers
  - description: |
      METRC functions related to Units of Measure
    name: Units of Measure
paths:
  /metrics:
    get:
      summary: Metrics Scraper Endpoint
      operationId: getMetrics
      description:
        Provides application metrics to Prometheuus logging system
      tags:
        - Sys
      responses:
        "200":
          description: OK
  /facilities:
    get:
      tags:
        - Facilities
      operationId: getFacilities
      description: |
        Facilities for this User
      parameters:
        - $ref: "#/parameters/productionQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: A list of Facilities was retrieved successfully
          schema:
            $ref: "#/definitions/FacilityResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Facilities for this User
  /harvests:
    get:
      tags:
        - Harvests
      operationId: getHarvests
      description: |
        Get a Harvest for this User-License
      parameters:
        - $ref: "#/parameters/activeStatusQuery"
        - $ref: "#/parameters/itemNumberQuery"
        - $ref: "#/parameters/productionQuery"
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/onholdStatusQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: A Harvest was successfully retrieved
          schema:
            $ref: "#/definitions/HarvestResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Harvest for this User-License
    put:
      tags:
        - Harvests
      description: Update Harvest Records
      operationId: putHarvests
      parameters:
        - in: body
          name: harvestUpdateRequest
          description: The Harvest Update records
          schema:
            $ref: "#/definitions/HarvestUpdateRequest"
      responses:
        "200":
          description: An array of Harvest Update records
          schema:
            $ref: "#/definitions/HarvestUpdateResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
  /harvests/wastetypes:
    get:
      tags:
        - Harvests
      operationId: getHarvestWasteTypes
      description: |
        Harvest Waste Types for this User
      parameters:
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description:
            A list of Harvest Waste Types was succefully retrieved
          schema:
            $ref: "#/definitions/HarvestWasteTypeResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Harvest Waste Types for User
  /harvestpackages:
    post:
      tags:
        - Harvests
      summary: Create new Harvest Packages
      operationId: postHarvestPackages
      description: Create new Plants
      parameters:
        - in: body
          name: harvestPackageRequest
          description: The New HarvestPackages
          schema:
            $ref: "#/definitions/HarvestPackageRequest"
      responses:
        "200":
          description:
            An array of HarvestPackage records with the new IDs
          schema:
            $ref: "#/definitions/PlantResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
  /items:
    get:
      tags:
        - Items
      operationId: getItems
      description: |
        Get one or more Items for this User-License
      parameters:
        - $ref: "#/parameters/activeStatusQuery"
        - $ref: "#/parameters/itemNumberQuery"
        - $ref: "#/parameters/lastModifiedEndQuery"
        - $ref: "#/parameters/lastModifiedStartQuery"
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/onholdStatusQuery"
        - $ref: "#/parameters/productionQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: An item was successfully retrieved
          schema:
            $ref: "#/definitions/ItemResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Items for this User-License
    post:
      tags:
        - Items
      summary: Create new Items
      operationId: postItems
      description: Create new Items
      parameters:
        - in: body
          name: itemRequest
          description: The New Items
          schema:
            $ref: "#/definitions/ItemRequest"
      responses:
        "200":
          description: An array of Items records with the new IDs
          schema:
            $ref: "#/definitions/ItemResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
    put:
      tags:
        - Items
      summary: Update existing Items
      operationId: putItems
      description: Update existing Items
      parameters:
        - in: body
          name: itemRequest
          description: The Existing Items with Ids
          schema:
            $ref: "#/definitions/ItemRequest"
      responses:
        "200":
          description: An array of Items records
          schema:
            $ref: "#/definitions/ItemResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
    delete:
      tags:
        - Items
      operationId: Delete Item
      description: |
        Delete a Item for this User-License
      parameters:
        - $ref: "#/parameters/itemNumberQueryRequired"
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: Item were successfully Deleted
          schema:
            $ref: "#/definitions/ItemResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Item for this User-License
  /items/brands:
    get:
      tags:
        - Items
      operationId: getBrands
      description: |
        Get Item Brands for this User
      parameters:
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Items Brands for User
  /items/productcategories:
    get:
      tags:
        - Items
      operationId: getItemProductCategories
      description: |
        Item Product Categories for this User
      parameters:
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description:
            A list of Item Product Categories was succefully retrieved
          schema:
            $ref: "#/definitions/ProductCategoryResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Item Product Categories for User
  /labtests/states:
    get:
      tags:
        - Lab Tests
      operationId: getLabtestStates
      description: |
        Get The Lab Test States
      parameters:
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/productionQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description:
            A list of Item Product Categories was succefully retrieved
          schema:
            $ref: "#/definitions/LabTestStateResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Item Product Categories for User
  /labtests/types:
    get:
      tags:
        - Lab Tests
      operationId: getLabtestTypes
      description: |
        Get The Lab Test States
      parameters:
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/productionQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description:
            A list of Item Product Categories was succefully retrieved
          schema:
            $ref: "#/definitions/LabTestTypeResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Item Product Categories for User
  /packages:
    get:
      tags:
        - Packages
      operationId: getPackages
      description: |
        Get a single Item for this User-License
      parameters:
        - $ref: "#/parameters/activeStatusQuery"
        - $ref: "#/parameters/itemNumberQuery"
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/onholdStatusQuery"
        - $ref: "#/parameters/packageLabelQuery"
        - $ref: "#/parameters/productionQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: A list of Packages was retrieved
          schema:
            $ref: "#/definitions/PackageResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Get Packages
    post:
      tags:
        - Packages
      summary: Create new Packages
      operationId: postPackages
      description: Create new Packages
      parameters:
        - in: body
          name: packageRequest
          description: The New Packages
          schema:
            $ref: "#/definitions/PackageRequest"
      responses:
        "200":
          description: An array of Items records with the new IDs
          schema:
            $ref: "#/definitions/PackageResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
    put:
      tags:
        - Packages
      summary: Update existing Packages
      operationId: putPackages
      description: Update existing Packages
      parameters:
        - in: body
          name: packageRequest
          description: The Existing Items with Ids
          schema:
            $ref: "#/definitions/PackageRequest"
      responses:
        "200":
          description: An array of Package records
          schema:
            $ref: "#/definitions/PackageResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
  /packages/types:
    get:
      tags:
        - Packages
      operationId: getPackageTypes
      description: |
        Get Package Types
      parameters:
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: A list of Package Types was succefully retrieved
          schema:
            $ref: "#/definitions/PackageTypeResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Package Types
  /packages/adjustmentreasons:
    get:
      tags:
        - Packages
      operationId: getPackageAdjustmentReasons
      description: |
        Get Package Types
      parameters:
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: A list of Package Types was succefully retrieved
          schema:
            $ref: "#/definitions/PackageAdjustmentReasonResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Package Types
  /plants:
    get:
      tags:
        - Plants
      operationId: getPlants
      description: |
        Get Plants for this User-License
      parameters:
        - $ref: "#/parameters/activeStatusQuery"
        - $ref: "#/parameters/itemNumberQuery"
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/productionQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: Plants were successfully retrieved
          schema:
            $ref: "#/definitions/PlantResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Plants for this User-License
    post:
      tags:
        - Plants
      summary: Create new Plants
      operationId: postPlants
      description: Create new Plants
      parameters:
        - in: body
          name: plantRequest
          description: The New Plants
          schema:
            $ref: "#/definitions/PlantRequest"
      responses:
        "200":
          description: An array of Plants records with the new IDs
          schema:
            $ref: "#/definitions/PlantResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
    put:
      tags:
        - Plants
      summary: Update existing Plants
      operationId: putPlants
      description: Update existing Plants
      parameters:
        - in: body
          name: plantRequest
          description: The Existing Plants with Ids
          schema:
            $ref: "#/definitions/PlantRequest"
      responses:
        "200":
          description: An array of Plants records
          schema:
            $ref: "#/definitions/PlantResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
    delete:
      tags:
        - Plants
      operationId: deletePlant
      description: |
        Delete a plant for this User-License
      parameters:
        - $ref: "#/parameters/itemNumberQueryRequired"
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: Plants were successfully Deleted
          schema:
            $ref: "#/definitions/PlantResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Plants for this User-License
  /plants/growthphases:
    get:
      tags:
        - Plants
      operationId: getPlantGrowthPhases
      description:
        Get available Plant Growth Phases for this User-License
      parameters:
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/productionQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: Plant Growth Phases were successfully retrieved
          schema:
            $ref: "#/definitions/PlantGrowthPhaseResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Plant Growth Phases for this User-License
  /plants/wastemethods:
    get:
      tags:
        - Plants
      operationId: getPlantWasteMethods
      description:
        Get available Plant Waste Methods for this User-License
      parameters:
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: Plant Waste Methods were successfully retrieved
          schema:
            $ref: "#/definitions/PlantWasteMethodResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Plant Waste Methods for this User-License
  /plants/wastereasons:
    get:
      tags:
        - Plants
      operationId: getPlantWasteReasons
      description:
        Get available Plant Waste Reasons for this User-License
      parameters:
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: Plant Waste Reasons were successfully retrieved
          schema:
            $ref: "#/definitions/PlantWasteReasonResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Plant Waste Methods for this User-License
  /plantbatches:
    get:
      tags:
        - Plant Batches
      operationId: getPlantBatches
      description: |
        Get Plant Batches for this User-License
      parameters:
        - $ref: "#/parameters/activeStatusQuery"
        - $ref: "#/parameters/itemNumberQuery"
        - $ref: "#/parameters/productionQuery"
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: Plant Batches were successfully retrieved
          schema:
            $ref: "#/definitions/PlantBatchResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Plant Batches for this User-License
    post:
      tags:
        - Plant Batches
      summary: Create new Plant Batches
      operationId: postPlantBatches
      description: Create new Plant Batches
      parameters:
        - in: body
          name: plantBatchRequest
          description: The New Plant Batches
          schema:
            $ref: "#/definitions/PlantBatchRequest"
      responses:
        "200":
          description:
            An array of Plant Batches records with the new IDs
          schema:
            $ref: "#/definitions/PlantBatchResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
    put:
      tags:
        - Plant Batches
      summary: Update existing Plant Batches
      operationId: putPlantBatches
      description: Update existing Plant Batches
      parameters:
        - in: body
          name: plantBatchRequest
          description: The Existing Plant Batches with Ids
          schema:
            $ref: "#/definitions/PlantBatchRequest"
      responses:
        "200":
          description: An array of Plant Batches records
          schema:
            $ref: "#/definitions/PlantBatchResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
    delete:
      tags:
        - Plant Batches
      operationId: deletePlantBatch
      description: |
        Delete a plant for this User-License
      parameters:
        - $ref: "#/parameters/itemNumberQueryRequired"
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: Plants were successfully Deleted
          schema:
            $ref: "#/definitions/PlantBatchResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Plants for this User-License
  /rooms:
    get:
      tags:
        - Rooms
      operationId: getRooms
      description: |
        Get Rooms for this User-License
      parameters:
        - $ref: "#/parameters/activeStatusQuery"
        - $ref: "#/parameters/itemNumberQuery"
        - $ref: "#/parameters/productionQuery"
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: Rooms were successfully retrieved
          schema:
            $ref: "#/definitions/RoomResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Rooms for this User-License
    post:
      tags:
        - Rooms
      summary: Create new Rooms
      operationId: postRooms
      description: Create new Rooms
      parameters:
        - in: body
          name: roomRequest
          description: The New Rooms
          schema:
            $ref: "#/definitions/RoomRequest"
      responses:
        "200":
          description: An array of Room records with the new IDs
          schema:
            $ref: "#/definitions/RoomResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
    put:
      tags:
        - Rooms
      summary: Update existing Rooms
      operationId: putRooms
      description: Update existing Rooms
      parameters:
        - in: body
          name: roomRequest
          description: The Existing Rooms with Ids
          schema:
            $ref: "#/definitions/RoomRequest"
      responses:
        "200":
          description: An array of Room records
          schema:
            $ref: "#/definitions/RoomResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
    delete:
      tags:
        - Rooms
      operationId: deleteRoom
      description: |
        Delete a Room for this User-License
      parameters:
        - $ref: "#/parameters/roomNumberQueryRequired"
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: Rooms were successfully deleted
          schema:
            $ref: "#/definitions/RoomResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Rooms for this User-License
  /strains:
    get:
      tags:
        - Strains
      operationId: getStrains
      description: |
        Get Strains for this User-License
      parameters:
        - $ref: "#/parameters/activeStatusQuery"
        - $ref: "#/parameters/productionQuery"
        - $ref: "#/parameters/itemNumberQuery"
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/onholdStatusQuery"
        - $ref: "#/parameters/packageLabelQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: Strains were successfully retrieved
          schema:
            $ref: "#/definitions/StrainResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Strains for this User-License
    post:
      tags:
        - Strains
      summary: Create new Strains
      operationId: postStrains
      description: Create new Strains
      parameters:
        - in: body
          name: strainRequest
          description: The New Strains
          schema:
            $ref: "#/definitions/StrainRequest"
      responses:
        "200":
          description: An array of Strain records with the new IDs
          schema:
            $ref: "#/definitions/StrainResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
    put:
      tags:
        - Strains
      summary: Update existing Strains
      operationId: putStrains
      description: Update existing Strains
      parameters:
        - in: body
          name: strainRequest
          description: The Existing Strains with Ids
          schema:
            $ref: "#/definitions/StrainRequest"
      responses:
        "200":
          description: An array of Strain records
          schema:
            $ref: "#/definitions/StrainResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
    delete:
      tags:
        - Strains
      operationId: deleteStrain
      description: |
        Delete a Strain for this User-License
      parameters:
        - $ref: "#/parameters/itemNumberQueryRequired"
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: Strains were successfully retrieved
          schema:
            $ref: "#/definitions/StrainResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Strains for this User-License
  /sales/customertypes:
    get:
      tags:
        - Sales
      operationId: getCustomerTypes
      description: |
        Get Customer Types for this User
      parameters:
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/productionQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description:
            A list of active Customer Types was succefully retrieved
          schema:
            $ref: "#/definitions/CustomerTypeResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Customer Types for User
  /sales/deliveries:
    get:
      tags:
        - Sales
      operationId: getSalesDeliveries
      description: |
        Deliveries for this User-License
      parameters:
        - $ref: "#/parameters/salesDeliveryNumberQuery"
        - $ref: "#/parameters/productionQuery"
        - $ref: "#/parameters/lastModifiedEndQuery"
        - $ref: "#/parameters/lastModifiedStartQuery"
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: A list of Deliveries was succefully retrieved
          schema:
            $ref: "#/definitions/SalesDeliveryResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Deliveries for User-License
    post:
      tags:
        - Sales
      summary: Create new Sales Deliveries
      operationId: postSalesDeliveries
      description: Create new Sales Deliveries
      parameters:
        - in: body
          name: salesDeliveryRequest
          description: The New Sales Deliveries
          schema:
            $ref: "#/definitions/SalesDeliveryRequest"
      responses:
        "200":
          description:
            An array of Sales Delivery records with the new IDs
          schema:
            $ref: "#/definitions/SalesDeliveryResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
    put:
      tags:
        - Sales
      summary: Create new Sales Deliveries
      operationId: putSalesDeliveries
      description: Create new Sales Deliveries
      parameters:
        - in: body
          name: salesDeliveryRequest
          description: The New Sales Deliveries
          schema:
            $ref: "#/definitions/SalesDeliveryRequest"
      responses:
        "200":
          description:
            An array of Sales Delivery records with the new IDs
          schema:
            $ref: "#/definitions/SalesDeliveryResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
    delete:
      tags:
        - Sales
      operationId: deleteSalesDelivery
      description: |
        Delete a Sales Delivery for this User-License
      parameters:
        - $ref: "#/parameters/salesDeliveryNumberQueryRequired"
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: Sales Delivery was successfully deleted
          schema:
            $ref: "#/definitions/SalesDeliveryResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Sales Delivery deleted for this User-License
  /sales/deliveries/returnreasons:
    get:
      tags:
        - Sales
      operationId: getSalesDeliveryReturnReasons
      description: |
        Delivery Return Reasons for this User-License
      parameters:
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/productionQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description:
            A list of active Sales Delivery Return Reasons was
            succefully retrieved
          schema:
            $ref: "#/definitions/SalesDeliveryReturnReasonResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Delivery Return Reasons for User-License
  /sales/receipts:
    get:
      tags:
        - Sales
      operationId: getSalesReceipts
      description: |
        Sales Receipts for this User-License
      parameters:
        - $ref: "#/parameters/lastModifiedEndQuery"
        - $ref: "#/parameters/lastModifiedStartQuery"
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/productionQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/salesReceiptNumberQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description:
            A list of active Sales Receipts was succefully retrieved
          schema:
            $ref: "#/definitions/SalesReceiptResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Sales Receipts for User-License
    post:
      tags:
        - Sales
      summary: Create new Sales Receipts
      operationId: postSalesReceipts
      description: Create new Sales Receipts
      parameters:
        - in: body
          name: salesReceiptRequest
          description: The New Sales Receipts
          schema:
            $ref: "#/definitions/SalesReceiptRequest"
      responses:
        "200":
          description:
            An array of Sales Receipt records with the new IDs
          schema:
            $ref: "#/definitions/SalesReceiptResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
    put:
      tags:
        - Sales
      summary: Create new Sales Receipts
      operationId: putSalesReceipts
      description: Create new Sales Receipts
      parameters:
        - in: body
          name: salesReceiptRequest
          description: The Existing Sales Receipts
          schema:
            $ref: "#/definitions/SalesReceiptRequest"
      responses:
        "200":
          description:
            An array of Sales Receipt records with the existing IDs
          schema:
            $ref: "#/definitions/SalesReceiptResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
    delete:
      tags:
        - Sales
      operationId: deleteSalesReceipts
      description: |
        Delete a Sales Receipt for this User-License
      parameters:
        - $ref: "#/parameters/salesReceiptNumberQueryRequired"
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: Sales Receipt was successfully deleted
          schema:
            $ref: "#/definitions/SalesReceiptResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Sales Receipts for this User-License
  /sales/transactions:
    get:
      tags:
        - Sales
      operationId: getSalesTransactions
      description: |
        Sales Transactions for this User-License
      parameters:
        - $ref: "#/parameters/lastModifiedEndQuery"
        - $ref: "#/parameters/lastModifiedStartQuery"
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/salesReceiptNumberQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description:
            A list of active Sales Receipts was succefully retrieved
          schema:
            $ref: "#/definitions/TransactionResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Sales Receipts for User-License
    post:
      tags:
        - Sales
      summary: Create new Sales Transactions
      operationId: postSalesTransactions
      description: Create new Sales Transactions
      parameters:
        - in: body
          name: salesTransactionRequest
          description: The New Sales Transactions
          schema:
            $ref: "#/definitions/TransactionRequest"
      responses:
        "200":
          description:
            An array of Sales Transaction records with the new IDs
          schema:
            $ref: "#/definitions/TransactionResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
    put:
      tags:
        - Sales
      summary: Create new Sales Transactions
      operationId: putSalesTransactions
      description: Create new Sales Transactions
      parameters:
        - in: body
          name: salesTransactionRequest
          description: The New Sales Transactions
          schema:
            $ref: "#/definitions/TransactionRequest"
      responses:
        "200":
          description:
            An array of Sales Transaction records with the existing IDs
          schema:
            $ref: "#/definitions/TransactionResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
  /sales/transactiondates:
    get:
      tags:
        - Sales
      operationId: getSalesTransactionDates
      description: |
        Get A list of Sales Transaction Dates for this User-License
      parameters:
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/productionQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description:
            A list of Sales Transaction Dates was succefully retrieved
          schema:
            $ref: "#/definitions/SalesTransactionDateResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: A list of Sales Transaction Dates for this User-License
  /transfers:
    get:
      tags:
        - Transfers
      operationId: getTransfers
      description: |
        Get Transfers for this User-License
      parameters:
        - $ref: "#/parameters/lastModifiedEndQuery"
        - $ref: "#/parameters/lastModifiedStartQuery"
        - $ref: "#/parameters/activeStatusQuery"
        - $ref: "#/parameters/salesDeliveryNumberQuery"
        - $ref: "#/parameters/productionQuery"
        - $ref: "#/parameters/itemNumberQuery"
        - $ref: "#/parameters/licenseNumberQuery"
        - $ref: "#/parameters/onholdStatusQuery"
        - $ref: "#/parameters/packageNumberQuery"
        - $ref: "#/parameters/packageLabelQuery"
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description: Transfers were successfully retrieved
          schema:
            $ref: "#/definitions/TransferResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Transfers for this User-License
  /unitsofmeasure:
    get:
      tags:
        - Units of Measure
      operationId: getUnitsOfMeasure
      description: |
        Units of Measure
      parameters:
        - $ref: "#/parameters/resellerKeyQuery"
        - $ref: "#/parameters/productionQuery"
        - $ref: "#/parameters/stateCodeQuery"
        - $ref: "#/parameters/userKeyQuery"
      responses:
        "200":
          description:
            A list of Units of Measure was succefully retrieved
          schema:
            $ref: "#/definitions/UnitsOfMeasureResponse"
        "401":
          $ref: "#/responses/Unauthorized"
        "403":
          $ref: "#/responses/AccessForbidden"
        "404":
          $ref: "#/responses/NotFound"
        "500":
          $ref: "#/responses/ServerError"
      summary: Units of Measure
definitions:
  CustomerType:
    properties:
      name:
        type: string
    type: object
  CustomerTypeResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/CustomerType"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  Error:
    properties:
      error:
        type: string
      status:
        maximum: 600
        minimum: 100
        type: integer
    type: object
  Facility:
    properties:
      Alias:
        example: OR Larger Rec-WHSLR 1
        type: string
      CredentialedDate:
        example: "2017-08-13"
        type: string
      DisplayName:
        example: OR Larger Rec-WHSLR 1
        type: string
      FacilityType:
        properties:
          AdvancedSales:
            example: false
            type: boolean
          CanAssignRoomsToPackages:
            example: false
            type: boolean
          CanAssignRoomsToPlantBatches:
            example: false
            type: boolean
          CanCreateDerivedPackages:
            example: true
            type: boolean
          CanCreateOpeningBalancePackages:
            example: true
            type: boolean
          CanCreateProcessValidationPackages:
            example: true
            type: boolean
          CanDeliverSalesToConsumers:
            example: false
            type: boolean
          CanDeliverSalesToPatients:
            example: false
            type: boolean
          CanGrowPlants:
            example: false
            type: boolean
          CanHaveMemberPatients:
            example: false
            type: boolean
          CanInfuseProducts:
            example: false
            type: boolean
          CanPackageVegetativePlants:
            example: false
            type: boolean
          CanRemediatePackagesWithFailedLabResults:
            example: false
            type: boolean
          CanReportHarvestSchedules:
            example: false
            type: boolean
          CanReportPatientsAdverseResponses:
            example: false
            type: boolean
          CanRequestProductRemediation:
            example: false
            type: boolean
          CanRequireHarvestSampleLabTestBatches:
            example: false
            type: boolean
          CanRequirePackageSampleLabTestBatches:
            example: false
            type: boolean
          CanSellToCaregivers:
            example: false
            type: boolean
          CanSellToConsumers:
            example: false
            type: boolean
          CanSellToExternalPatients:
            example: false
            type: boolean
          CanSellToPatients:
            example: false
            type: boolean
          CanSubmitHarvestsForTesting:
            example: false
            type: boolean
          CanSubmitPackagesForTesting:
            example: true
            type: boolean
          CanTagPlantBatches:
            example: false
            type: boolean
          CanTestPackages:
            example: false
            type: boolean
          CanTrackVegetativePlants:
            example: true
            type: boolean
          CanTransferFromExternalFacilities:
            example: true
            type: boolean
          CanUpdatePlantStrains:
            example: false
            type: boolean
          IsMedical:
            example: false
            type: boolean
          IsRetail:
            example: true
            type: boolean
          PackagesRequirePatientAffiliation:
            example: false
            type: boolean
          PlantsRequirePatientAffiliation:
            example: false
            type: boolean
          SalesDeliveryRequirePatientNumber:
            example: false
            type: boolean
          SalesRequireCaregiverNumber:
            example: false
            type: boolean
          SalesRequireCaregiverPatientNumber:
            example: false
            type: boolean
          SalesRequireExternalPatientIdentificationMethod:
            example: false
            type: boolean
          SalesRequireExternalPatientNumber:
            example: false
            type: boolean
          SalesRequirePatientNumber:
            example: false
            type: boolean
        type: object
      HireDate:
        example: "2017-08-14"
        type: string
      IsManager:
        example: true
        type: boolean
      IsOwner:
        example: true
        type: boolean
      License:
        $ref: "#/definitions/License"
      Name:
        example: "OR LARGER THAN SALES, LLC"
        type: string
      Occupations:
        example: []
        items:
          type: string
        type: array
  FacilityResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/Facility"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  Harvest:
    properties:
      CurrentWeight:
        example: 0
        type: number
      DryingRoomId:
        example: 1
        type: number
      DryingRoomName:
        example: Harvest Room
        type: string
      HarvestStartDate:
        example: "2014-11-19"
        type: string
      HarvestType:
        example: WholePlant
        type: string
      Id:
        example: 2
        type: number
      IsOnHold:
        example: false
        type: boolean
      LastModified:
        example: "0001-01-01T00:00:00+00:00"
        type: string
      Name:
        example: 2014-11-19-Harvest Room-H
        type: string
      PackageCount:
        example: 0
        type: number
      PlantCount:
        example: 70
        type: number
      SourceStrainCount:
        example: 0
        type: number
      TotalPackagedWeight:
        example: 0
        type: number
      TotalRestoredWeight:
        example: 0
        type: number
      TotalWasteWeight:
        example: 0
        type: number
      TotalWetWeight:
        example: 40
        type: number
      UnitOfWeightName:
        example: Ounces
        type: string
  HarvestPackage:
    properties:
      ActualDate:
        example: "2015-12-15"
        type: string
      Ingredients:
        items:
          $ref: "#/definitions/HarvestPackageIngredient"
        type: array
      IsProductionBatch:
        example: false
        type: boolean
      Item:
        example: Buds
        type: string
      PatientLicenseNumber:
        example: X00001
        type: string
      ProductRequiresRemediation:
        example: false
        type: boolean
      ProductionBatchNumber:
        example: _string_
        type: string
      RemediateProduct:
        example: false
        type: boolean
      RemediationDate:
        example: "2015-12-15"
        type: string
      RemediationMethodId:
        example: _string_
        type: string
      RemediationSteps:
        example: _string_
        type: string
      Room:
        example: _string_
        type: string
      Tag:
        example: ABCDEF012345670000020201
        type: string
      UnitOfWeight:
        example: Grams
        type: string
    type: object
  HarvestPackageIngredient:
    properties:
      HarvestId:
        example: 2
        type: number
      HarvestName:
        example: _string_
        type: string
      UnitOfWeight:
        example: Grams
        type: string
      Weight:
        example: 100.23
        type: number
    type: object
  HarvestPackageRequest:
    properties:
      data:
        items:
          $ref: "#/definitions/HarvestPackage"
        type: array
      meta:
        $ref: "#/definitions/RequestMeta"
    type: object
  HarvestResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/Harvest"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  HarvestUpdate:
    properties:
      ActualDate:
        example: "2015-12-15"
        type: string
      Id:
        example: 34904
        type: number
      UnitOfWeight:
        example: Grams
        type: string
      WasteType:
        example: Plant Material
        type: string
      WasteWeight:
        example: 10.05
        type: number
      operationId:
        example: removeWaste
        type: string
    type: object
  HarvestUpdateRequest:
    properties:
      data:
        items:
          $ref: "#/definitions/HarvestUpdate"
        type: array
      meta:
        $ref: "#/definitions/RequestMeta"
    type: object
  HarvestUpdateResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/HarvestUpdate"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  HarvestWasteType:
    properties:
      Name:
        example: Plant Material
        type: string
  HarvestWasteTypeResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/HarvestWasteType"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  InvalidError:
    allOf:
      - $ref: "#/definitions/Error"
      - properties:
          details:
            items:
              type: string
            type: array
        type: object
  Item:
    properties:
      AdministrationMethod:
        example: ""
        type: string
      ApprovalStatus:
        example: Approved
        type: string
      DefaultLabTestingState:
        example: NotSubmitted
        type: string
      Id:
        example: 34904
        type: number
      Ingredients:
        example: ""
        type: string
      Name:
        example: Ak-47 Shatter 2
        type: string
      ProductCategoryName:
        example: Extracts (each)
        type: string
      ProductCategoryType:
        example: Concentrate
        type: string
      QuantityType:
        example: CountBased
        type: string
      ServingSize:
        example: ""
        type: string
      UnitOfMeasureName:
        example: Each
        type: string
      UnitWeight:
        example: 50
        type: number
      UnitWeightUnitOfMeasureName:
        example: Milligrams
        type: string
  ItemRequest:
    properties:
      data:
        items:
          $ref: "#/definitions/Item"
        type: array
      meta:
        $ref: "#/definitions/RequestMeta"
    type: object
  ItemResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/Item"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  LabTestState:
    properties:
      name:
        type: string
    type: object
  LabTestStateResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/LabTestState"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  LabTestType:
    properties:
      AlwaysPasses:
        example: false
        type: boolean
      DependencyMode:
        example: 0
        type: number
      Id:
        example: 1
        type: number
      Name:
        example: THC
        type: string
      RequiresTestResult:
        example: false
        type: boolean
    type: object
  LabTestTypeResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/LabTestType"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  License:
    properties:
      EndDate:
        example: "2020-09-28"
        type: string
      LicenseType:
        example: Recreational Wholesaler
        type: string
      Number:
        example: 060-X0001
        type: string
      StartDate:
        example: "2013-01-28"
        type: string
    required:
      - Number
      - StartDate
      - EndDate
      - LicenseType
    type: object
  Package:
    properties:
      ArchivedDate:
        example: "2014-11-29"
        type: string
      ContainsRemediatedProduct:
        example: false
        type: boolean
      FinishedDate:
        example: "2014-11-29"
        type: string
      Id:
        example: 2
        type: number
      InitialLabTestingState:
        example: NotSubmitted
        type: string
      IsOnHold:
        example: false
        type: boolean
      IsProcessValidationTestingSample:
        example: false
        type: boolean
      IsProductionBatch:
        example: false
        type: boolean
      IsTestingSample:
        example: false
        type: boolean
      LabTestingState:
        example: NotSubmitted
        type: string
      LabTestingStateDate:
        example: "2014-11-29"
        type: string
      Label:
        example: ABCDEF012345670000010042
        type: string
      LastModified:
        example: "2019-01-30T02:52:15.0599079+00:00"
        type: string
      PackageType:
        example: Product
        type: string
      PackagedDate:
        example: "2014-11-29"
        type: string
      PatientLicenseNumber:
        example: _string_
        type: string
      ProductCategoryName:
        example: Buds
        type: string
      ProductId:
        example: 1
        type: number
      ProductName:
        example: Buds
        type: string
      ProductRequiresRemediation:
        example: false
        type: boolean
      ProductionBatchNumber:
        example: _string_
        type: string
      Quantity:
        example: 1
        format: double
        type: number
      ReceivedDateTime:
        example: _string_
        type: string
      ReceivedFromFacilityLicenseNumber:
        example: _string_
        type: string
      ReceivedFromFacilityName:
        example: _string_
        type: string
      ReceivedFromManifestNumber:
        example: _string_
        type: string
      RemediationDate:
        example: "2014-11-29"
        type: string
      RoomId:
        example: _string_
        type: string
      RoomName:
        example: _string_
        type: string
      SourceHarvestNames:
        example: _string_
        type: string
      UnitOfMeasureAbbreviation:
        example: oz
        type: string
      UnitOfMeasureName:
        example: Ounces
        type: string
    type: object
  PackageAdjustmentReason:
    properties:
      Name:
        type: string
      RequiresNote:
        type: boolean
    type: object
  PackageAdjustmentReasonResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/PackageAdjustmentReason"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  PackageRequest:
    properties:
      data:
        items:
          $ref: "#/definitions/Package"
        type: array
      meta:
        $ref: "#/definitions/RequestMeta"
    type: object
  PackageResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/Package"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  PackageType:
    properties:
      name:
        type: string
    type: object
  PackageTypeResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/PackageType"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  Pagination:
    properties:
      next_link:
        type: string
      p_limit:
        description: The Limit for a Request
        format: int64
        type: integer
      p_offset:
        description: The Offset for a Request
        format: int64
        type: integer
      page_size:
        description: The number of records in a Response
        format: int64
        type: integer
      set_size:
        description:
          The total number of records available for a Response
        format: int64
        type: integer
    type: object
  Plant:
    properties:
      GrowthPhase:
        type: string
      HarvestCount:
        type: number
      Id:
        type: number
      IsOnHold:
        type: boolean
      Label:
        type: string
      LastModified:
        type: string
      PlantBatchId:
        type: number
      PlantBatchName:
        type: string
      PlantBatchTypeName:
        type: string
      PlantedDate:
        type: string
      RoomId:
        type: number
      RoomName:
        type: string
      State:
        type: string
      StrainId:
        type: number
      StrainName:
        type: string
      VegetativeDate:
        type: string
    type: object
  PlantBatch:
    properties:
      Count:
        example: 80
        type: number
      DestroyedCount:
        example: 40
        type: number
      HarvestedCount:
        example: 0
        type: number
      Id:
        example: 5
        type: number
      LastModified:
        example: "0001-01-01T00:00:00+00:00"
        type: string
      LiveCount:
        example: 10
        type: number
      Name:
        example: Demo Plant Batch 1
        type: string
      PackagedCount:
        example: 0
        type: number
      PatientLicenseNumber:
        example: _string_
        type: string
      PlantedDate:
        example: "2014-10-10"
        type: string
      RoomId:
        example: _string_
        type: string
      RoomName:
        example: _string_
        type: string
      SourcePackageId:
        example: 0
        type: number
      SourcePackageLabel:
        example: _string_
        type: string
      SourcePlantId:
        example: 0
        type: number
      SourcePlantLabel:
        example: _string_
        type: string
      StrainId:
        example: 1
        type: number
      StrainName:
        example: Spring Hill Kush
        type: string
      TrackedCount:
        example: 10
        type: number
      Type:
        example: Seed
        type: string
      UntrackedCount:
        example: 80
        type: number
    type: object
  PlantBatchRequest:
    properties:
      data:
        items:
          $ref: "#/definitions/PlantBatch"
        type: array
      meta:
        $ref: "#/definitions/RequestMeta"
    type: object
  PlantBatchResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/PlantBatch"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  PlantGrowthPhase:
    properties:
      name:
        type: string
    type: object
  PlantGrowthPhaseResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/PlantGrowthPhase"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  PlantRequest:
    properties:
      data:
        items:
          $ref: "#/definitions/Plant"
        type: array
      meta:
        $ref: "#/definitions/RequestMeta"
    type: object
  PlantResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/Plant"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  PlantWasteMethod:
    properties:
      name:
        type: string
    type: object
  PlantWasteMethodResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/PlantWasteMethod"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  PlantWasteReasonResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/PlantWasteMethod"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  ProductCategory:
    properties:
      CanBeRemediated:
        example: true
        type: boolean
      CanContainSeeds:
        example: true
        type: boolean
      Name:
        example: Buds
        type: string
      ProductCategoryType:
        example: Buds
        type: string
      QuantityType:
        example: WeightBased
        type: string
      RequiresAdministrationMethod:
        example: false
        type: boolean
      RequiresIngredients:
        example: false
        type: boolean
      RequiresItemBrand:
        example: false
        type: boolean
      RequiresProductPhoto:
        example: false
        type: boolean
      RequiresServingSize:
        example: false
        type: boolean
      RequiresStrain:
        example: false
        type: boolean
      RequiresSupplyDurationDays:
        example: false
        type: boolean
      RequiresUnitCbdContent:
        example: false
        type: boolean
      RequiresUnitCbdPercent:
        example: false
        type: boolean
      RequiresUnitThcContent:
        example: false
        type: boolean
      RequiresUnitThcPercent:
        example: false
        type: boolean
      RequiresUnitVolume:
        example: false
        type: boolean
      RequiresUnitWeight:
        example: false
        type: boolean
    type: object
  ProductCategoryResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/ProductCategory"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  RequestMeta:
    properties:
      license:
        example: A12-0000015-LIC
        type: string
      operation_id:
        description: Operation ID
        type: string
      production:
        type: boolean
      reseller:
        example: <<unique key>>
        type: string
      state:
        example: CA
        type: string
      taxnexus_account:
        description: Taxnexus Account Number for recording transactions
        example: T0000001
        type: string
      test_only:
        example: true
        type: boolean
      transaction_date:
        example: "2019-01-01"
        type: string
      user:
        example: <<unique key>>
        type: string
    required:
      - license
      - production
      - reseller
      - state
      - user
    type: object
  ResponseMeta:
    properties:
      contact:
        description: Microservice Contact Info
        type: string
      copyright:
        description: Copyright Info
        type: string
      license:
        description: License Information and Restrictions
        type: string
      operationid:
        description: Operation ID
        type: string
      requestip:
        description: Request IP Address
        type: string
      requesttype:
        description: Request Type
        type: string
      requesturl:
        description: Request URL
        type: string
      serverinfo:
        description: Data Server Info
        type: string
      serverresponsetime:
        description: Data Server Response Time (ms)
        type: string
      servertimestamp:
        description: Backend Server Timestamp
        type: string
      taxnexusaccount:
        description:
          Taxnexus Account Number used for recording transactions
        type: string
    type: object
  Room:
    properties:
      Id:
        type: number
      Name:
        type: string
    type: object
  RoomRequest:
    properties:
      data:
        items:
          $ref: "#/definitions/Room"
        type: array
      meta:
        $ref: "#/definitions/RequestMeta"
    type: object
  RoomResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/Room"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  SalesDelivery:
    properties:
      DriverName:
        example: John Doe
        type: string
      DriverOccupationalLicenseNumber:
        example: "1"
        type: string
      DriverVehicleLicenseNumber:
        example: "1"
        type: string
      EstimatedArrivalDateTime:
        example: "2017-04-04T13:00:00.000"
        type: string
      EstimatedDepartureDateTime:
        example: "2017-04-04T11:00:00.000"
        type: string
      Id:
        example: 51
        type: number
      PhoneNumberForQuestions:
        example: +1-123-456-7890
        type: string
      PlannedRoute:
        example: Drive to destination.
        type: string
      RecipientAddressCity:
        example: Denver
        type: string
      RecipientAddressPostalCode:
        example: "11111"
        type: string
      RecipientAddressState:
        example: CO
        type: string
      RecipientAddressStreet1:
        example: 1 Someplace Road
        type: string
      RecipientAddressStreet2:
        example: Ste 9
        type: string
      SalesCustomerType:
        example: Consumer
        type: string
      SalesDateTime:
        example: "2017-04-04T10:10:19.000"
        type: string
      Transactions:
        items:
          $ref: "#/definitions/Transaction"
        type: array
      VehicleLicensePlateNumber:
        example: "000000"
        type: string
      VehicleMake:
        example: Car
        type: string
      VehicleModel:
        example: Small
        type: string
    type: object
  SalesDeliveryRequest:
    properties:
      data:
        items:
          $ref: "#/definitions/SalesDelivery"
        type: array
      meta:
        $ref: "#/definitions/RequestMeta"
    type: object
  SalesDeliveryResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/SalesDelivery"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  SalesDeliveryReturnReason:
    properties:
      Name:
        type: string
      RequiresNote:
        type: boolean
    type: object
  SalesDeliveryReturnReasonResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/SalesDeliveryReturnReason"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  SalesReceipt:
    properties:
      ArchivedDate:
        example: string
        type: string
      CaregiverLicenseNumber:
        example: ""
        type: string
      Id:
        example: 38304110
        type: number
      IdentificationMethod:
        example: ""
        type: string
      IsFinal:
        example: false
        type: boolean
      LastModified:
        example: "2019-02-14T23:52:31+00:00"
        type: string
      PatientLicenseNumber:
        example: ""
        type: string
      ReceiptNumber:
        example: 0038304110
        type: string
      SalesCustomerType:
        example: Consumer
        type: string
      SalesDateTime:
        example: "2019-02-14T15:50:45.000"
        type: string
      TotalPackages:
        example: 3
        type: number
      TotalPrice:
        example: 60.83
        type: number
      Transactions:
        items:
          $ref: "#/definitions/Transaction"
        type: array
    type: object
  SalesReceiptRequest:
    properties:
      data:
        items:
          $ref: "#/definitions/SalesReceipt"
        type: array
      meta:
        $ref: "#/definitions/RequestMeta"
    type: object
  SalesReceiptResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/SalesReceipt"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  SalesTransactionDateResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/Room"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  Strain:
    properties:
      Genetics:
        example: 100% Sativa
        type: string
      Id:
        example: 2426
        type: number
      IndicaPercentage:
        example: 0
        type: number
      Name:
        example: 0 Test
        type: string
      SativaPercentage:
        example: 100
        type: number
      TestingStatus:
        example: None
        type: string
    type: object
  StrainRequest:
    properties:
      data:
        items:
          $ref: "#/definitions/Strain"
        type: array
      meta:
        $ref: "#/definitions/RequestMeta"
    type: object
  StrainResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/Strain"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  Transaction:
    properties:
      ArchivedDate:
        example: string
        type: string
      LastModified:
        example: "2019-02-14T23:52:31+00:00"
        type: string
      PackageId:
        example: 4081625
        type: number
      PackageLabel:
        example: 1A401030001AD55000000426
        type: string
      ProductName:
        example: Platinum Yeti
        type: string
      QuantitySold:
        example: 4
        type: number
      SalesDeliveryState:
        example: string
        type: string
      TotalPrice:
        example: 20
        type: number
      UnitOfMeasureAbbreviation:
        example: g
        type: string
      UnitOfMeasureName:
        example: Grams
        type: string
    type: object
  TransactionRequest:
    properties:
      data:
        items:
          $ref: "#/definitions/Transaction"
        type: array
      meta:
        $ref: "#/definitions/RequestMeta"
    type: object
  TransactionResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/Transaction"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  Transfer:
    properties:
      ActualArrivalDateTime:
        example: _string_
        type: string
      ActualDepartureDateTime:
        example: _string_
        type: string
      ContainsPlantPackage:
        example: false
        type: boolean
      ContainsProductPackage:
        example: false
        type: boolean
      ContainsProductRequiresRemediation:
        example: false
        type: boolean
      ContainsRemediatedProductPackage:
        example: false
        type: boolean
      ContainsTestingSample:
        example: false
        type: boolean
      CreatedByUserName:
        example: _string_
        type: string
      CreatedDateTime:
        example: "2016-10-10T08:20:45-07:00"
        type: string
      DeliveryCount:
        example: 0
        type: number
      DeliveryId:
        example: 1
        type: number
      DeliveryPackageCount:
        example: 7
        type: number
      DeliveryReceivedPackageCount:
        example: 0
        type: number
      DriverName:
        example: _string_
        type: string
      DriverOccupationalLicenseNumber:
        example: _string_
        type: string
      DriverVehicleLicenseNumber:
        example: _string_
        type: string
      EstimatedArrivalDateTime:
        example: "2016-10-11T16:50:00.000"
        type: string
      EstimatedDepartureDateTime:
        example: "2016-10-11T14:48:30.000"
        type: string
      Id:
        example: 1
        type: number
      LastModified:
        example: "0001-01-01T00:00:00+00:00"
        type: string
      ManifestNumber:
        example: "0000000001"
        type: string
      Name:
        example: _string_
        type: string
      PackageCount:
        example: 7
        type: number
      ReceivedDateTime:
        example: "2016-10-11T16:42:19-07:00"
        type: string
      ReceivedDeliveryCount:
        example: 0
        type: number
      ReceivedPackageCount:
        example: 0
        type: number
      RecipientFacilityLicenseNumber:
        example: 123-ABC
        type: string
      RecipientFacilityName:
        example: Lofty Med-Cultivation A
        type: string
      ShipmentLicenseType:
        example: 0
        type: number
      ShipmentTransactionType:
        example: Standard
        type: string
      ShipmentTypeName:
        example: Transfer
        type: string
      ShipperFacilityLicenseNumber:
        example: 123-ABC
        type: string
      ShipperFacilityName:
        example: Lofty Med-Cultivation B
        type: string
      TransporterFacilityLicenseNumber:
        example: 123-BCD
        type: string
      TransporterFacilityName:
        example: Lofty Med-Dispensary
        type: string
      VehicleLicensePlateNumber:
        example: _string_
        type: string
      VehicleMake:
        example: _string_
        type: string
      VehicleModel:
        example: _string_
        type: string
    type: object
  TransferResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/Transfer"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
  UnitsOfMeasure:
    properties:
      Abbreviation:
        example: ea
        type: string
      Name:
        example: Each
        type: string
      QuantityType:
        example: CountBased
        type: string
  UnitsOfMeasureResponse:
    properties:
      data:
        items:
          $ref: "#/definitions/UnitsOfMeasure"
        type: array
      meta:
        $ref: "#/definitions/ResponseMeta"
    type: object
