Recipes/Travel/stateful
durable operation2–3 hr5 stages8 code languages

Operating journey: Turn inspiration into an itinerary

More confident trip planning and higher conversion from discovery to booking.

The real-world moment

A family planning a three-day city break saves attractions from editorial stories, nearby search and partner inventory. The product must preserve place identity across languages and sources, sequence a feasible itinerary, show neighbourhood and RealView context, avoid stale opening assumptions, and hand off to booking/navigation without losing the selected place.

Make ownership visible before code.

Operate the full lifecycle with versioned state, hostile-path recovery, audit, and release evidence.

Application state
stateful
Planning calls
0
Credentials accepted
No
Write authority
None
01
Travel content and inventory

Discover places by theme and proximity

Own editorial collections, commercial availability, pricing, disclosures and booking outcome while mapping every item to a stable place identity.

Travel item ↔ Mappls Pin, editorial/partner IDs, language and provenance

GETAutoSuggest API/api/places/search/jsonThis normalized operation matches the stage intent and remains subject to its source, lifecycle, authentication, entitlement, host, and regional gates.

Record stage 1 with the application identity, source fingerprint, request or aggregate identity, timestamp, and observable outcome.

Two sources describe the same attraction

Reconcile through stable place identity and retain source-specific content/availability rather than merging by name.

02
Place discovery

Build a time-aware itinerary

Search/nearby and curated sources resolve to Mappls Pins with provenance, language/display labels and duplicate reconciliation.

Itinerary ↔ ordered stable IDs, constraints, version and route revision

GETAutoSuggest API/api/places/search/jsonThis is a supporting operation from the selected product stack, not proof of an exact provider contract for this stage. Resolve the stage through its product source or adapter boundary before live implementation.

Record stage 2 with the application identity, source fingerprint, request or aggregate identity, timestamp, and observable outcome.

Opening or availability data is stale

Show source/time, confirm with the authoritative partner and avoid routing a day as guaranteed feasible.

03
Itinerary aggregate

Visualize routes and neighborhoods

Owns ordered saved place IDs, day/time constraints, route revisions, visits/skips, sharing and deliberate cancellation.

Record stage 3 with the application identity, source fingerprint, request or aggregate identity, timestamp, and observable outcome.

Navigation app is absent

Use an HTTPS fallback that preserves the destination and offers browser navigation or store choice without redirect loops.

04
Map and rich context

Embed 3D or RealView context

Renders routes, neighbourhoods, 3D/RealView or deep-linked experiences with accessible alternatives and explicit freshness.

Hand-off ↔ destination/offer identity, safe campaign fields, fallback and observed stage

GETAutoSuggest API/api/places/search/jsonThis is a supporting operation from the selected product stack, not proof of an exact provider contract for this stage. Resolve the stage through its product source or adapter boundary before live implementation.

Record stage 4 with the application identity, source fingerprint, request or aggregate identity, timestamp, and observable outcome.

Two sources describe the same attraction

Reconcile through stable place identity and retain source-specific content/availability rather than merging by name.

05
Partner hand-off

Hand off to navigation

Booking and navigation links bind place/offer identity, allow-list campaign data and distinguish click from confirmed downstream outcome.

Travel item ↔ Mappls Pin, editorial/partner IDs, language and provenance

GETAutoSuggest API/api/places/search/jsonThis is a supporting operation from the selected product stack, not proof of an exact provider contract for this stage. Resolve the stage through its product source or adapter boundary before live implementation.

Record stage 5 with the application identity, source fingerprint, request or aggregate identity, timestamp, and observable outcome.

Opening or availability data is stale

Show source/time, confirm with the authoritative partner and avoid routing a day as guaranteed feasible.

Edit once. Generate eight trusted-runtime implementations.

The recipe starts from the normalized GET /api/places/textsearch/json contract. Execute six deterministic fixture outcomes before an issued account is involved.

Local request composerCode stays local · fixtures are explicit
GETRequest inputs
4 editable · 0 protected
Generated in eight languages
Environment-backed credentials
GEThttps://atlas.mapmyindia.com/api/places/textsearch/json?query=Where+is+Lajpat+Nagar&region=IND&location=28.612964%2C77.229463&filter=pin%3A110020
Credential-free sandboxExecute this contract without a provider call
How fixtures work
Generated from your inputs
curl --request GET \
  --url 'https://atlas.mapmyindia.com/api/places/textsearch/json?query=Where+is+Lajpat+Nagar&region=IND&location=28.612964%2C77.229463&filter=pin%3A110020' \
  --header "Accept: application/json" \
  --header "Authorization: Bearer ${MAPPLS_ACCESS_TOKEN}"

Credential-safe by constructionSet MAPPLS_ACCESS_TOKEN only in your trusted runtime. Code generation stays local. Sandbox execution sends only bounded fixture inputs to this developer platform and never reads a credential or calls Mappls.

Break the journey before customers do.

These controls are required at this operating depth; deeper recipes add durable truth rather than merely more API calls.

Idempotent commandsOptimistic aggregate versionsEvent and receipt timeTransactional outboxUnknown-outcome reconciliationIndependent human decisionsRestart recoveryImmutable audit evidence

Definition of done

Every aggregate has an invariant, expected version, stable command identity, and attributable actor.

Duplicate, late, reordered, invalid, stale, timed-out, and restarted execution preserve one durable truth.

Unknown provider outcomes reconcile by original identity before replay or compensation.

Terminal decisions, human review, audit, outbox delivery, privacy, retention, and rollback remain independently evidenced.

Contracts, tutorials, and journeys stay linked.

Store Locator

Discover eligible branches, compare distance and ETA, preserve Mappls Pin identity, and hand off safely to navigation.

Source-grounded, not authority-granting

This recipe composes source-derived contracts, application architecture, fixtures, and maintained learning evidence. It does not prove package availability, provider payload shape, account entitlement, regional behavior, production compatibility, or release approval.