Quartzy Order Requests API

Procurement requests moving through Quartzy's ordering workflow.

OpenAPI Specification

quartzy-order-requests-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Quartzy Public Inventory Items Order Requests API
  description: 'The Quartzy Public API lets life science teams manage lab inventory and ordering programmatically. With it you can list and update inventory items and their instances, create and advance order requests, read item types and labs, inspect the current user, and register webhooks for inventory and order-request events. The API is generally available to all Quartzy accounts.

    Base URL: https://api.quartzy.com. Requests are authenticated with a per-user AccessToken passed in the `Access-Token` header (generated in Quartzy under Profile > Access Tokens) or via OAuth2. Responses are JSON. List endpoints are paginated with a `page` query parameter.

    Endpoint paths, methods, and query parameters in this document are grounded in the public reference at https://docs.quartzy.com/api/. Request and response object fields are modeled from Quartzy''s documented resources and example payloads; verify exact field names and enumerations against the live reference before relying on them in production.'
  version: '1.0'
  contact:
    name: Quartzy Support
    url: https://docs.quartzy.com/api/
    email: support@quartzy.com
  x-endpointsConfirmed: true
  x-endpointsModeled: true
servers:
- url: https://api.quartzy.com
  description: Quartzy Public API
security:
- accessToken: []
- oauth2: []
tags:
- name: Order Requests
  description: Procurement requests moving through Quartzy's ordering workflow.
paths:
  /order-requests:
    get:
      operationId: listOrderRequests
      tags:
      - Order Requests
      summary: List order requests
      description: Lists and filters order requests, optionally scoped to a lab.
      parameters:
      - name: lab_id
        in: query
        description: Filter order requests to a specific lab.
        schema:
          type: string
      - $ref: '#/components/parameters/Page'
      responses:
        '200':
          description: A paginated list of order requests.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/OrderRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createOrderRequest
      tags:
      - Order Requests
      summary: Create an order request
      description: Creates a new order request in a lab from an external system such as an ELN or LIMS.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderRequestCreate'
      responses:
        '201':
          description: The created order request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/ValidationError'
  /order-requests/{id}:
    get:
      operationId: getOrderRequest
      tags:
      - Order Requests
      summary: Retrieve an order request
      description: Retrieves a single order request by its identifier.
      parameters:
      - $ref: '#/components/parameters/IdPath'
      responses:
        '200':
          description: The requested order request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateOrderRequest
      tags:
      - Order Requests
      summary: Update an order request status
      description: Advances an order request through the Quartzy ordering workflow by updating its status.
      parameters:
      - $ref: '#/components/parameters/IdPath'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderRequestUpdate'
      responses:
        '200':
          description: The updated order request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    Type:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          example: Antibody
        lab_id:
          type: string
          format: uuid
    User:
      type: object
      properties:
        id:
          type: string
          format: uuid
        first_name:
          type: string
        last_name:
          type: string
        email:
          type: string
          format: email
    OrderRequestCreate:
      type: object
      required:
      - lab_id
      - name
      properties:
        lab_id:
          type: string
          format: uuid
        type_id:
          type: string
          format: uuid
        name:
          type: string
        vendor_name:
          type: string
        catalog_number:
          type: string
        quantity:
          type: number
        unit_size:
          type: string
        price:
          $ref: '#/components/schemas/Price'
    Error:
      type: object
      properties:
        message:
          type: string
        code:
          type: string
    OrderRequestUpdate:
      type: object
      required:
      - status
      properties:
        status:
          type: string
          enum:
          - NEW
          - APPROVED
          - ORDERED
          - RECEIVED
          - BACKORDERED
    OrderRequest:
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        status:
          type: string
          description: The current stage in the Quartzy ordering workflow.
          enum:
          - NEW
          - APPROVED
          - ORDERED
          - RECEIVED
          - BACKORDERED
        type:
          $ref: '#/components/schemas/Type'
        vendor_name:
          type: string
        catalog_number:
          type: string
        quantity:
          type: number
        unit_size:
          type: string
        price:
          $ref: '#/components/schemas/Price'
        lab_id:
          type: string
          format: uuid
        requested_by:
          $ref: '#/components/schemas/User'
        created_at:
          type: string
          format: date-time
    Price:
      type: object
      properties:
        amount:
          type: string
          example: '129.00'
        currency:
          type: string
          example: USD
  responses:
    ValidationError:
      description: The request body failed validation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: The AccessToken is missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    IdPath:
      name: id
      in: path
      required: true
      description: The unique identifier of the resource.
      schema:
        type: string
    Page:
      name: page
      in: query
      description: The page number for paginated results.
      schema:
        type: integer
        minimum: 1
        default: 1
  securitySchemes:
    accessToken:
      type: apiKey
      in: header
      name: Access-Token
      description: Per-user AccessToken generated in Quartzy under Profile > Access Tokens and sent in the Access-Token header.
    oauth2:
      type: oauth2
      description: OAuth2 authorization for Quartzy API access.
      flows:
        authorizationCode:
          authorizationUrl: https://app.quartzy.com/oauth/authorize
          tokenUrl: https://api.quartzy.com/oauth/token
          scopes: {}