Provider integrations
- for
- Live Nation, via Globant
- when
- 2024–25
- Problem
- Several providers needed to work behind a single interface.
- My contribution
- Built the integrations, frontend flows and normalization layer, then proposed extending it to every product on the team.
- Decision
- Put one shared contract-normalization middleware in front of every provider, and ask provider engineers about ambiguous IDs and tokens instead of guessing.
- Delivered
- One normalization layer in front of more than five providers, with retries, mismatch alerts and CI tests.
- Result
- More than five providers behind one shared contract, later extended to all team products and gradually adopted outside the team.
- Status
- production · 2024–25
>5providers behind one shared contract
what I foundEach provider described the same ideas with different field names.
what I foundAmbiguous IDs and token meanings went to the providers' engineers instead of being guessed.
provider A
- event_id
- start_time
- price
- status
provider B
- evId
- startsAt
- amount_cents
- state
provider C
- id
- date
- cost
- avail
provider D
- eventCode
- when_utc
- total.value
- onSale
provider E
- EVENT
- StartDT
- Price
- STATUS
provider F
- uid
- ts
- fare
- flag
shared contract
- event.id
- event.startsAt
- offer.price
- offer.status
try it
Six shapes, one contract
Same ideas, different field names, one contract
illustrative field names, not real payloads-
event_idevIdideventCodeEVENTuidevent.id -
start_timestartsAtdatewhen_utcStartDTtsevent.startsAt -
priceamount_centscosttotal.valuePricefareoffer.price -
statusstateavailonSaleSTATUSflagoffer.status
-
statusmissingoffer.status=unknown -
pricemissingoffer.price=0 -
start_timemissingevent.startsAt=null
discovery
From traffic to contract
- 1Capture trafficprovider traffic recorded with Playwright
- 2Document shapesresponse shapes written down per provider
- 3Confirm with provider engineersambiguous IDs and token meanings asked, not guessed
- 4Shared contractone contract in front of every provider
production
What keeps it honest in production
- Retriesavailability and purchase calls retried on errors
- Mismatch alertsa Slack channel is alerted on contract mismatches
- Tests in CIcontract, unit and end-to-end tests
adoption
From one feature to every team product
- First integrationsthe first providers behind the contract
- All team productsexpansion proposed and implemented
- Outside the teamgradual adoption
capacity
Delivery after the boundaries moved
approximately 15% more story points
over four sprints after ownership boundaries changed; same team size, observational, not causal
ownership
Who did what, and when
- provider integrationsDec 2024
- all team productsexpansion
- adopted outside the teamgradual
- one shared contract
- MeIntegrations, flows, normalization, observability, tests; proposed the expansion
- Provider engineersConfirmed ambiguous IDs and token meanings
- Other teamsAdopted it gradually
- Provider namesNot shown
What shipped
Integrations that began provider by provider became a shared capability across the team's products.
Method and caveats
- More than five providers: the integrations I built personally
- Story points: team measure from Jira
- Contract field names: illustrative, not real payloads