UPDATE: Q2 Updates for API and Webhooks (Part 1)

The second quarter has been even busier than Q1. We had to split our updates into 2.

This is what’s coming in this first part:

HOLD FILTERS IN ORDERS QUERY

We added the 4 types of hold as separate filters to the orders query. Now you can filter by or all of them. However, if you use more than one, these will work as AND, not as OR.

query {
  orders (
    fraud_hold: boolean
    address_hold: boolean
    payment_hold: boolean
    operator_hold: boolean
  ) {
    data {
      edges {
        node {
          legacy_id
        }
      }
    }
  }
}

GENERATE LABEL WEBHOOK NOW HAS INSURANCE DATA

You will now receive 2 new fields in the payload:

"order_insurance": boolean, 
"order_insurance_amount": float

PRODUCT PACKER NOTE FIELD IN PRODUCT/S QUERY

In Q1 we added the possibility to add a packer note at the product level. But we missed that field in the query. Now it’s here (It will also work in the product query):

query{
  products{
    data{
      edges{
        node{
          packer_note
        }
      }
    }
  }
}

SHIP DATE FIELD IN PURCHASE ORDER/S QUERY

We added the ship_date field to the pruchase_order and purchase_orders queries:

query{
  purchase_orders{
    data{
      edges{
        node{
          ship_date
        }
      }
    }
  }
}

DATE CLOSED FILTERS IN PURCHASE ORDERS QUERY

You can now filter purchase_orders by the date they were set as closed:

query{
  purchase_orders(date_closed_from:"" date_closed_to:""){
    data{
      edges{
        node{
          legacy_id
        }
      }
    }
  }
}

LOCATIONS EDGE IN THE EXPIRATION LOTS QUERY

expiration_lots now lets you query which bins the lot is assigned to.

query {
  expiration_lots{
    data(first: 10) {
      edges {
        node {
          name
          locations(first: 10) {
            edges {
              node {
                id
                legacy_id
                account_id
                warehouse_id
                type{
                  id
                  legacy_id
                  account_id
                  name
                  daily_storage_cost
                }
                name
                zone
                pickable
                sellable
                is_cart
                pick_priority
                dimensions{
                  weight
                  height
                  width
                  length
                }
                temperature
                last_counted
                created_at
              }
            }
          }
        }
      }
    }
  }
}

PRODUCT CASES

We added query and update functionality to product cases. Creation is on its way!

  • Works in product and products queries
query{
  product{
    data{
      cases{
        id
        legacy_id
        case_barcode
        case_quantity
      }
    }
  }
}
  • Update: You need to pass the affected SKU. The identifier for the case is the barcode, and what you can update is the quantity for that barcode.
mutation{
  product_update(data:{
    sku:"sku"
    cases:[{
      case_barcode:"half dozen"
      case_quantity:6      
    },{
      case_barcode:"dozen"
      case_quantity:12         
    }]
  }){
		request_id
    complexity
    product{
      created_at
    }
  }  
}

PACKAGE NUMBER AND TOTAL PACKAGES IN SHIPMENT/S QUERY

As the title says, both fields can now be queried. The package number is inside the shipping label and reflects the same package number as the UI. The total_packages field will only reflect valid labels (voided labels are not accounted for)

query{
  shipments{
    data{
      edges{
        node{
          total_packages
          shipping_labels{
            package_number
          }
        }
      }
    }
  }
}

PARCELVIEW URL IN SHIPMENT/S QUERY

The URL to the snapshot of the package is now available in the API running the following query:

query {
  shipments {
    data {
      edges {
        node {
          shipping_labels {
            parcelview_url
          }
        }
      }
    }
  }
}

ACTIVE FIELD IN PRODUCT/S HAS BEEN DEPRECATED

The correct field to query for this information is:

query{
	product{
    data{
      warehouse_products{
        active
      }
    }
  }
}
  • warehouse_products can be queried inside product, products, or on its own.

RMA LABEL FIELDS MOVED/DEPRECATED

We moved all dimension fields to the dimension object and updated the type to string for consistency with the shipping labels. Cost was also updated to string type for consistency.

query{
  return(id:""){
    data{
      labels{
        cost
        height (deprecated)
        width (deprecated)
        length (deprecated)
        weight (deprecated)
        dimensions{
          height
          width
          length
          weight
        }
      }
    }
  }
}

ACCOUNT ID IN INVENTORY CHANGES

The field shows the account_id associated with the token making the call. This was ok for brands, but 3PLs saw their own account ID instead of the customer the SKU belongs to. This behavior has been corrected for 3PLs, and they will now see which customer account is affected by each change.

query{
  inventory_changes{
    data{
      edges{
        node{
          account_id
        }
      }
    }
  }
}

INVENTORY TRANSFER

We added the inventory transfer mutation. This mutation will work as if you were doing a remove from one bin and addition to another.

mutation{
  inventory_transfer(data:{
    customer_account_id:"string" //(optional, for 3pl)    
    sku:"string" 
    warehouse_id:"string" 
    location_from_id:"string" 
    location_to_id:"string" 
    quantity:int
    reason:"string" 
  }){
    complexity
    request_id
    ok
  }
}
1 Like