Developer Resources > Examples
Inventory Snapshot
In this section, we will explore some examples of how we can use the Inventory snapshot.
Overview:
A snapshot is just an asynchronous job that iterates over all warehouses that satisfy the criteria (owned or associated with a 3PL relationship), then iterates over all products in each warehouse that meet the criteria and aggregates vendors+bins+lots for each product, and throws all of that info into a big map of products to vendors, warehouses, and lots for each.
The filtering criteria that are available are warehouse_id for a specific warehouse and customer_account_id for only one customer’s products in case you have a 3PL account.
It can send an email or post to an endpoint when it finishes.
Examples of how the snapshot should look like are:
Inventory generate snapshot Mutation:
In this example we will use the inventory_generate_snapshot
Mutation, that allows us to generate a snapshot:
mutation { inventory_generate_snapshot( data: { warehouse_id: "V2FyZWhvuXNlOjEjUzkw" notification_email: "test@shiphero.com" } ) { request_id complexity snapshot { snapshot_id job_user_id job_account_id warehouse_id customer_account_id notification_email email_error post_url post_error post_url_pre_check status error created_at enqueued_at updated_at snapshot_url snapshot_expiration } } }
And the response for it should be something like this:
{ "data": { "inventory_generate_snapshot": { "request_id": "5e70d213fa462c9432d1a383", "complexity": 30, "snapshot": { "snapshot_id": "5e70d213ec6c5e62d4bf7170", "job_user_id": "VXNlcjo5MTIz", "job_account_id": "QWNjb3VudDo2MzM0", "warehouse_id": "V2FyZWhvuXNlOjEjUzkw", "customer_account_id": null, "notification_email": "test@shiphero.com", "email_error": null, "post_url": null, "post_error": null, "post_url_pre_check": true, "status": "enqueued", "error": null, "created_at": "2020-03-17T13:35:15+00:00", "enqueued_at": "2020-03-17T13:35:15.815864+00:00", "updated_at": "2020-03-17T13:35:15+00:00", "snapshot_url": null, "snapshot_expiration": null } } } }
Inventory abort snapshot Mutation:
If you would like to abort a snapshot that is being generated, you can use the inventory_abort_snapshot
Mutation, that allows us to abort a specific snapshot, this is:
mutation { inventory_abort_snapshot( data: { snapshot_id: "5e94c048cec17923fcb7ec32", reason: "Wrong endpoint" } ) { request_id complexity snapshot { snapshot_id job_user_id job_account_id warehouse_id customer_account_id notification_email email_error post_url post_error post_url_pre_check status error created_at enqueued_at updated_at snapshot_url snapshot_expiration } } }
Notes:
- Snapshots can also be posted to a specific URL. In order to do this, you have to include two fields:
post_url:”https://testendpoint.net/”
post_url_pre_check:falseAs for post_url_pre_check, if false, a pre-check on the POST URL will not be performed. This eliminates immediate validation and feedback in the mutation response, before sending the request to the worker. Nonetheless, disabling this check can be useful if a one-time token is used to authenticate the endpoint.
Inventory snapshot Query
This query allows us to get the status for a specific snapshot
query { inventory_snapshot(snapshot_id: "5e94c048cec17923fcb7ec32") { request_id complexity snapshot { snapshot_id job_user_id job_account_id warehouse_id customer_account_id notification_email email_error post_url post_error post_url_pre_check status error created_at enqueued_at updated_at snapshot_url snapshot_expiration } } }
And the response should look something like this:
{ "data": { "inventory_snapshot": { "request_id": "5e94c1d95dd8b16bf28392a9", "complexity": 1, "snapshot": { "snapshot_id": "5e94c048cec17923fcb7ec32", "job_user_id": "VXNlcjo5MTIz", "job_account_id": "QWNjb3VudDozODAx", "warehouse_id": "V2FyZWhvdXNlOjgwNzU=", "customer_account_id": null, "notification_email": "test@shiphero.com", "email_error": null, "post_url": null, "post_error": null, "post_url_pre_check": true, "status": "success", "error": null, "created_at": "2020-04-13T19:40:56+00:00", "enqueued_at": "2020-04-13T19:40:56.912000+00:00", "updated_at": "2020-04-13T19:40:57+00:00", "snapshot_url": "https://shiphero-uploads.s3.amazonaws.com/inventory_snapshots/3801/8075/Any/b24278f6-7dbe-11ea-9903-0af9fd70a979.json", "snapshot_expiration": null } } } }
Inventory snapshots Query
This query allows us to get the status of all the snapshots for a specific warehouse or customer
query { inventory_snapshots(warehouse_id: "V2FyZWhvdXNlOjgwNzU=") { request_id complexity snapshots(first: 1) { edges { node { snapshot_id job_user_id job_account_id warehouse_id customer_account_id notification_email email_error post_url post_error post_url_pre_check status error created_at enqueued_at updated_at snapshot_url snapshot_expiration } } } } }
And the response should look something like this:
{ "data": { "inventory_snapshots": { "request_id": "5e94c0c401117d1e2b1a822c", "complexity": 11, "snapshots": { "edges": [ { "node": { "snapshot_id": "5e94c048cec17923fcb7ec32", "job_user_id": "VXNlcjo5MTIz", "job_account_id": "QWNjb3VudDozODAx", "warehouse_id": "V2FyZWhvdXNlOjgwNzU=", "customer_account_id": null, "notification_email": "test@shiphero.com", "email_error": null, "post_url": null, "post_error": null, "post_url_pre_check": true, "status": "success", "error": null, "created_at": "2020-04-13T19:40:56+00:00", "enqueued_at": "2020-04-13T19:40:56.912000+00:00", "updated_at": "2020-04-13T19:40:57+00:00", "snapshot_url": "https://shiphero-uploads.s3.amazonaws.com/inventory_snapshots/3801/8075/Any/b24278f6-7dbe-11ea-9903-0af9fd70a979.json", "snapshot_expiration": null } } ] } } } }