01 / Interactive Explorer · WASTE DATA PLATFORM API

Construct a request. Watch the response take shape.

A faithful, client-side simulation of the Waste Data Platform API gateway at wgpfapimprod.azure-api.net. Pick an endpoint, set a date range, toggle pagination, and apply filters — the request preview and JSON response update live so you can see exactly what the contract returns before you write a line of integration code.

Everything below runs in your browser against synthetic demo data. No requests leave this page, and no real customer data is ever shown — this is a schema playground, not a live console.

controls
request preview
curl snippet
JSON response
Contract: GET / POSTOcp-Apim-Subscription-Keybegin_dateend_datepage_size (≤1000)cursor28-field detail recordISO-8601 dates
02 / The Explorer

Build a request, read the response

Adjust any control and the request URL, the curl snippet, and the JSON body all re-render instantly. Toggle page_size to switch between the backward-compatible bare array and the paginated envelope, then walk the cursor with Next page.

Request builder

Pagination get_report_data only
3
1max 1000
Filters both endpoints
request
GET
Full URL


              
curl

              

The Ocp-Apim-Subscription-Key value is a placeholder. Swap in the key Wasteology issued to your account.

200 OK bare array



              
copied
03 / Authentication

How auth works

Every call carries a single header. There is no OAuth dance and no account identifier in the query string.

The header

Send Ocp-Apim-Subscription-Key on every request. This is the APIM subscription key Wasteology issued for your account.

Scoped by key

The key resolves to exactly one account. The API filters every response to that organization automatically — you never pass an account id for scoping.

Gateway

Production lives at wgpfapimprod.azure-api.net, fronted by Azure API Management. Dates are ISO-8601 and windows cap at 366 days.

04 / Two shapes

Detail vs Summary

Same date range, same filters — two very different response bodies. Choose based on whether you need every service event or a compact monthly rollup.

/get_report_data detail

One row per service event, up to the full 28-field record: accounts, locations, invoice/service dates, material, container, amounts, weights, and emissions. Optionally paginated. Use it for line-item reconciliation, custom reports, and BI ingestion.

/get_report_summary aggregate

Pre-aggregated rollups grouped by month × material × disposal_type × service_type, with record_count, totals for amount and weight (lbs + tons), and total CO₂e. Ideal for dashboards and emissions tracking without pulling every row.

05 / Keyset pagination

Pagination

Pagination is opt-in and backward-compatible. Omit page_size and you get exactly what existing integrations always got: a bare array. Add it and the body becomes an envelope with a keyset cursor.

No page_size — legacy

The response is a bare JSON array of detail records. Nothing about the shape changed, so integrations written before pagination existed keep working untouched.

With page_size — envelope

You get { data, paging }. Read paging.next_cursor and send it back as cursor to fetch the next page. Keep following the cursor until has_more is false — at which point next_cursor is dropped entirely. Pages never overlap.

Loop rule: follow next_cursor until has_more = false. Do not compute offsets yourself — the cursor is an opaque keyset token. Try it: set a small page_size in the explorer above and click Next page repeatedly.
06 / Filtering

Filtering

All filters are optional query parameters and stack together (logical AND). They apply to both endpoints — on the summary they simply narrow which groups are rolled up.

material

Trash, Single Stream, Organics, Cardboard, C&D.

disposal_type

Landfill or Recycle.

service_type

Recurring or On Call.

location_id

Restrict to a single site.

account_id

Restrict to a sub-account within your scope.

begin_date / end_date

Always required. ISO-8601, ≤ 366-day window.