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 40 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 | (none) |
| 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 |
| 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) |
| Outgoing Transfer Manifests | /v2/transfers/outgoing/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¶
Six groups do not behave like the rest. Read the one that covers the path you picked.
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 packages and transporters for each transfer automatically; there is no include to add and no way to switch it off, then cross-join the result, so you get one row per package per transporter rather than one row per transfer. That is why their columns are prefixed by the object they came from (transfer., package., transporter., plus delivery. and transporterDetails. on outgoing, and transporterDetails. only on hub). Because that loading is automatic, there is no super form to graduate to. A super variant of each briefly existed and has been removed: it returned the same columns while making the loading opt-in, so a request without an include came back empty. If you were calling one, drop /super from the path, the report in the table is a superset of what it did.
Two things follow that surprise people:
rowLimitcounts transfers, not rows. It is applied before the join, so&rowLimit=100can return several hundred rows.- They cost budget even though they are plain reports. Loading related data for every transfer means these reports run out of the Metrc request budget at roughly 5,000 transfers, well before the 50,000 row cap their documentation shows. Filter to a date range or add
&rowLimit=5000.
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 from one path with no state parameter, so there is a single
/v2/transfers/hub/reportrather than the active/inactive pair every other transfer collection has. - The manifest form is the cheapest of the three: at one Metrc request per transfer instead of two or four. Metrc returns the delivery and the transporter already flattened onto the record and embeds the driver legs, so packages are the only thing left to fetch. Those flattened fields appear under
transfer.; there is nodelivery.ortransporter.group.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 will get an empty report rather than an error. Unlike the other new collections these do have includes (createdPackages, sourcePackages and history) so the super report is a real one, and rowMode applies. Note that a job record also carries a packages array inline: that is Metrc's own partial projection, with processingJobId zeroed out on every entry, so use include=sourcePackages when you need those packages joined.
Some super reports add nothing¶
The tag, tag order, strain and location super reports return the same columns as their plain form. Metrc exposes no related data for those objects, so there is nothing extra for a super report to attach; they exist so every path follows the same pattern.
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.