Report Endpoints¶
Every collection with a report has a path ending in /report, and most also have a super form that attaches related records. See Super Reports for what that adds.
The ones reached for most often:
| Data | Report | Super report |
|---|---|---|
| Active Packages | /v2/packages/active/report | /v2/packages/active/super/report |
| Inactive Packages | /v2/packages/inactive/report | /v2/packages/inactive/super/report |
| Items | /v2/items/report | /v2/items/super/report |
| Active Harvests | /v2/harvests/active/report | /v2/harvests/active/super/report |
| Flowering Plants | /v2/plants/flowering/report | /v2/plants/flowering/super/report |
| Active Sales | /v2/sales/active/report | /v2/sales/active/super/report |
| Incoming Transfer Manifests | /v2/transfers/incoming/manifest/report | (none) |
All 48 report endpoints
| Data | Report | Super report |
|---|---|---|
| Active Packages | /v2/packages/active/report | /v2/packages/active/super/report |
| Inactive Packages | /v2/packages/inactive/report | /v2/packages/inactive/super/report |
| In Transit Packages | /v2/packages/intransit/report | /v2/packages/intransit/super/report |
| On Hold Packages | /v2/packages/onhold/report | /v2/packages/onhold/super/report |
| Transferred Packages | /v2/packages/transferred/report | /v2/packages/transferred/super/report |
| Point-in-Time Inventory | /v2/packages/point-in-time/report | (none) |
| Product Labels | /v2/packages/product-labels/report | /v2/packages/product-labels/super/report |
| Staged Product Labels | /v2/packages/staged-product-labels/report | /v2/packages/staged-product-labels/super/report |
| Lab Samples | /v2/packages/lab-samples/report | /v2/packages/lab-samples/super/report |
| Items | /v2/items/report | /v2/items/super/report |
| Active Harvests | /v2/harvests/active/report | /v2/harvests/active/super/report |
| Inactive Harvests | /v2/harvests/inactive/report | /v2/harvests/inactive/super/report |
| On Hold Harvests | /v2/harvests/onhold/report | /v2/harvests/onhold/super/report |
| Vegetative Plants | /v2/plants/vegetative/report | /v2/plants/vegetative/super/report |
| Flowering Plants | /v2/plants/flowering/report | /v2/plants/flowering/super/report |
| On Hold Plants | /v2/plants/onhold/report | /v2/plants/onhold/super/report |
| Inactive Plants | /v2/plants/inactive/report | /v2/plants/inactive/super/report |
| Active Mother Plants | /v2/plants/mother/active/report | /v2/plants/mother/active/super/report |
| On Hold Mother Plants | /v2/plants/mother/onhold/report | /v2/plants/mother/onhold/super/report |
| Inactive Mother Plants | /v2/plants/mother/inactive/report | /v2/plants/mother/inactive/super/report |
| Active Plant Batches | /v2/plantbatches/active/report | /v2/plantbatches/active/super/report |
| On Hold Plant Batches | /v2/plantbatches/onhold/report | /v2/plantbatches/onhold/super/report |
| Inactive Plant Batches | /v2/plantbatches/inactive/report | /v2/plantbatches/inactive/super/report |
| Plant Waste | /v2/plants/waste/report | /v2/plants/waste/super/report |
| Plant Additives | /v2/plants/additives/report | /v2/plants/additives/super/report |
| Active Sales | /v2/sales/active/report | /v2/sales/active/super/report |
| Inactive Sales | /v2/sales/inactive/report | /v2/sales/inactive/super/report |
| Available Tags | /v2/tags/available/report | /v2/tags/available/super/report |
| Used Tags | /v2/tags/used/report | /v2/tags/used/super/report |
| Voided Tags | /v2/tags/voided/report | /v2/tags/voided/super/report |
| Current Tag Orders | /v2/tagorders/current/report | /v2/tagorders/current/super/report |
| Historical Tag Orders | /v2/tagorders/history/report | /v2/tagorders/history/super/report |
| Active Processing Jobs | /v2/processingjobs/active/report | /v2/processingjobs/active/super/report |
| Inactive Processing Jobs | /v2/processingjobs/inactive/report | /v2/processingjobs/inactive/super/report |
| Strains | /v2/strains/report | /v2/strains/super/report |
| Active Locations | /v2/locations/active/report | /v2/locations/active/super/report |
| Incoming Active Transfers | /v2/transfers/incoming/active/report | (none) |
| Incoming Inactive Transfers | /v2/transfers/incoming/inactive/report | (none) |
| Outgoing Active Transfers | /v2/transfers/outgoing/active/report | (none) |
| Outgoing Inactive Transfers | /v2/transfers/outgoing/inactive/report | (none) |
| Rejected Transfers | /v2/transfers/rejected/report | (none) |
| Hub Transfers | /v2/transfers/hub/report | (none) |
| Incoming Transfer Manifests | /v2/transfers/incoming/manifest/report | (none) |
| Incoming Inactive Transfer Manifests | /v2/transfers/incoming/inactive/manifest/report | (none) |
| Outgoing Transfer Manifests | /v2/transfers/outgoing/manifest/report | (none) |
| Outgoing Inactive Transfer Manifests | /v2/transfers/outgoing/inactive/manifest/report | (none) |
| Rejected Transfer Manifests | /v2/transfers/rejected/manifest/report | (none) |
| Hub Transfer Manifests | /v2/transfers/hub/manifest/report | (none) |
Notes on particular reports¶
These reports do not behave like the rest. Read the one that covers the path you picked.
The point-in-time report answers for a past date¶
/v2/packages/point-in-time/report lists what one license held on a date up to 180 days back, worked out from each package's history. It takes a date, has no super form, and refuses filters, sort and rowLimit. See Point-in-Time Inventory.
On hold and inactive plant reports exclude mother plants¶
The pooled and mother-specific reports partition your plants rather than overlap, so there is no double-counting, but if you want every on hold plant, request both /v2/plants/onhold/report and /v2/plants/mother/onhold/report and combine them.
Transfer reports have no super form¶
They return one row per transfer, with no include support. If you need the packages or transporters on each transfer, use a transfer manifest report (below), or page through a supercollection such as /v2/transfers/outgoing/active/super.
Transfer manifest reports work differently from every other report¶
They load the packages and transporters for every transfer automatically, with no include to add and no way to switch it off. There is no super form. json returns one record per transfer with its packages and transporters nested inside it; csv, xlsx and googleSheets cross-join them into one row per package.
Each column is prefixed by the object it came from:
| Report | Column prefixes |
|---|---|
| Incoming, active and inactive | transfer., transporter., package. |
| Outgoing, active and inactive, and rejected | transfer., delivery., transporter., transporterDetails., package. |
| Hub | transfer., transporterDetails., package. |
Two things follow that surprise people:
filterandrowLimitselect transfers, not rows. Both apply before the join, so&rowLimit=100can return several hundred rows, and every package on a matched transfer comes back.- They reach the size limit early. Loading the packages and transporters adds work for every transfer, so these reports are refused as too large to build well before the 50,000 row cap: near 5,000 transfers for incoming, 2,500 for outgoing and rejected, and 10,000 for hub. Filter to a date range, or set a
rowLimitbelow those figures, such as&rowLimit=2000.
The two inactive manifest reports cover transfers that are no longer active, chiefly ones already received. They hold every such transfer the license has ever had, so always filter them to a date range: receivedDateTime for incoming, createdDateTime for outgoing. Metrc lists outgoing transfers without a received date, because each delivery is received separately. See Received transfer manifests.
Hub transfer reports cover the transfers you transport¶
These are the rows on Metrc's "Transfers Hub" page, where your license is neither the shipper nor the recipient, so they appear in no other transfer report. Two things make them unusual:
- There is no active/inactive split. Metrc serves the whole collection as one list, so there is a single
/v2/transfers/hub/reportrather than the active/inactive pair every other transfer collection has. - The manifest form has no
delivery.ortransporter.group. Those fields appear undertransfer..transporterDetails.shows the first driver leg only; whentransfer.multiVehicleortransfer.isLayoveris true, the remaining legs are in the JSON response but cannot be represented in a flat grid. Both flags are in the default columns so you can tell when that is happening.
Tag orders use current and history rather than active/inactive¶
Those are Metrc's own names for the two tabs on its tag orders page, and the paths mirror them. Note that history here is a state of the collection, unlike /v2/packages/history, which is one package's audit trail. Each tag order carries its line items in a details array, returned with the order itself rather than through an include.
Processing jobs are currently Oregon-only¶
Metrc exposes the Processing module in Oregon; licenses in other states get an empty report rather than an error. The super report takes createdPackages, sourcePackages and history. Use include=sourcePackages rather than the job's inline packages array, which is incomplete. See Superprocessingjob includes.
Some super reports add nothing¶
The tag, tag order, strain and location super reports return the same columns as their plain form, because Metrc has no related data to attach to those objects.
Next Steps¶
- Narrow what a report returns with Shaping a Report.
- Attach related records with Super Reports.
- Check the caps before a large run in Limits and Troubleshooting.