PetroMon, as an API
Submit orders, drive stage transitions, and receive signed lifecycle events — without the PetroMon web UI. Scope, validation and compliance stay exactly where they already are.
$ curl \
".../api/v1/orders/PCLG40220002" \
-H "X-Api-Key: ptm_live_..."
{
"orderNumber": "PCLG40220002",
"status": "good_standing", // a name, never a number
"depotCode": "BOSD0000040"
}The lifecycle
One order, eight stages
Every partner drives the stages it owns and observes the rest. Pipeline orders skip the BRV check; non-markable products skip marking — and you're told when they do.
- 01OrderedOMC
- 02BDC approvedBDC
- 03Good standingautomatic
- 04Depot approvedDepot
- 05BRV checkedDepot
- 06LoadedDepot
- 07MarkedMarker
- 08ReleasedGRA
Statuses are names — loaded, released — never the underlying integers, which are not ordered by progress.
How it fits
A front door, not a second system
Your systems talk to the gateway. The gateway talks to PetroMon, which keeps doing everything it already does — including the external filings.
Your systems
ERP, TMS, depot software
REST + API key
Integration Gateway
Auth · scope · validation · idempotency · audit
Signed webhooks back to you
PetroMon core
The order lifecycle and its rules
ICUMS · UniPass · Ascent · Authentix
The gateway holds no order state of its own. Nothing it returns is a cached opinion — it is read from PetroMon at the moment you ask.
Who it's for
Built for every party on an order
Your company's PetroMon registration decides what you can drive and what you can see. Nothing is asserted in a request.
OMC
- Drives
- Raise and cancel orders
- Sees
- Every stage on its own orders
BDC
- Drives
- Approve, decline or cancel
- Sees
- Orders where it is the named BDC
Depot
- Drives
- Depot approval, BRV check, loading, cancellation, custody
- Sees
- Orders at its depot
Marking company
- Drives
- Marking, tagging, certificates
- Sees
- Orders it marks
Regulator
- Drives
- Release
- Sees
- Read-only across scope
What you get
Built for systems, not screens
The things that matter when an integration runs unattended against a regulatory system.
Events, not polling
Signed webhooks for every transition, with retries, dead-lettering, secret rotation and manual replay.
Automatic steps included
PetroMon skips the BRV check for pipeline orders and marking for non-markable products. Those reach you too, flagged as automatic.
Scope you can't get wrong
What you see comes from your company's PetroMon registration, never from the request. A BDC sees the orders it is named on.
Credentials with limits
One key per account, carrying your PetroMon licences. Set an expiry and an IP allowlist, and revoke it without touching the others.
Answerable support
Every call is recorded with its payload, response and requestId — so a rejection is explainable, not guesswork.
Built on PetroMon itself
The same stock lockdowns, product restrictions, BRV capacity and ICUMS checks. One source of truth, not a copy.
Getting started
Three steps to your first call
You are calling the same PetroMon your web users already work in — so a key is live from the moment it is issued, and scoped to your own companies alone.
- 1RegisterWith your PetroMon account reference. Every company under it comes across at once.
- 2Confirm the contact addressWe show it masked; you type it back, and the link goes there.
- 3Create a keyIt covers every company you operate. Then call the API.
$ curl \
"/api/v1/orders" \
-H "X-Api-Key: ptm_live_…"
{
"items": [
{ "orderNumber": "PCLG40220002",
"status": "good_standing",
"parties": { "bdcCode": "BDC001" } }
],
"totalCount": 101
}Before you ask
The questions that come up first
Is this a copy of PetroMon's data?
No. The gateway holds no order state of its own. It authenticates, authorises, validates shape and delegates — every order you read is read from PetroMon at that moment.
What happens if my endpoint is down?
Delivery retries with backoff for up to 24 hours, then dead-letters. Nothing is lost: every event keeps its exact signed payload and can be replayed from the portal once you are back.
Can I accidentally see another company's orders?
No. Scope comes from your company's PetroMon registration, not from anything you send. An order outside it returns 404 rather than 403, so the response cannot even confirm it exists.
Do I need to handle PetroMon's status numbers?
Never. You send names and read names — approve with "bdc_approved", decline with "bdc_declined", and every response says loaded, released, cancelled. The gateway turns names into PetroMon's numbers, which are not ordered by progress and should never be compared.
Is a retry safe?
Yes. Send an Idempotency-Key and a repeated request replays the original response instead of acting twice. Order numbers are unique per company as a second guard.
Ready to connect your systems?
Register with your PetroMon code, issue a key, and point your ERP at the same order lifecycle your operations team already works in.