# Compliance reporting across multiple facilities

Multi-state operators and MSO back-office tools need one view across every licensed facility a customer runs, often spanning both Metrc and BioTrack states. SeedLink normalizes the data. Your job is just to fan out the calls and merge.

## List the customer's connections

`GET /v1/connections` returns every connection under your org, each with its `provider` (`metrc` or `biotrack`) and `state`. A customer with facilities in three states has three connections, even though every response comes back in the same shape.

## Fan out per connection

For each `connection_id`, call `GET /v1/connections/{connection_id}/facilities` to get that state's licensed facilities. Because the Common Data Model is identical across providers, you can merge the results into one array without provider-specific branches.

## Pull the resources you're reporting on

Within each facility, call the resource endpoints you need: `packages`, `sales`, `lab_results`, whichever your report covers, the same way you would for a single-facility integration. Tag each result with its `connection_id` and `facility_id` on the way in, since that's what lets you roll back up to state or provider later.

## Handle partial failures

One connection having an upstream outage (Metrc or BioTrack maintenance, expired credentials) shouldn't fail the whole report. A `502` from one connection's calls means skip it and flag it. Don't let it block data from the other connections. A `connection.requires_reauth` webhook tells you when a connection needs the customer to re-link before it'll return data again.

