# Mappls Developer Platform — full AI context
> Canonical repository-backed context for retrieval, planning, implementation, and evaluation. This is not a credential, entitlement, provider response, compatibility promise, or production approval.
## Corpus manifest
```json
{
"schemaVersion": "mappls.ai-context-corpus.v1",
"generatedAt": "2026-08-18T00:00:00Z",
"sourceSnapshotAt": "2026-08-18T03:05:03.406Z",
"records": 1992,
"jsonlLines": 1993,
"kinds": 43,
"counts": {
"a2a-authority": 1,
"agent-pattern": 6,
"agent-skill": 1,
"ai-evaluation-suite": 1,
"api-generation": 17,
"api-operation": 162,
"authentication": 14,
"automotive": 1,
"capability-decision": 130,
"capability-qualification": 130,
"client-library-studio": 1,
"deep-link-evidence": 1,
"deep-link-intent": 4,
"developer-experience-benchmark": 1,
"developer-platform-release": 4,
"documentation-coverage": 105,
"environment": 4,
"error-diagnostic": 11,
"event-contract": 138,
"implementation-recipe": 48,
"industry-solution": 16,
"journey-simulation": 18,
"journey-workshop": 18,
"marketing-evidence": 6,
"mcp-authority": 1,
"migration": 13,
"native-widget-capability": 5,
"native-widget-platform": 4,
"platform": 13,
"product": 10,
"quickstart": 13,
"sample-application": 21,
"sdk-or-distribution": 58,
"search-destination": 714,
"source-launchpad": 60,
"source-lifecycle": 82,
"source-reference": 82,
"stateful-journey": 18,
"stateful-product": 9,
"tutorial": 40,
"vision": 1,
"webhook-guide": 1,
"widget": 9
},
"recordSetSha256": "f1b9eb749e6bfb11ef647aee78bf6451bdcff740e9b357b8beb1abe5478e37e8",
"authority": {
"providerCredentialsAccepted": false,
"providerPayloadsAccepted": false,
"providerCalls": 0,
"writesExposed": false,
"productionApprovalGranted": false,
"boundary": "This corpus packages repository-backed public developer evidence for offline AI retrieval. It does not prove Mappls product entitlement, live provider behavior, compatibility, support, customer authority, or production approval."
}
}
```
## Consumption rules
- Select records by `kind` and `id`; retain the canonical `href` in citations and handoffs.
- Treat `stateModel` as an integration-design signal, not evidence that the provider owns every durable state.
- Never promote a repository, sample, fixture, generated plan, or adjacent SDK into entitlement or live-product proof.
- Use the JSONL SHA-256 sidecar before caching or indexing an offline copy.
- Reconcile state-changing uncertainty by stable business/provider identity before retry; never infer success from a fixture.
## product · Maps
- Identity: `product:maps`
- Canonical: https://developer.mappls.com/docs/maps
- State model: stateless
```json
{
"slug": "maps",
"name": "Maps",
"eyebrow": "Render the world",
"category": "Core location",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"description": "Build location experiences with global basemaps, India-first detail, 3D buildings, traffic, custom styles, annotations, GeoJSON, KML, heatmaps, raster catalogues, and camera controls. Use native SDKs for deep platform integration or Web Maps JS for the fastest path to an interactive map.",
"accent": "#7c5cff",
"stateModel": "stateless",
"platforms": [
"Web",
"Android",
"iOS",
"React Native",
"Flutter",
"Cordova",
"Xamarin",
"REST"
],
"capabilities": [
"Vector and raster basemaps",
"Markers, shapes, layers, and overlays",
"Traffic and thematic visualization",
"Custom styles and camera controls",
"Static and travelled-route images",
"Offline and embedded map packages"
],
"repositories": [
"mappls-web-maps-js",
"mappls-android-sdk",
"mappls-ios-sdk",
"mappls-flutter-sdk",
"mappls-react-native-sdk",
"mappls-map-ios-distribution"
],
"auth": {
"type": "Static key or access token",
"guidance": "Use a domain-restricted static key for browser SDKs and server-issued credentials for trusted backends."
},
"samples": [
{
"language": "html",
"label": "Web Maps JS",
"code": "\n\n
\n \n \n \n \n \n \n \n"
},
{
"language": "kotlin",
"label": "Android",
"code": "// app/build.gradle.kts\ndependencies {\n implementation(platform(\"com.mappls.sdk:mappls-bom:VERSION\"))\n implementation(\"com.mappls.sdk:mappls-android-sdk\")\n}\n\n// Application.kt\nclass Application : android.app.Application() {\n override fun onCreate() {\n super.onCreate()\n Mappls.getInstance(this)\n }\n}"
}
]
}
```
## product · Search & Places
- Identity: `product:search-places`
- Canonical: https://developer.mappls.com/docs/search-places
- State model: stateless
```json
{
"slug": "search-places",
"name": "Search & Places",
"eyebrow": "Turn intent into place",
"category": "Core location",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"description": "Resolve messy human intent into precise places. Search as a user types, convert addresses to coordinates, reverse coordinates into addresses, discover relevant POIs, inspect place details, search along a route, and use compact Mappls Pins instead of error-prone latitude and longitude pairs.",
"accent": "#00a88f",
"stateModel": "stateless",
"platforms": [
"REST",
"Web",
"Android",
"iOS",
"React Native",
"Flutter",
"Widgets"
],
"capabilities": [
"Autosuggest and text search",
"Forward and reverse geocoding",
"Nearby and route-corridor search",
"Place details and categories",
"Address validation and standardization",
"Mappls Pin and DIGIPIN workflows"
],
"repositories": [
"mappls-rest-apis",
"mappls-android-sdk",
"mappls-ios-sdk",
"mappls-web-plugins"
],
"auth": {
"type": "Restricted static key (current) or OAuth bearer (legacy)",
"guidance": "Current core REST uses a restricted static key in the documented access_token query contract. The pre-August-2025 line uses OAuth bearer with legacy hosts and paths. Never mix generations; keep server-use keys off untrusted clients and request logs."
},
"samples": [
{
"language": "javascript",
"label": "Autosuggest",
"code": "import { createMapplsClientFromEnvironment } from \"@mappls/server-sdk\";\n\n// MAPPLS_STATIC_KEY is applied using the current documented query contract.\n// Keep the restricted key inside this trusted server process.\nconst mappls = createMapplsClientFromEnvironment();\nconst suggestions = await mappls.autosuggest({\n query: \"coffee\",\n region: \"IND\"\n});"
}
]
}
```
## product · Routes & Navigation
- Identity: `product:routes-navigation`
- Canonical: https://developer.mappls.com/docs/routes-navigation
- State model: hybrid
```json
{
"slug": "routes-navigation",
"name": "Routes & Navigation",
"eyebrow": "Move with confidence",
"category": "Mobility",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"description": "Plan and operate journeys for cars, bikes, trucks, pedestrians, and fleets. Choose between single-shot route calculations and a stateful navigation session that continuously responds to progress, traffic, deviations, incidents, and destination changes.",
"accent": "#ff7a45",
"stateModel": "hybrid",
"platforms": [
"REST",
"Android",
"iOS",
"Automotive",
"Linux",
"React Native"
],
"capabilities": [
"Multi-profile routing and alternatives",
"Distance and time matrices",
"Trip and vehicle-route optimization",
"Map matching and snap-to-road",
"Predictive routes and refreshed ETAs",
"Online and offline turn-by-turn navigation"
],
"repositories": [
"mappls-rest-apis",
"mappls-android-sdk",
"mappls-ios-sdk",
"mapmyindia-navigation-sdk",
"mappls-routenet",
"mappls-telecons-offline-sdk"
],
"auth": {
"type": "Restricted static key (current) or legacy OAuth, plus SDK entitlement",
"guidance": "Current core REST routing uses the restricted static-key query contract; legacy OAuth requires its issued host/path generation. Route calls are stateless, while navigation requires an entitled, lifecycle-aware SDK session."
},
"samples": [
{
"language": "kotlin",
"label": "Route request",
"code": "val route = MapplsDirections.builder()\n .origin(\"MMI000\")\n .destination(\"MMI001\")\n .profile(DirectionsCriteria.PROFILE_DRIVING)\n .resource(DirectionsCriteria.RESOURCE_ROUTE)\n .steps(true)\n .build()\n\nroute.enqueueCall(object : Callback {\n override fun onResponse(call: Call, response: Response) {\n val primaryRoute = response.body()?.routes()?.firstOrNull()\n }\n override fun onFailure(call: Call, error: Throwable) = Unit\n})"
}
],
"journey": {
"title": "A complete navigation session",
"description": "Treat navigation as a durable state machine, not a route polyline with voice prompts.",
"steps": [
{
"title": "Plan",
"description": "Resolve origin, stops, vehicle profile, constraints, and alternatives.",
"state": "draft"
},
{
"title": "Preview",
"description": "Present ETA, distance, tolls, incidents, and route trade-offs.",
"state": "ready",
"event": "route.calculated"
},
{
"title": "Start",
"description": "Acquire location, initialize guidance, and begin progress tracking.",
"state": "navigating",
"event": "navigation.started"
},
{
"title": "Respond",
"description": "Refresh progress, reroute on deviation, and surface traffic events safely.",
"state": "navigating",
"event": "route.updated"
},
{
"title": "Arrive",
"description": "Confirm arrival, stop sensors, persist trip summary, and release the session.",
"state": "completed",
"event": "navigation.arrived"
}
]
}
}
```
## product · InTouch Telematics
- Identity: `product:intouch-telematics`
- Canonical: https://developer.mappls.com/docs/intouch-telematics
- State model: stateful
```json
{
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"eyebrow": "Understand every moving asset",
"category": "Operations",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"description": "Connect vehicles, phones, and IoT devices to a longitudinal operational model. InTouch combines ingestion, identity, asset assignment, trip construction, event detection, live state, historical playback, and reporting. Integrations should model provisioning and lifecycle transitions explicitly.",
"accent": "#e052a0",
"stateModel": "stateful",
"platforms": [
"REST",
"Android",
"iOS",
"React Native",
"Web",
"Widgets"
],
"capabilities": [
"Device and vehicle provisioning",
"Live location and historical trails",
"Trips, stoppages, and events",
"Geofences, alerts, and notifications",
"Driver behavior and fleet reports",
"Mobile sensor-based tracking SDKs"
],
"repositories": [
"mappls-intouch-rest-apis",
"mappls-intouch-android-sdk",
"mappls-intouch-ios-sdk",
"mappls-react-native-intouch-sdk"
],
"auth": {
"type": "OAuth bearer with project and asset entitlement",
"guidance": "Generate a time-bound InTouch bearer token from the subscribed project's client credentials. Separate provisioning identities from data-plane tracking tokens and rotate device credentials independently."
},
"samples": [
{
"language": "typescript",
"label": "Asset event consumer",
"code": "type AssetEvent = {\n id: string;\n assetId: string;\n occurredAt: string;\n type: \"position\" | \"ignition\" | \"geofence.entered\" | \"geofence.exited\";\n position?: { latitude: number; longitude: number; speedKph?: number };\n};\n\nexport async function handleAssetEvent(event: AssetEvent) {\n // Idempotency matters: delivery may be retried.\n if (await events.exists(event.id)) return;\n await events.transaction(async () => {\n await events.record(event);\n await assets.apply(event.assetId, event);\n });\n}"
}
],
"journey": {
"title": "Vehicle from activation to daily operations",
"description": "The complete fleet journey spans control-plane and data-plane state.",
"steps": [
{
"title": "Provision",
"description": "Create the organization, project, asset, device, and entitlements.",
"state": "provisioned",
"event": "asset.created"
},
{
"title": "Activate",
"description": "Securely bind the physical device or mobile SDK to the asset.",
"state": "active",
"event": "device.activated"
},
{
"title": "Ingest",
"description": "Accept ordered and delayed telemetry while tracking connection health.",
"state": "online",
"event": "position.received"
},
{
"title": "Operate",
"description": "Build trips, evaluate geofences, notify operators, and power live views.",
"state": "in_trip",
"event": "trip.started"
},
{
"title": "Maintain",
"description": "Diagnose gaps, replace devices, transfer assets, and preserve history.",
"state": "maintenance",
"event": "device.replaced"
},
{
"title": "Retire",
"description": "Revoke credentials and detach hardware without deleting audit history.",
"state": "retired",
"event": "asset.retired"
}
]
}
}
```
## product · Workmate
- Identity: `product:workmate`
- Canonical: https://developer.mappls.com/docs/workmate
- State model: stateful
```json
{
"slug": "workmate",
"name": "Workmate",
"eyebrow": "Orchestrate work in the field",
"category": "Operations",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"description": "Build dispatch and field-service systems around organizations, teams, workers, clients, tasks, shifts, location evidence, forms, and approvals. Workmate is journey-oriented: assignment, acceptance, execution, proof, exception handling, and completion are all first-class states.",
"accent": "#3478f6",
"stateModel": "stateful",
"platforms": [
"REST",
"Android",
"Web"
],
"capabilities": [
"Worker and team management",
"Task assignment and dispatch",
"Attendance and shift workflows",
"Client visits and proof of service",
"Live operations and exceptions",
"Forms, evidence, and completion reports"
],
"repositories": [
"mapmyindia-workmate-apis",
"mappls-workmate-android-sdk"
],
"auth": {
"type": "Organization and user-scoped access",
"guidance": "Use service identities for dispatch integrations and user identities for worker actions; preserve the actor in every transition."
},
"samples": [
{
"language": "json",
"label": "Task lifecycle",
"code": "{\n \"externalId\": \"JOB-2026-004219\",\n \"type\": \"equipment_inspection\",\n \"assigneeId\": \"worker_1288\",\n \"location\": { \"mapplsPin\": \"MMI000\" },\n \"window\": { \"startsAt\": \"2026-08-17T04:30:00Z\", \"endsAt\": \"2026-08-17T06:30:00Z\" },\n \"requiredProof\": [\"arrival_location\", \"checklist\", \"photo\", \"customer_signature\"]\n}"
}
],
"journey": {
"title": "A field-service job end to end",
"description": "Every transition is attributable, replayable, and safe to retry.",
"steps": [
{
"title": "Create",
"description": "Attach client, site, SLA, skills, time window, and proof requirements.",
"state": "unassigned",
"event": "task.created"
},
{
"title": "Dispatch",
"description": "Choose a qualified worker using proximity, load, shift, and route cost.",
"state": "assigned",
"event": "task.assigned"
},
{
"title": "Accept",
"description": "Worker accepts, rejects, or raises an availability exception.",
"state": "accepted",
"event": "task.accepted"
},
{
"title": "Travel",
"description": "Navigate to the site and notify operations of predicted SLA risk.",
"state": "en_route",
"event": "task.en_route"
},
{
"title": "Execute",
"description": "Verify arrival, collect structured work evidence, and handle blockers.",
"state": "in_progress",
"event": "task.started"
},
{
"title": "Close",
"description": "Validate proof, obtain sign-off, sync downstream systems, and audit.",
"state": "completed",
"event": "task.completed"
}
]
}
}
```
## product · GIS & Analytics
- Identity: `product:gis-analytics`
- Canonical: https://developer.mappls.com/docs/gis-analytics
- State model: hybrid
```json
{
"slug": "gis-analytics",
"name": "GIS & Analytics",
"eyebrow": "Make geography explain the business",
"category": "Intelligence",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"description": "Publish governed geospatial data, run spatial operations, build thematic views, and embed interactive dashboards. The mGIS and Insight families cover both API-first analysis and long-lived workspaces containing datasets, layers, styles, maps, permissions, and shares.",
"accent": "#17a8e3",
"stateModel": "hybrid",
"platforms": [
"REST",
"Web",
"Widgets",
"MCP"
],
"capabilities": [
"Dataset upload and cataloguing",
"Layer styling and thematic maps",
"Spatial queries and analysis",
"Dashboards and embedded insights",
"Workspace roles and governed sharing",
"Import, export, and lineage"
],
"repositories": [
"mapmyindia-mgis-apis",
"mapmyindia-mgis-libraries",
"mappls-insight-sdk",
"migist-complete"
],
"auth": {
"type": "Workspace and resource-scoped access",
"guidance": "Keep immutable source data separate from derived layers; authorize reads and writes at workspace, dataset, and share boundaries."
},
"samples": [
{
"language": "python",
"label": "Point-in-polygon analysis",
"code": "import requests\n\nresponse = requests.post(\n f\"{MAPPLS_GIS_BASE_URL}/analysis/point-in-polygon\",\n headers={\"Authorization\": f\"Bearer {token}\"},\n json={\n \"pointsDatasetId\": \"deliveries_2026_08\",\n \"polygonDatasetId\": \"service_zones_v4\",\n \"include\": [\"zone_id\", \"manager\", \"sla_minutes\"],\n },\n timeout=30,\n)\nresponse.raise_for_status()\njob = response.json() # Poll or subscribe to the returned analysis job.\n"
}
],
"journey": {
"title": "From raw data to governed decision layer",
"description": "Large analyses are asynchronous, reproducible resources with lineage.",
"steps": [
{
"title": "Ingest",
"description": "Upload or connect a source and validate its schema and coordinate system.",
"state": "validating",
"event": "dataset.created"
},
{
"title": "Publish",
"description": "Version the dataset, define access, and expose a queryable layer.",
"state": "published",
"event": "dataset.published"
},
{
"title": "Analyze",
"description": "Run a spatial job with explicit inputs, parameters, and output ownership.",
"state": "processing",
"event": "analysis.started"
},
{
"title": "Visualize",
"description": "Style the derived layer and assemble a map or dashboard.",
"state": "ready",
"event": "analysis.completed"
},
{
"title": "Share",
"description": "Embed or grant access with expiry, audience, and export controls.",
"state": "shared",
"event": "share.created"
}
]
}
}
```
## product · App Widgets & Deep Links
- Identity: `product:app-widgets-deep-links`
- Canonical: https://developer.mappls.com/docs/app-widgets-deep-links
- State model: stateless
```json
{
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"eyebrow": "Ship a complete experience in minutes",
"category": "Experience",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"description": "Use universal URLs and embeddable widgets when you need a polished Mappls experience without owning a full map or navigation integration. Most app widgets need no API credential, making them ideal for content, support, campaigns, and lightweight product surfaces.",
"accent": "#ff4f64",
"stateModel": "stateless",
"platforms": [
"Widgets",
"Deep links",
"Web",
"Android",
"iOS"
],
"capabilities": [
"Place and map visualization",
"Directions and navigation hand-off",
"Immersive 3D and RealView experiences",
"Cross-platform universal links",
"Low-code embeds",
"Credential-free entry points"
],
"repositories": [
"mappls-app-widgets",
"mappls-web-plugins"
],
"auth": {
"type": "Often credential-free",
"guidance": "Use an API key only when the selected widget explicitly requires one; validate and encode all user-provided URL parameters."
},
"samples": [
{
"language": "html",
"label": "Place link",
"code": "\n Open this place in Mappls\n"
}
]
}
```
## product · Offline & Automotive
- Identity: `product:offline-automotive`
- Canonical: https://developer.mappls.com/docs/offline-automotive
- State model: stateful
```json
{
"slug": "offline-automotive",
"name": "Offline & Automotive",
"eyebrow": "Location that keeps working",
"category": "Embedded",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"description": "Power in-vehicle, industrial, and disconnected experiences with licensed regional data packages and embedded runtimes. This product family includes offline search and route compilers, native SDKs, traffic-event customization, voice guidance, GPS health, and update workflows.",
"accent": "#d6a600",
"stateModel": "stateful",
"platforms": [
"Automotive",
"Linux",
"Android"
],
"capabilities": [
"Offline maps, search, and routing",
"Turn-by-turn guidance runtime",
"Regional data compilation",
"Voice and traffic customization",
"GPS health and dead reckoning hooks",
"Signed data and software updates"
],
"repositories": [
"mappls-telecons-offline-sdk",
"mappls-telecons-compiler",
"mappls-telecons-search-compiler",
"mappls-telecons-background-compiler",
"mappls-routenet",
"linuxsdk-dev1",
"linuxsdk-dev2",
"yahaan"
],
"auth": {
"type": "Device activation and licensed data package",
"guidance": "Design for activation, entitlement refresh, package compatibility, rollback, and long periods without network access."
},
"samples": [
{
"language": "cpp",
"label": "Lifecycle pattern",
"code": "// Illustrative lifecycle: concrete symbols vary by licensed SDK edition.\nNavigationRuntime runtime(configuration);\nruntime.installDataPackage(verifiedPackagePath);\nruntime.setPositionProvider(vehiclePositionProvider);\n\nauto route = runtime.plan(origin, destination, vehicleProfile);\nif (route.ok()) {\n runtime.startGuidance(route.value());\n}\n\n// Keep sensor callbacks non-blocking; persist the resumable session safely.\nruntime.onProgress([](const GuidanceProgress& progress) {\n tripStore.checkpoint(progress);\n});"
}
],
"journey": {
"title": "A safe offline navigation lifecycle",
"description": "Vehicle integrations must survive power loss, partial updates, and intermittent connectivity.",
"steps": [
{
"title": "Manufacture",
"description": "Bind hardware identity, software edition, and regional entitlement.",
"state": "manufactured",
"event": "device.registered"
},
{
"title": "Activate",
"description": "Verify license and install a compatible signed base package.",
"state": "activated",
"event": "license.activated"
},
{
"title": "Operate",
"description": "Plan and guide locally while checkpointing recoverable trip state.",
"state": "navigating",
"event": "guidance.started"
},
{
"title": "Update",
"description": "Download, verify, stage, atomically switch, and retain rollback data.",
"state": "updating",
"event": "package.staged"
},
{
"title": "Recover",
"description": "Restore the last compatible runtime and resume safely after interruption.",
"state": "recovered",
"event": "runtime.recovered"
}
]
}
}
```
## product · AI & Location
- Identity: `product:ai-location`
- Canonical: https://developer.mappls.com/docs/ai-location
- State model: hybrid
```json
{
"slug": "ai-location",
"name": "AI & Location",
"eyebrow": "Reason over the physical world",
"category": "Intelligence",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"description": "Combine Mappls data and platform operations with models that classify imagery, understand spatial intent, rank places, and orchestrate tools. AI integrations should ground every answer in a typed Mappls operation and expose provenance rather than allowing the model to invent locations or operational state.",
"accent": "#845ef7",
"stateModel": "hybrid",
"platforms": [
"REST",
"Web",
"MCP"
],
"capabilities": [
"Vision and imagery analysis",
"Location-aware retrieval and ranking",
"Natural-language map operations",
"Typed tools for AI agents",
"Spatial workflow orchestration",
"Evaluation and grounding patterns"
],
"repositories": [
"mappls-ai-apis",
"skydnn-aiapi-docs",
"genesis-toolkit",
"mapplsaiwebtesting"
],
"auth": {
"type": "Underlying product credential, held by the tool server",
"guidance": "Never place keys or tokens in model context. Use the exact current or legacy authentication generation required by each underlying product, execute typed policy-checked tools on a trusted server, and redact precise coordinates and credential-bearing URLs from logs."
},
"samples": [
{
"language": "typescript",
"label": "Agent tool contract",
"code": "const nearbyPlacesTool = {\n name: \"mappls_search_nearby\",\n description: \"Find real places near a validated Mappls Pin or coordinate.\",\n inputSchema: {\n type: \"object\",\n required: [\"location\", \"category\"],\n properties: {\n location: { type: \"string\", description: \"Mappls Pin or 'lat,lng'.\" },\n category: { type: \"string\" },\n radiusMeters: { type: \"integer\", minimum: 50, maximum: 10_000 }\n }\n }\n};"
}
]
}
```
## product · Capture & Feedback
- Identity: `product:capture-feedback`
- Canonical: https://developer.mappls.com/docs/capture-feedback
- State model: hybrid
```json
{
"slug": "capture-feedback",
"name": "Capture & Feedback",
"eyebrow": "Keep location truth fresh",
"category": "Data operations",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"description": "Capture a trustworthy position with explicit accuracy and timeout budgets, attach camera or form evidence, and submit map feedback through user-friendly SDK surfaces. This family helps delivery, insurance, survey, compliance, and citizen apps prove where an action happened and improve the map safely.",
"accent": "#1c9c62",
"stateModel": "hybrid",
"platforms": [
"Android",
"iOS"
],
"capabilities": [
"Single-shot and subscribed location",
"Accuracy and timeout policies",
"Camera and field evidence",
"Map issue reporting",
"Reviewable update workflows",
"Battery-aware capture"
],
"repositories": [
"mappls-camera-sdk-android",
"mappls-camera-sdk-ios",
"mappls-location-capture-android-sdk",
"mappls-location-capture-ios-sdk",
"mappls-feedback-kit-ios-distribution",
"mappls-feedback-uikit-ios-distribution"
],
"auth": {
"type": "SDK entitlement and user consent",
"guidance": "Request the minimum device permission needed, retain evidence only for the declared purpose, and make capture policy visible to the user. The repository snapshot documents entitled SDK operations; direct REST access remains selection-required until an authoritative HTTP contract is supplied."
},
"samples": [
{
"language": "swift",
"label": "Capture policy",
"code": "struct CapturePolicy {\n let desiredAccuracyMeters: Double\n let timeoutSeconds: TimeInterval\n let acceptsCachedLocationSeconds: TimeInterval\n}\n\nlet policy = CapturePolicy(\n desiredAccuracyMeters: 25,\n timeoutSeconds: 12,\n acceptsCachedLocationSeconds: 5\n)\n\n// Pass the equivalent policy into the entitled Mappls Location Capture SDK.\n// Always handle permission denial, timeout, and insufficient-accuracy states."
}
]
}
```
## platform · REST
- Identity: `platform:rest`
- Canonical: https://developer.mappls.com/platforms/rest
```json
{
"slug": "rest",
"platform": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack.",
"sourcePlatforms": [
"REST"
],
"architecture": [
{
"title": "Trusted application backend",
"description": "Own credentials, validation, retries, quotas, caching, and response normalization in a service you control."
},
{
"title": "Mappls data plane",
"description": "Call stateless location APIs directly and model long-running jobs or operational resources with durable identifiers."
},
{
"title": "Your product surfaces",
"description": "Expose only the location capabilities and data needed by web, mobile, partner, batch, and automation clients."
}
],
"startHere": [
{
"title": "Choose the narrowest API",
"description": "Start with an endpoint contract and confirm its current host, entitlement, region, and authentication mode."
},
{
"title": "Create a server client",
"description": "Load credentials from a secret manager, set explicit timeouts, and attach a request or trace identifier."
},
{
"title": "Normalize failure behavior",
"description": "Separate invalid requests from quota, authentication, transient service, and transport failures."
},
{
"title": "Add production controls",
"description": "Measure latency and consumption, cache safe reads, back off retryable failures, and redact sensitive data."
}
],
"productionChecks": [
"Credentials never reach a browser or mobile bundle",
"Timeout, retry, and idempotency policies are explicit",
"Coordinates, addresses, and identifiers have data-retention rules",
"Every operation is attributable in logs and usage reporting"
]
}
```
## platform · Web
- Identity: `platform:web`
- Canonical: https://developer.mappls.com/platforms/web
```json
{
"slug": "web",
"platform": "Web",
"headline": "Build expressive browser maps without surrendering performance or control.",
"sourcePlatforms": [
"Web"
],
"architecture": [
{
"title": "Browser experience",
"description": "Render maps, layers, controls, markers, and accessible place or route interactions in the user interface."
},
{
"title": "Restricted public key",
"description": "Use only browser-supported credentials and restrict them to the exact production and development origins."
},
{
"title": "Backend-for-frontend",
"description": "Keep privileged REST calls, secrets, business rules, persistence, and third-party orchestration on your server."
}
],
"startHere": [
{
"title": "Select a rendering surface",
"description": "Choose Web Maps JS for a full map, a plugin for a focused workflow, or a widget when Mappls can own the experience."
},
{
"title": "Create a bounded map",
"description": "Give the container a real size, initialize once, and destroy listeners and instances during unmount."
},
{
"title": "Add one user journey",
"description": "Connect search, selection, route preview, or data visualization before expanding the surface."
},
{
"title": "Measure real devices",
"description": "Profile startup, tile loading, interaction latency, memory, accessibility, and slow-network behavior."
}
],
"productionChecks": [
"Origin restrictions include every deployed hostname",
"Map lifecycle follows the framework lifecycle",
"Large datasets are tiled, clustered, or progressively loaded",
"Keyboard, touch, reduced-motion, and failure states are tested"
]
}
```
## platform · Android
- Identity: `platform:android`
- Canonical: https://developer.mappls.com/platforms/android
```json
{
"slug": "android",
"platform": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline.",
"sourcePlatforms": [
"Android"
],
"architecture": [
{
"title": "Application layer",
"description": "Own permissions, UI state, domain models, navigation between screens, and consent-facing experiences."
},
{
"title": "Mappls SDK modules",
"description": "Install only entitled map, place, route, navigation, tracking, capture, or workforce modules."
},
{
"title": "Secure backend",
"description": "Issue scoped tokens, protect privileged APIs, receive events, and persist durable operational state."
}
],
"startHere": [
{
"title": "Confirm compatibility",
"description": "Pin the SDK release, Android Gradle Plugin, Kotlin, minSdk, targetSdk, and repository requirements together."
},
{
"title": "Configure credentials",
"description": "Use manifest or runtime configuration only as documented and keep server secrets outside the APK."
},
{
"title": "Forward lifecycle",
"description": "Connect the map or navigation view to activity, fragment, process, and saved-state behavior."
},
{
"title": "Test device realities",
"description": "Exercise denied permissions, background limits, process death, offline periods, rotation, and low-memory recovery."
}
],
"productionChecks": [
"Dependency versions are pinned and reproducible",
"Location permission is contextual and revocable",
"Background work complies with current Android policy",
"SDK resources and observers are released deterministically"
]
}
```
## platform · iOS
- Identity: `platform:ios`
- Canonical: https://developer.mappls.com/platforms/ios
```json
{
"slug": "ios",
"platform": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks.",
"sourcePlatforms": [
"iOS"
],
"architecture": [
{
"title": "Swift application",
"description": "Own scenes, permissions, presentation, product state, accessibility, and privacy disclosures."
},
{
"title": "Mappls packages",
"description": "Resolve the smallest map, place, navigation, tracking, capture, or UI module set through the supported package channel."
},
{
"title": "Backend trust boundary",
"description": "Exchange credentials, retain operational records, and perform privileged API calls away from the app binary."
}
],
"startHere": [
{
"title": "Choose package lineage",
"description": "Match the current SDK documentation with its distribution repository and supported Xcode and deployment targets."
},
{
"title": "Initialize once",
"description": "Configure the SDK at the documented application or scene boundary before creating dependent views."
},
{
"title": "Respect ownership",
"description": "Keep delegates, coordinators, subscriptions, and map views alive only for the required lifecycle."
},
{
"title": "Verify on hardware",
"description": "Test permissions, background transitions, interrupted navigation, memory pressure, and poor connectivity on devices."
}
],
"productionChecks": [
"Package and binary versions belong to the same release line",
"Secrets are not recoverable from the app bundle",
"Info.plist purpose strings match actual collection",
"Delegates, observers, and background sessions terminate cleanly"
]
}
```
## platform · React Native
- Identity: `platform:react-native`
- Canonical: https://developer.mappls.com/platforms/react-native
```json
{
"slug": "react-native",
"platform": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms.",
"sourcePlatforms": [
"React Native"
],
"architecture": [
{
"title": "TypeScript interface",
"description": "Expose stable application-level components, hooks, and event types instead of leaking every native implementation detail."
},
{
"title": "Native Mappls bridges",
"description": "Configure Android and iOS independently, including packages, credentials, manifests, permissions, and lifecycle callbacks."
},
{
"title": "Backend services",
"description": "Retain credentials and stateful workflows centrally so app reinstalls and cross-device use remain recoverable."
}
],
"startHere": [
{
"title": "Align the version matrix",
"description": "Confirm React Native, Android, iOS, Mappls wrapper, and underlying native SDK compatibility."
},
{
"title": "Install both native halves",
"description": "Complete Gradle and Xcode configuration before treating the JavaScript API as available."
},
{
"title": "Create a typed boundary",
"description": "Normalize coordinates, feature IDs, commands, callbacks, and errors at the application edge."
},
{
"title": "Test asymmetric failures",
"description": "Verify upgrades, permissions, backgrounding, and process recovery independently on Android and iOS."
}
],
"productionChecks": [
"Native and wrapper releases are compatible",
"High-frequency events are throttled before crossing the bridge",
"Unmount releases native views and listeners",
"Platform-specific behavior is documented, not hidden"
]
}
```
## platform · Flutter
- Identity: `platform:flutter`
- Canonical: https://developer.mappls.com/platforms/flutter
```json
{
"slug": "flutter",
"platform": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath.",
"sourcePlatforms": [
"Flutter"
],
"architecture": [
{
"title": "Dart feature layer",
"description": "Own widgets, application state, typed models, and platform-neutral business behavior."
},
{
"title": "Flutter platform plugin",
"description": "Bridge map rendering and native capabilities to correctly configured Android and iOS SDKs."
},
{
"title": "Trusted backend",
"description": "Issue scoped credentials and own privileged calls, persistence, events, and operational workflows."
}
],
"startHere": [
{
"title": "Pin the plugin",
"description": "Match Flutter, Dart, Android, iOS, and Mappls plugin requirements before resolving dependencies."
},
{
"title": "Configure native projects",
"description": "Apply repository, manifest, Info.plist, package, and credential steps on both platforms."
},
{
"title": "Build a lifecycle-safe widget",
"description": "Create controllers once, await readiness, and dispose streams and native resources."
},
{
"title": "Exercise release builds",
"description": "Test shrinking, signing, permissions, backgrounding, and platform-view performance outside debug mode."
}
],
"productionChecks": [
"Android and iOS configuration is version-controlled",
"Controllers are used only after readiness",
"Streams and platform views are disposed",
"Release builds are tested on physical devices"
]
}
```
## platform · Cordova
- Identity: `platform:cordova`
- Canonical: https://developer.mappls.com/platforms/cordova
```json
{
"slug": "cordova",
"platform": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path.",
"sourcePlatforms": [
"Cordova/Ionic"
],
"architecture": [
{
"title": "Web application shell",
"description": "Own navigation, UI, business state, and a narrow JavaScript interface to mapping capabilities."
},
{
"title": "Cordova native plugin",
"description": "Bridge platform permissions, lifecycle, SDK calls, and callbacks across Android and iOS."
},
{
"title": "Compatibility envelope",
"description": "Pin every toolchain and plugin dependency while planning replacement of unsupported components."
}
],
"startHere": [
{
"title": "Classify the estate",
"description": "Record Cordova, Ionic, plugin, Android, iOS, and Mappls versions plus current release constraints."
},
{
"title": "Reproduce the build",
"description": "Lock dependencies and prove a clean signed build before adding new location behavior."
},
{
"title": "Constrain the bridge",
"description": "Keep commands and callbacks small, typed, serializable, and resilient to view recreation."
},
{
"title": "Design migration seams",
"description": "Separate application state from plugin calls so the UI or native host can be replaced incrementally."
}
],
"productionChecks": [
"Supported status is verified before new development",
"Toolchain and plugin versions are frozen",
"Bridge inputs are validated and bounded",
"A tested migration and rollback path exists"
]
}
```
## platform · Xamarin
- Identity: `platform:xamarin`
- Canonical: https://developer.mappls.com/platforms/xamarin
```json
{
"slug": "xamarin",
"platform": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior.",
"sourcePlatforms": [
"Xamarin/.NET"
],
"architecture": [
{
"title": "Shared .NET domain layer",
"description": "Retain portable models, workflows, persistence interfaces, and tests independent of the UI framework."
},
{
"title": "Platform SDK adapters",
"description": "Isolate Android and iOS Mappls bindings, lifecycle, permissions, and rendering behind explicit interfaces."
},
{
"title": "Migration target",
"description": "Move screens or features toward a supported .NET or native stack while preserving contract tests."
}
],
"startHere": [
{
"title": "Inventory dependencies",
"description": "Capture NuGet packages, native bindings, SDK binaries, build hosts, signing, and entitlement state."
},
{
"title": "Freeze observable behavior",
"description": "Add tests around coordinate conversion, search, routes, state restoration, and native callbacks."
},
{
"title": "Extract adapters",
"description": "Move Mappls-specific calls behind interfaces that a replacement platform can implement."
},
{
"title": "Migrate by journey",
"description": "Move complete user journeys, validate parity, then retire the corresponding legacy surface."
}
],
"productionChecks": [
"The support and security posture is documented",
"Build inputs can be reproduced",
"Native resources have deterministic ownership",
"Migration parity is measured with journey-level tests"
]
}
```
## platform · Linux
- Identity: `platform:linux`
- Canonical: https://developer.mappls.com/platforms/linux
```json
{
"slug": "linux",
"platform": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems.",
"sourcePlatforms": [
"Linux/Embedded"
],
"architecture": [
{
"title": "Device application",
"description": "Own process supervision, UI or service behavior, hardware integration, storage, and observability."
},
{
"title": "Mappls native runtime",
"description": "Load entitled libraries and compatible map or routing data for the target architecture."
},
{
"title": "Provisioning and updates",
"description": "Activate devices, stage signed artifacts, switch versions atomically, and preserve rollback state."
}
],
"startHere": [
{
"title": "Define the target",
"description": "Record architecture, ABI, libc, graphics stack, storage, memory, sensors, and connectivity constraints."
},
{
"title": "Validate the bundle",
"description": "Match runtime, compiler, data format, license, and device activation before application integration."
},
{
"title": "Build a supervised lifecycle",
"description": "Handle startup, health, corrupted data, expired activation, resource pressure, and clean shutdown."
},
{
"title": "Prove field updates",
"description": "Test resumable download, signature verification, atomic switch, rollback, and power interruption."
}
],
"productionChecks": [
"Runtime and data compatibility is enforced",
"Device identity and activation can be rotated",
"Updates are signed, resumable, and reversible",
"Health and resource telemetry survive application restarts"
]
}
```
## platform · Automotive
- Identity: `platform:automotive`
- Canonical: https://developer.mappls.com/platforms/automotive
```json
{
"slug": "automotive",
"platform": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen.",
"sourcePlatforms": [
"Automotive",
"Linux/Embedded"
],
"architecture": [
{
"title": "Vehicle integration layer",
"description": "Own GNSS and sensor fusion inputs, vehicle signals, audio, displays, policy, and driver-distraction constraints."
},
{
"title": "Navigation runtime",
"description": "Plan, guide, reroute, search, match position, and operate with the installed online or offline data."
},
{
"title": "Fleet control plane",
"description": "Manage activation, entitlements, staged releases, map data, telemetry, incidents, and rollback across device cohorts."
}
],
"startHere": [
{
"title": "Specify the operating envelope",
"description": "Define platforms, displays, controls, vehicle signals, offline duration, regions, languages, and safety constraints."
},
{
"title": "Integrate simulation first",
"description": "Feed deterministic routes, GNSS traces, deviations, tunnels, and failures before vehicle testing."
},
{
"title": "Model navigation state",
"description": "Make route planning, preview, guidance, reroute, arrival, pause, and termination explicit and recoverable."
},
{
"title": "Qualify the release system",
"description": "Validate runtime, map data, configuration, activation, cohort rollout, health signals, and rollback together."
}
],
"productionChecks": [
"Driver-distraction and safety requirements are testable",
"Navigation recovers after power and connectivity loss",
"Runtime and map data roll out as a compatible unit",
"Simulation and road-test evidence cover full journeys"
]
}
```
## platform · Widgets
- Identity: `platform:widgets`
- Canonical: https://developer.mappls.com/platforms/widgets
```json
{
"slug": "widgets",
"platform": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate.",
"sourcePlatforms": [
"Widgets/Deep links",
"Web"
],
"includeKinds": [
"Widget"
],
"architecture": [
{
"title": "Host product",
"description": "Own placement, surrounding content, consent, identity, and the moment the embedded experience begins or ends."
},
{
"title": "Mappls widget",
"description": "Own the focused place, route, feedback, geofence, visualization, or immersive interaction."
},
{
"title": "Event and fallback layer",
"description": "Capture supported callbacks, provide a useful no-script or blocked-embed path, and keep business state outside the widget."
}
],
"startHere": [
{
"title": "Select the owned journey",
"description": "Choose a widget when its complete supported interaction matches the outcome you need."
},
{
"title": "Define the container",
"description": "Set responsive dimensions, loading UI, accessibility context, content policy, and failure behavior."
},
{
"title": "Pass minimal context",
"description": "Provide only documented identifiers, locations, configuration, and callbacks—never privileged credentials."
},
{
"title": "Test hand-offs",
"description": "Verify completion, cancellation, back navigation, app opening, blocked content, and small-screen behavior."
}
],
"productionChecks": [
"Embedding and content-security policies permit only required origins",
"No sensitive business state lives only inside the widget",
"Loading, failure, and unsupported-browser fallbacks exist",
"Analytics distinguish view, engagement, completion, and hand-off"
]
}
```
## platform · Deep links
- Identity: `platform:deep-links`
- Canonical: https://developer.mappls.com/platforms/deep-links
```json
{
"slug": "deep-links",
"platform": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement.",
"sourcePlatforms": [
"Widgets/Deep links"
],
"includeKinds": [
"Deep link"
],
"architecture": [
{
"title": "Link producer",
"description": "Create documented Mappls URLs from trusted place, Mappls Pin, destination, or route context."
},
{
"title": "Universal hand-off",
"description": "Let the operating system open the Mappls app when available and a useful web experience otherwise."
},
{
"title": "Campaign measurement",
"description": "Track link placement and downstream business outcomes without putting private data into the URL."
}
],
"startHere": [
{
"title": "Choose the destination type",
"description": "Use a place, map, directions, navigation, or other documented link shape for one clear intent."
},
{
"title": "Encode from structured data",
"description": "Build and validate URL components with a URL library instead of concatenating user input."
},
{
"title": "Provide visible context",
"description": "Tell users what opens, show the destination in human-readable form, and preserve a copyable fallback."
},
{
"title": "Test every channel",
"description": "Verify installed and uninstalled states across mobile browsers, messaging, email, QR, desktop, and in-app webviews."
}
],
"productionChecks": [
"User or confidential data never appears in query parameters",
"All variable values are encoded and length-bounded",
"App and browser fallbacks reach the same intent",
"Redirect and campaign domains are allow-listed and monitored"
]
}
```
## platform · MCP
- Identity: `platform:mcp`
- Canonical: https://developer.mappls.com/platforms/mcp
```json
{
"slug": "mcp",
"platform": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control.",
"sourcePlatforms": [
"AI/MCP"
],
"architecture": [
{
"title": "AI host",
"description": "Plan user intent, request tool calls, present approvals, and keep generated text separate from authoritative results."
},
{
"title": "Mappls MCP boundary",
"description": "Advertise narrow schemas, validate arguments, enforce policy, call supported Mappls services, and return provenance."
},
{
"title": "Credential and audit plane",
"description": "Scope credentials by tenant and tool, redact logs, meter usage, trace calls, and support revocation."
}
],
"startHere": [
{
"title": "Start read-only",
"description": "Expose discovery, search, route, and documentation tools before any command that changes durable state."
},
{
"title": "Constrain every schema",
"description": "Use enums, bounds, required fields, coordinate validation, result limits, and explicit units."
},
{
"title": "Separate plan from effect",
"description": "Preview stateful commands, require approval, attach idempotency, and return the created resource identifier."
},
{
"title": "Evaluate adversarially",
"description": "Test prompt injection, secret requests, confused-deputy access, fabricated APIs, retries, and partial failure."
}
],
"productionChecks": [
"Tools expose the least authority needed",
"State-changing calls require explicit policy and approval",
"Responses identify source, freshness, and uncertainty",
"Every tool call is tenant-scoped, metered, redacted, and traceable"
]
}
```
## quickstart · Your first trusted Mappls request
- Identity: `quickstart:rest-api`
- Canonical: https://developer.mappls.com/quickstart/rest-api
```json
{
"slug": "rest-api",
"platform": "REST",
"title": "Your first trusted Mappls request",
"outcome": "a validated autosuggest result from a credential-safe server boundary",
"duration": "15 minutes",
"readiness": "public-source",
"sourceGuideSlugs": [
"mappls-rest-apis"
],
"credentialBoundary": "Load the current restricted static key only inside the trusted process. Legacy OAuth and InTouch bearer credentials are separate generations and must never be mixed by inference.",
"evidenceBoundary": "The public REST repository and normalized operation are repository evidence; the issued account remains authoritative for host, auth generation, quota, and region.",
"prerequisites": [
"Node.js 20 or newer",
"A Mappls project and restricted non-production server key",
"An approved region and one autosuggest test query",
"Request logging configured to omit URLs containing key query parameters"
],
"configure": "Install the local trusted-server SDK, load credentials from the process environment or secret manager, set an explicit timeout, and expose a narrow application endpoint that accepts only bounded query and region fields.",
"build": "Call autosuggest through the SDK adapter, preserve Mappls Pin and provider request identity, and return a small normalized candidate model instead of the entire provider body.",
"exercise": "Run the server in a non-production environment, submit one deterministic query, then repeat with an invalid region, timeout, and missing credential.",
"platformProof": "The successful response retains a Mappls place identity and the failure response is typed and redacted.",
"platformFailure": {
"signal": "A request succeeds locally but its key appears in proxy traces",
"likelyCause": "The current key uses a query transport and an intermediary records full URLs.",
"nextAction": "Disable query-string logging, restrict the key to server egress, redact telemetry, and rotate any exposed credential before continuing."
},
"runCommands": [
"npm install",
"MAPPLS_STATIC_KEY=YOUR_RESTRICTED_KEY npm run dev",
"npm test"
],
"samples": [
{
"language": "typescript",
"label": "Trusted autosuggest boundary",
"code": "import { createMapplsClientFromEnvironment } from \"@mappls/server-sdk\";\n\nconst mappls = createMapplsClientFromEnvironment();\n\nexport async function suggest(query: string, requestId: string) {\n if (query.trim().length < 2 || query.length > 120) throw new Error(\"invalid_query\");\n const result = await mappls.autosuggest({ query, region: \"IND\" });\n return { requestId, result }; // SDK owns auth, timeout, retry, and redaction.\n}"
}
],
"nextTutorialSlugs": [
"rest-geocode-service",
"address-autocomplete",
"oauth-server-integration"
],
"productionChecks": [
"Credential restriction and URL-log redaction are proven",
"Timeout and bounded retry are explicit",
"Inputs and result sizes are bounded",
"Provider request identity is observable without response bodies"
],
"steps": [
{
"title": "Confirm the source line",
"instruction": "Open the linked evidence and confirm the exact REST package, endpoint, toolchain, region, and account entitlement before installing anything. The public REST repository and normalized operation are repository evidence; the issued account remains authoritative for host, auth generation, quota, and region.",
"proof": "Record the guide slug, source fingerprint, selected version or contract generation, and approving owner in the project README."
},
{
"title": "Create a clean boundary",
"instruction": "Install the local trusted-server SDK, load credentials from the process environment or secret manager, set an explicit timeout, and expose a narrow application endpoint that accepts only bounded query and region fields.",
"proof": "A clean checkout resolves dependencies and configuration without a credential in source, generated assets, logs, or screenshots."
},
{
"title": "Build one useful result",
"instruction": "Call autosuggest through the SDK adapter, preserve Mappls Pin and provider request identity, and return a small normalized candidate model instead of the entire provider body.",
"proof": "The application produces the stated outcome—a validated autosuggest result from a credential-safe server boundary—through one application-owned interface."
},
{
"title": "Run the release path",
"instruction": "Run the server in a non-production environment, submit one deterministic query, then repeat with an invalid region, timeout, and missing credential.",
"proof": "The documented command or platform release workflow succeeds from a clean environment, not only an already-configured IDE or debug session."
},
{
"title": "Break it deliberately",
"instruction": "Exercise missing/denied credentials, unavailable network or runtime, invalid input, cancellation, and cleanup. Show a bounded user-safe failure while retaining a correlation identity for support.",
"proof": "The failure plan is automated or captured as repeatable evidence, and no fixture behavior is represented as live Mappls data."
}
],
"verification": [
"The successful response retains a Mappls place identity and the failure response is typed and redacted.",
"A blocked, missing, or unentitled provider produces a useful explicit failure rather than a blank surface or fabricated result.",
"No server credential, bearer value, precise private fixture, or provider response body appears in client bundles, logs, screenshots, or test artifacts.",
"Resources, listeners, sessions, processes, or requests stop cleanly when the owning screen, request, or application ends."
],
"debugging": [
{
"signal": "A request succeeds locally but its key appears in proxy traces",
"likelyCause": "The current key uses a query transport and an intermediary records full URLs.",
"nextAction": "Disable query-string logging, restrict the key to server egress, redact telemetry, and rotate any exposed credential before continuing."
},
{
"signal": "Authentication or entitlement is rejected",
"likelyCause": "The credential class, restriction, account region, host/path generation, package application, or subscribed capability does not match.",
"nextAction": "Do not try another credential shape blindly. Capture the safe status/request identity and reconcile the exact contract in the developer console or support packet."
},
{
"signal": "The sample works once but not after reload, backgrounding, or a second run",
"likelyCause": "Lifecycle ownership, listener disposal, token/session refresh, saved state, or a singleton initialization boundary is incomplete.",
"nextAction": "Instrument create/ready/cancel/destroy transitions and prove one owner before adding product behavior."
}
]
}
```
## quickstart · Render one accessible web map
- Identity: `quickstart:web-map`
- Canonical: https://developer.mappls.com/quickstart/web-map
```json
{
"slug": "web-map",
"platform": "Web",
"title": "Render one accessible web map",
"outcome": "a responsive map and text-synchronized selected place",
"duration": "15 minutes",
"readiness": "public-source",
"sourceGuideSlugs": [
"mappls-web-maps",
"mappls-web-maps-js"
],
"credentialBoundary": "Use only the browser-supported public key restricted to exact origins. Privileged REST credentials stay on a backend-for-frontend.",
"evidenceBoundary": "The selected Web Maps source contains current and sample evidence; confirm the script/package line and allowed origin against the target project.",
"prerequisites": [
"A static HTML or framework application",
"An exact localhost origin",
"A domain-restricted browser key",
"A visible fallback container and selected-place text region"
],
"configure": "Give the map host an explicit size, load the confirmed Web Maps distribution once, and wrap its ready/error/destroy lifecycle behind one application module.",
"build": "Render a fixture location, mirror its durable ID and label outside the canvas, and make selection reachable without relying on pointer input or color alone.",
"exercise": "Serve the page over localhost, test keyboard and touch, throttle the network, block the SDK request, and navigate away/back twice.",
"platformProof": "Map, text fallback, and selected identity stay synchronized at mobile and desktop widths.",
"platformFailure": {
"signal": "The map is blank while no provider error is visible",
"likelyCause": "The host has zero height, the script was blocked, the origin is not allowed, or initialization ran before the DOM existed.",
"nextAction": "Inspect host dimensions and script/network status, surface the load error beside the text fallback, and initialize exactly once after mount."
},
"runCommands": [
"npm install",
"npm run dev",
"npm run build"
],
"samples": [
{
"language": "html",
"label": "Lifecycle-owned map host",
"code": "\n
Store location
\n \n
Selected: fixture-store
\n\n"
}
],
"nextTutorialSlugs": [
"first-web-map",
"address-autocomplete",
"route-preview"
],
"productionChecks": [
"Exact origins are restricted",
"Canvas behavior has an accessible text equivalent",
"Slow/offline states are useful",
"Listeners and workers are destroyed on unmount"
],
"steps": [
{
"title": "Confirm the source line",
"instruction": "Open the linked evidence and confirm the exact Web package, endpoint, toolchain, region, and account entitlement before installing anything. The selected Web Maps source contains current and sample evidence; confirm the script/package line and allowed origin against the target project.",
"proof": "Record the guide slug, source fingerprint, selected version or contract generation, and approving owner in the project README."
},
{
"title": "Create a clean boundary",
"instruction": "Give the map host an explicit size, load the confirmed Web Maps distribution once, and wrap its ready/error/destroy lifecycle behind one application module.",
"proof": "A clean checkout resolves dependencies and configuration without a credential in source, generated assets, logs, or screenshots."
},
{
"title": "Build one useful result",
"instruction": "Render a fixture location, mirror its durable ID and label outside the canvas, and make selection reachable without relying on pointer input or color alone.",
"proof": "The application produces the stated outcome—a responsive map and text-synchronized selected place—through one application-owned interface."
},
{
"title": "Run the release path",
"instruction": "Serve the page over localhost, test keyboard and touch, throttle the network, block the SDK request, and navigate away/back twice.",
"proof": "The documented command or platform release workflow succeeds from a clean environment, not only an already-configured IDE or debug session."
},
{
"title": "Break it deliberately",
"instruction": "Exercise missing/denied credentials, unavailable network or runtime, invalid input, cancellation, and cleanup. Show a bounded user-safe failure while retaining a correlation identity for support.",
"proof": "The failure plan is automated or captured as repeatable evidence, and no fixture behavior is represented as live Mappls data."
}
],
"verification": [
"Map, text fallback, and selected identity stay synchronized at mobile and desktop widths.",
"A blocked, missing, or unentitled provider produces a useful explicit failure rather than a blank surface or fabricated result.",
"No server credential, bearer value, precise private fixture, or provider response body appears in client bundles, logs, screenshots, or test artifacts.",
"Resources, listeners, sessions, processes, or requests stop cleanly when the owning screen, request, or application ends."
],
"debugging": [
{
"signal": "The map is blank while no provider error is visible",
"likelyCause": "The host has zero height, the script was blocked, the origin is not allowed, or initialization ran before the DOM existed.",
"nextAction": "Inspect host dimensions and script/network status, surface the load error beside the text fallback, and initialize exactly once after mount."
},
{
"signal": "Authentication or entitlement is rejected",
"likelyCause": "The credential class, restriction, account region, host/path generation, package application, or subscribed capability does not match.",
"nextAction": "Do not try another credential shape blindly. Capture the safe status/request identity and reconcile the exact contract in the developer console or support packet."
},
{
"signal": "The sample works once but not after reload, backgrounding, or a second run",
"likelyCause": "Lifecycle ownership, listener disposal, token/session refresh, saved state, or a singleton initialization boundary is incomplete.",
"nextAction": "Instrument create/ready/cancel/destroy transitions and prove one owner before adding product behavior."
}
]
}
```
## quickstart · Create a lifecycle-safe Android map
- Identity: `quickstart:android-native`
- Canonical: https://developer.mappls.com/quickstart/android-native
```json
{
"slug": "android-native",
"platform": "Android",
"title": "Create a lifecycle-safe Android map",
"outcome": "a native map screen that survives recreation and permission denial",
"duration": "25 minutes",
"readiness": "public-source",
"sourceGuideSlugs": [
"mappls-android-sdk",
"mappls-android-compose-demo"
],
"credentialBoundary": "Use only the documented Android credential configuration restricted to the package and signing identity. Server credentials never belong in the APK.",
"evidenceBoundary": "The public repositories are sample-classified evidence; confirm Maven coordinates, BoM, AGP/Kotlin, min/target SDK, and supported release with Mappls.",
"prerequisites": [
"Android Studio and a clean Kotlin app",
"Confirmed AGP, Kotlin, minSdk, and targetSdk matrix",
"A package/signature-restricted non-production key",
"At least one physical device for release validation"
],
"configure": "Pin the approved SDK and native build matrix, initialize at the documented application boundary, and keep map/view references owned by one Activity, Fragment, or Compose wrapper.",
"build": "Render a map without requiring location permission; add an explicit user action that requests location and represents denied, approximate, stale, and unavailable fixes separately.",
"exercise": "Build a release variant, rotate, background, revoke permission, enable battery saver, trigger process death, and reopen the screen.",
"platformProof": "Camera/selection state restores intentionally and no map listener or location request survives the owning lifecycle.",
"platformFailure": {
"signal": "Debug works but release crashes or renders nothing",
"likelyCause": "Repository, dependency, shrinker, manifest, signing restriction, architecture, or resource configuration differs in release.",
"nextAction": "Resolve the release dependency graph, inspect merged manifest/resources, verify signing identity and restrictions, and test the smallest release screen on hardware."
},
"runCommands": [
"./gradlew dependencies",
"./gradlew assembleDebug",
"./gradlew assembleRelease",
"./gradlew test"
],
"samples": [
{
"language": "kotlin",
"label": "Application-owned map contract",
"code": "data class CameraState(val latitude: Double, val longitude: Double, val zoom: Double)\n\ninterface MapSurface {\n suspend fun attach(saved: CameraState?)\n fun showPlace(id: String, latitude: Double, longitude: Double)\n fun save(): CameraState\n fun detach()\n}\n\n// Keep SDK classes inside the confirmed adapter; the ViewModel owns only this contract."
}
],
"nextTutorialSlugs": [
"android-map",
"workmate-task-lifecycle"
],
"productionChecks": [
"Release dependency matrix is reproducible",
"Permission denial is a complete state",
"Process recreation is tested",
"Native resources detach deterministically"
],
"steps": [
{
"title": "Confirm the source line",
"instruction": "Open the linked evidence and confirm the exact Android package, endpoint, toolchain, region, and account entitlement before installing anything. The public repositories are sample-classified evidence; confirm Maven coordinates, BoM, AGP/Kotlin, min/target SDK, and supported release with Mappls.",
"proof": "Record the guide slug, source fingerprint, selected version or contract generation, and approving owner in the project README."
},
{
"title": "Create a clean boundary",
"instruction": "Pin the approved SDK and native build matrix, initialize at the documented application boundary, and keep map/view references owned by one Activity, Fragment, or Compose wrapper.",
"proof": "A clean checkout resolves dependencies and configuration without a credential in source, generated assets, logs, or screenshots."
},
{
"title": "Build one useful result",
"instruction": "Render a map without requiring location permission; add an explicit user action that requests location and represents denied, approximate, stale, and unavailable fixes separately.",
"proof": "The application produces the stated outcome—a native map screen that survives recreation and permission denial—through one application-owned interface."
},
{
"title": "Run the release path",
"instruction": "Build a release variant, rotate, background, revoke permission, enable battery saver, trigger process death, and reopen the screen.",
"proof": "The documented command or platform release workflow succeeds from a clean environment, not only an already-configured IDE or debug session."
},
{
"title": "Break it deliberately",
"instruction": "Exercise missing/denied credentials, unavailable network or runtime, invalid input, cancellation, and cleanup. Show a bounded user-safe failure while retaining a correlation identity for support.",
"proof": "The failure plan is automated or captured as repeatable evidence, and no fixture behavior is represented as live Mappls data."
}
],
"verification": [
"Camera/selection state restores intentionally and no map listener or location request survives the owning lifecycle.",
"A blocked, missing, or unentitled provider produces a useful explicit failure rather than a blank surface or fabricated result.",
"No server credential, bearer value, precise private fixture, or provider response body appears in client bundles, logs, screenshots, or test artifacts.",
"Resources, listeners, sessions, processes, or requests stop cleanly when the owning screen, request, or application ends."
],
"debugging": [
{
"signal": "Debug works but release crashes or renders nothing",
"likelyCause": "Repository, dependency, shrinker, manifest, signing restriction, architecture, or resource configuration differs in release.",
"nextAction": "Resolve the release dependency graph, inspect merged manifest/resources, verify signing identity and restrictions, and test the smallest release screen on hardware."
},
{
"signal": "Authentication or entitlement is rejected",
"likelyCause": "The credential class, restriction, account region, host/path generation, package application, or subscribed capability does not match.",
"nextAction": "Do not try another credential shape blindly. Capture the safe status/request identity and reconcile the exact contract in the developer console or support packet."
},
{
"signal": "The sample works once but not after reload, backgrounding, or a second run",
"likelyCause": "Lifecycle ownership, listener disposal, token/session refresh, saved state, or a singleton initialization boundary is incomplete.",
"nextAction": "Instrument create/ready/cancel/destroy transitions and prove one owner before adding product behavior."
}
]
}
```
## quickstart · Create a lifecycle-safe iOS map
- Identity: `quickstart:ios-native`
- Canonical: https://developer.mappls.com/quickstart/ios-native
```json
{
"slug": "ios-native",
"platform": "iOS",
"title": "Create a lifecycle-safe iOS map",
"outcome": "a native Swift map feature with explicit package and view ownership",
"duration": "25 minutes",
"readiness": "public-source",
"sourceGuideSlugs": [
"mappls-map-ios-distribution",
"mappls-api-kit-ios-distribution"
],
"credentialBoundary": "Use only the documented app credential restricted to the bundle/team context. Keep server secrets and privileged exchanges outside the application bundle.",
"evidenceBoundary": "Public distribution repositories identify candidate package lines, not a universal version matrix. Confirm SwiftPM products, binary checksums, Xcode/Swift, deployment target, and extension compatibility together.",
"prerequisites": [
"A clean Swift application",
"Confirmed Xcode, Swift, deployment target, and package line",
"A bundle-restricted non-production app credential",
"An iPhone or iPad for release and lifecycle tests"
],
"configure": "Resolve the approved Swift packages and checksums, initialize once at the documented app/scene boundary, and inject an application-owned provider protocol into the feature.",
"build": "Present one map or place result on the main actor, keep delegates/subscriptions owned by the view model or coordinator, and offer search/manual interaction when location is denied.",
"exercise": "Resolve packages from a clean clone, archive a release build, present/dismiss repeatedly, background/foreground, change permission, and trigger memory pressure.",
"platformProof": "The selected place survives intended scene restoration and released views retain no delegates, observers, tasks, or background sessions.",
"platformFailure": {
"signal": "SwiftPM resolves but archive or launch fails",
"likelyCause": "Package/binary release lines, deployment target, architecture, privacy manifest, or dependent extensions are incompatible.",
"nextAction": "Inspect Package.resolved and archive linkage, verify checksums and platform slices, then confirm the complete package matrix with the owning product guide."
},
"runCommands": [
"xcodebuild -resolvePackageDependencies",
"xcodebuild -list",
"xcodebuild test -scheme YOUR_SCHEME"
],
"samples": [
{
"language": "swift",
"label": "SwiftUI-safe provider seam",
"code": "struct Place: Equatable, Sendable { let id: String; let label: String }\n\nprotocol PlacesProviding: Sendable {\n func search(_ query: String) async throws -> [Place]\n}\n\n@MainActor final class PlacesModel: ObservableObject {\n @Published private(set) var places: [Place] = []\n private let provider: any PlacesProviding\n init(provider: any PlacesProviding) { self.provider = provider }\n func submit(_ query: String) async throws { places = try await provider.search(query) }\n}"
}
],
"nextTutorialSlugs": [
"ios-map"
],
"productionChecks": [
"Package/binary lines are compatible",
"Privacy declarations match behavior",
"Main-actor and scene ownership are explicit",
"Release archives are hardware-tested"
],
"steps": [
{
"title": "Confirm the source line",
"instruction": "Open the linked evidence and confirm the exact iOS package, endpoint, toolchain, region, and account entitlement before installing anything. Public distribution repositories identify candidate package lines, not a universal version matrix. Confirm SwiftPM products, binary checksums, Xcode/Swift, deployment target, and extension compatibility together.",
"proof": "Record the guide slug, source fingerprint, selected version or contract generation, and approving owner in the project README."
},
{
"title": "Create a clean boundary",
"instruction": "Resolve the approved Swift packages and checksums, initialize once at the documented app/scene boundary, and inject an application-owned provider protocol into the feature.",
"proof": "A clean checkout resolves dependencies and configuration without a credential in source, generated assets, logs, or screenshots."
},
{
"title": "Build one useful result",
"instruction": "Present one map or place result on the main actor, keep delegates/subscriptions owned by the view model or coordinator, and offer search/manual interaction when location is denied.",
"proof": "The application produces the stated outcome—a native swift map feature with explicit package and view ownership—through one application-owned interface."
},
{
"title": "Run the release path",
"instruction": "Resolve packages from a clean clone, archive a release build, present/dismiss repeatedly, background/foreground, change permission, and trigger memory pressure.",
"proof": "The documented command or platform release workflow succeeds from a clean environment, not only an already-configured IDE or debug session."
},
{
"title": "Break it deliberately",
"instruction": "Exercise missing/denied credentials, unavailable network or runtime, invalid input, cancellation, and cleanup. Show a bounded user-safe failure while retaining a correlation identity for support.",
"proof": "The failure plan is automated or captured as repeatable evidence, and no fixture behavior is represented as live Mappls data."
}
],
"verification": [
"The selected place survives intended scene restoration and released views retain no delegates, observers, tasks, or background sessions.",
"A blocked, missing, or unentitled provider produces a useful explicit failure rather than a blank surface or fabricated result.",
"No server credential, bearer value, precise private fixture, or provider response body appears in client bundles, logs, screenshots, or test artifacts.",
"Resources, listeners, sessions, processes, or requests stop cleanly when the owning screen, request, or application ends."
],
"debugging": [
{
"signal": "SwiftPM resolves but archive or launch fails",
"likelyCause": "Package/binary release lines, deployment target, architecture, privacy manifest, or dependent extensions are incompatible.",
"nextAction": "Inspect Package.resolved and archive linkage, verify checksums and platform slices, then confirm the complete package matrix with the owning product guide."
},
{
"signal": "Authentication or entitlement is rejected",
"likelyCause": "The credential class, restriction, account region, host/path generation, package application, or subscribed capability does not match.",
"nextAction": "Do not try another credential shape blindly. Capture the safe status/request identity and reconcile the exact contract in the developer console or support packet."
},
{
"signal": "The sample works once but not after reload, backgrounding, or a second run",
"likelyCause": "Lifecycle ownership, listener disposal, token/session refresh, saved state, or a singleton initialization boundary is incomplete.",
"nextAction": "Instrument create/ready/cancel/destroy transitions and prove one owner before adding product behavior."
}
]
}
```
## quickstart · Bridge one map feature across Android and iOS
- Identity: `quickstart:react-native-map`
- Canonical: https://developer.mappls.com/quickstart/react-native-map
```json
{
"slug": "react-native-map",
"platform": "React Native",
"title": "Bridge one map feature across Android and iOS",
"outcome": "a typed shared map feature with separately verified native halves",
"duration": "30 minutes",
"readiness": "public-source",
"sourceGuideSlugs": [
"mappls-react-native-sdk"
],
"credentialBoundary": "Configure Android and iOS app credentials independently and keep privileged calls on a backend. JavaScript configuration is not a secret store.",
"evidenceBoundary": "The public wrapper is sample-classified. Confirm React Native, wrapper, New Architecture status, Gradle/Kotlin, Xcode/Swift, and underlying native Mappls versions as one release unit.",
"prerequisites": [
"A clean React Native TypeScript app",
"Approved wrapper/native version matrix",
"Separate restricted Android and iOS app credentials",
"Physical Android and iOS devices"
],
"configure": "Complete both native project setups before importing the JavaScript component, then normalize camera, feature identity, readiness, errors, and cleanup behind a typed application wrapper.",
"build": "Render one selected place, throttle high-frequency camera events, and retain an unsubscribe handle for every native subscription.",
"exercise": "Build both release variants, mount/unmount repeatedly, background and restore, rotate Android, pressure iOS memory, and deny permissions independently.",
"platformProof": "Android and iOS return the same application-level selected ID while platform-specific failures remain visible and attributable.",
"platformFailure": {
"signal": "One platform works while the other reports missing native view/module",
"likelyCause": "Only one native project, dependency graph, architecture mode, autolinking step, credential restriction, or build cache is correct.",
"nextAction": "Treat each platform as its own build: inspect resolved native dependencies and registration, clean only scoped build output, and prove the native example before the shared wrapper."
},
"runCommands": [
"npm install",
"npm run android",
"npm run ios",
"npm test"
],
"samples": [
{
"language": "typescript",
"label": "Typed native map port",
"code": "export type Camera = { center: [number, number]; zoom: number };\nexport type MapEvent = { type: \"ready\" } | { type: \"camera\"; value: Camera } | { type: \"error\"; code: string };\n\nexport interface NativeMapPort {\n configure(styleId: string): Promise;\n showPlace(place: { id: string; coordinate: [number, number] }): Promise;\n subscribe(listener: (event: MapEvent) => void): () => void;\n dispose(): Promise;\n}"
}
],
"nextTutorialSlugs": [
"react-native-map"
],
"productionChecks": [
"Wrapper/native matrix is pinned",
"Both release builds are proven",
"Bridge traffic is bounded",
"Unmount disposes every native resource"
],
"steps": [
{
"title": "Confirm the source line",
"instruction": "Open the linked evidence and confirm the exact React Native package, endpoint, toolchain, region, and account entitlement before installing anything. The public wrapper is sample-classified. Confirm React Native, wrapper, New Architecture status, Gradle/Kotlin, Xcode/Swift, and underlying native Mappls versions as one release unit.",
"proof": "Record the guide slug, source fingerprint, selected version or contract generation, and approving owner in the project README."
},
{
"title": "Create a clean boundary",
"instruction": "Complete both native project setups before importing the JavaScript component, then normalize camera, feature identity, readiness, errors, and cleanup behind a typed application wrapper.",
"proof": "A clean checkout resolves dependencies and configuration without a credential in source, generated assets, logs, or screenshots."
},
{
"title": "Build one useful result",
"instruction": "Render one selected place, throttle high-frequency camera events, and retain an unsubscribe handle for every native subscription.",
"proof": "The application produces the stated outcome—a typed shared map feature with separately verified native halves—through one application-owned interface."
},
{
"title": "Run the release path",
"instruction": "Build both release variants, mount/unmount repeatedly, background and restore, rotate Android, pressure iOS memory, and deny permissions independently.",
"proof": "The documented command or platform release workflow succeeds from a clean environment, not only an already-configured IDE or debug session."
},
{
"title": "Break it deliberately",
"instruction": "Exercise missing/denied credentials, unavailable network or runtime, invalid input, cancellation, and cleanup. Show a bounded user-safe failure while retaining a correlation identity for support.",
"proof": "The failure plan is automated or captured as repeatable evidence, and no fixture behavior is represented as live Mappls data."
}
],
"verification": [
"Android and iOS return the same application-level selected ID while platform-specific failures remain visible and attributable.",
"A blocked, missing, or unentitled provider produces a useful explicit failure rather than a blank surface or fabricated result.",
"No server credential, bearer value, precise private fixture, or provider response body appears in client bundles, logs, screenshots, or test artifacts.",
"Resources, listeners, sessions, processes, or requests stop cleanly when the owning screen, request, or application ends."
],
"debugging": [
{
"signal": "One platform works while the other reports missing native view/module",
"likelyCause": "Only one native project, dependency graph, architecture mode, autolinking step, credential restriction, or build cache is correct.",
"nextAction": "Treat each platform as its own build: inspect resolved native dependencies and registration, clean only scoped build output, and prove the native example before the shared wrapper."
},
{
"signal": "Authentication or entitlement is rejected",
"likelyCause": "The credential class, restriction, account region, host/path generation, package application, or subscribed capability does not match.",
"nextAction": "Do not try another credential shape blindly. Capture the safe status/request identity and reconcile the exact contract in the developer console or support packet."
},
{
"signal": "The sample works once but not after reload, backgrounding, or a second run",
"likelyCause": "Lifecycle ownership, listener disposal, token/session refresh, saved state, or a singleton initialization boundary is incomplete.",
"nextAction": "Instrument create/ready/cancel/destroy transitions and prove one owner before adding product behavior."
}
]
}
```
## quickstart · Build a native-backed Flutter place picker
- Identity: `quickstart:flutter-map`
- Canonical: https://developer.mappls.com/quickstart/flutter-map
```json
{
"slug": "flutter-map",
"platform": "Flutter",
"title": "Build a native-backed Flutter place picker",
"outcome": "a Dart form that commits one accepted Mappls place identity",
"duration": "30 minutes",
"readiness": "public-source",
"sourceGuideSlugs": [
"mappls-flutter-sdk",
"flutter-mapmyindia-gl"
],
"credentialBoundary": "Configure separately restricted Android and iOS app credentials in their native projects. Do not put server secrets in Dart assets or compile-time constants.",
"evidenceBoundary": "The corpus contains Mappls sample evidence and an older current-classified MapmyIndia wrapper. Confirm the supported Flutter/Dart plugin and both native SDK lines before choosing one.",
"prerequisites": [
"A clean Flutter application",
"Confirmed Flutter, Dart, plugin, Android, and iOS matrix",
"Restricted credentials for both native runners",
"Physical devices and release signing"
],
"configure": "Pin one confirmed plugin line, apply native repository/package/manifest/Info.plist steps, and own controller readiness plus disposal inside one stateful widget.",
"build": "Keep query text, candidates, camera, candidate marker, and accepted place as separate states; submit only the accepted stable identity.",
"exercise": "Run analyzer/tests, create Android and iOS release builds, pop/push the route repeatedly, deny permissions, rotate, and submit after editing a prior selection.",
"platformProof": "The form cannot submit stale text as a selected place and platform views/controllers are disposed after navigation.",
"platformFailure": {
"signal": "The Dart API resolves but the platform view fails at runtime",
"likelyCause": "Android/iOS native configuration, plugin/native version, renderer, architecture, permission, or credential setup is incomplete.",
"nextAction": "Run the plugin's minimal native-backed screen on each platform, inspect native logs and dependency graphs, and wait for controller readiness before commands."
},
"runCommands": [
"flutter pub get",
"flutter analyze",
"flutter test",
"flutter build apk",
"flutter build ios --no-codesign"
],
"samples": [
{
"language": "dart",
"label": "Explicit place selection model",
"code": "class PlaceSelection {\n final String id;\n final String label;\n const PlaceSelection(this.id, this.label);\n}\n\nclass PlacePickerState {\n String query = '';\n PlaceSelection? accepted;\n void edit(String value) { query = value; accepted = null; }\n void accept(PlaceSelection place) { query = place.label; accepted = place; }\n void validate() { if (accepted == null) throw StateError('select_a_place'); }\n}"
}
],
"nextTutorialSlugs": [
"flutter-map"
],
"productionChecks": [
"Both runner configurations are versioned",
"Controller readiness is awaited",
"Selection state is explicit",
"Physical-device releases are tested"
],
"steps": [
{
"title": "Confirm the source line",
"instruction": "Open the linked evidence and confirm the exact Flutter package, endpoint, toolchain, region, and account entitlement before installing anything. The corpus contains Mappls sample evidence and an older current-classified MapmyIndia wrapper. Confirm the supported Flutter/Dart plugin and both native SDK lines before choosing one.",
"proof": "Record the guide slug, source fingerprint, selected version or contract generation, and approving owner in the project README."
},
{
"title": "Create a clean boundary",
"instruction": "Pin one confirmed plugin line, apply native repository/package/manifest/Info.plist steps, and own controller readiness plus disposal inside one stateful widget.",
"proof": "A clean checkout resolves dependencies and configuration without a credential in source, generated assets, logs, or screenshots."
},
{
"title": "Build one useful result",
"instruction": "Keep query text, candidates, camera, candidate marker, and accepted place as separate states; submit only the accepted stable identity.",
"proof": "The application produces the stated outcome—a dart form that commits one accepted mappls place identity—through one application-owned interface."
},
{
"title": "Run the release path",
"instruction": "Run analyzer/tests, create Android and iOS release builds, pop/push the route repeatedly, deny permissions, rotate, and submit after editing a prior selection.",
"proof": "The documented command or platform release workflow succeeds from a clean environment, not only an already-configured IDE or debug session."
},
{
"title": "Break it deliberately",
"instruction": "Exercise missing/denied credentials, unavailable network or runtime, invalid input, cancellation, and cleanup. Show a bounded user-safe failure while retaining a correlation identity for support.",
"proof": "The failure plan is automated or captured as repeatable evidence, and no fixture behavior is represented as live Mappls data."
}
],
"verification": [
"The form cannot submit stale text as a selected place and platform views/controllers are disposed after navigation.",
"A blocked, missing, or unentitled provider produces a useful explicit failure rather than a blank surface or fabricated result.",
"No server credential, bearer value, precise private fixture, or provider response body appears in client bundles, logs, screenshots, or test artifacts.",
"Resources, listeners, sessions, processes, or requests stop cleanly when the owning screen, request, or application ends."
],
"debugging": [
{
"signal": "The Dart API resolves but the platform view fails at runtime",
"likelyCause": "Android/iOS native configuration, plugin/native version, renderer, architecture, permission, or credential setup is incomplete.",
"nextAction": "Run the plugin's minimal native-backed screen on each platform, inspect native logs and dependency graphs, and wait for controller readiness before commands."
},
{
"signal": "Authentication or entitlement is rejected",
"likelyCause": "The credential class, restriction, account region, host/path generation, package application, or subscribed capability does not match.",
"nextAction": "Do not try another credential shape blindly. Capture the safe status/request identity and reconcile the exact contract in the developer console or support packet."
},
{
"signal": "The sample works once but not after reload, backgrounding, or a second run",
"likelyCause": "Lifecycle ownership, listener disposal, token/session refresh, saved state, or a singleton initialization boundary is incomplete.",
"nextAction": "Instrument create/ready/cancel/destroy transitions and prove one owner before adding product behavior."
}
]
}
```
## quickstart · Stabilize a Cordova map before migration
- Identity: `quickstart:cordova-maintenance`
- Canonical: https://developer.mappls.com/quickstart/cordova-maintenance
```json
{
"slug": "cordova-maintenance",
"platform": "Cordova",
"title": "Stabilize a Cordova map before migration",
"outcome": "a reproducible legacy screen behind a replaceable capability facade",
"duration": "35 minutes",
"readiness": "legacy-maintenance",
"sourceGuideSlugs": [
"mapmyindia-map-cordova-ionic-beta",
"mapmyindia-restapi-cordova-ionic-beta"
],
"credentialBoundary": "Treat all client credentials as platform-restricted public credentials and keep privileged REST work on a backend. Never reuse legacy auth with a current host by resemblance.",
"evidenceBoundary": "Only legacy/beta Cordova sources exist in the public corpus. This quickstart is for stabilizing an existing estate—not recommending Cordova for new development. Use the migration track to select a supported target.",
"prerequisites": [
"An existing Cordova/Ionic repository",
"A reproducible lockfile and build-host image",
"Inventory of plugins, native SDKs, credentials, signing, and store constraints",
"A chosen migration owner and target decision date"
],
"configure": "Freeze Cordova, Ionic, plugin, Android, iOS, JDK, Xcode, and Mappls dependencies; move every map/REST call behind a narrow serializable facade before changing behavior.",
"build": "Prove one existing search-and-map journey after deviceready, preserve its selected identity above the plugin, and implement a browser/deep-link fallback.",
"exercise": "Create clean Android and iOS builds from the lockfile, enter/leave the page repeatedly, simulate plugin absence, and run the corresponding migration track parity test.",
"platformProof": "One legacy journey is reproducible, has a fallback, and can switch to a replacement adapter without changing domain state.",
"platformFailure": {
"signal": "A fresh machine cannot reproduce the signed build",
"likelyCause": "Unpinned Node/Cordova/plugin/native build inputs, removed repositories, certificates, or generated native edits are part of the hidden build.",
"nextAction": "Capture the entire toolchain manifest and generated-project changes before feature work; if dependencies are unavailable, prioritize the migration seam and replacement cohort."
},
"runCommands": [
"npm ci",
"cordova requirements",
"cordova prepare",
"cordova build android",
"cordova build ios"
],
"samples": [
{
"language": "typescript",
"label": "Strangler facade",
"code": "type LocationFacade = {\n search(query: string): Promise>;\n openMap(placeId: string): Promise;\n};\n\nexport async function ready(facade: LocationFacade) {\n await new Promise((resolve) => document.addEventListener(\"deviceready\", () => resolve(), { once: true }));\n return facade; // plugin-specific calls remain inside the injected legacy adapter\n}"
}
],
"nextTutorialSlugs": [
"cordova-map"
],
"productionChecks": [
"Legacy status is explicit",
"Every build input is frozen",
"Facade inputs are bounded",
"Migration and rollback paths are tested"
],
"steps": [
{
"title": "Confirm the source line",
"instruction": "Open the linked evidence and confirm the exact Cordova package, endpoint, toolchain, region, and account entitlement before installing anything. Only legacy/beta Cordova sources exist in the public corpus. This quickstart is for stabilizing an existing estate—not recommending Cordova for new development. Use the migration track to select a supported target.",
"proof": "Record the guide slug, source fingerprint, selected version or contract generation, and approving owner in the project README."
},
{
"title": "Create a clean boundary",
"instruction": "Freeze Cordova, Ionic, plugin, Android, iOS, JDK, Xcode, and Mappls dependencies; move every map/REST call behind a narrow serializable facade before changing behavior.",
"proof": "A clean checkout resolves dependencies and configuration without a credential in source, generated assets, logs, or screenshots."
},
{
"title": "Build one useful result",
"instruction": "Prove one existing search-and-map journey after deviceready, preserve its selected identity above the plugin, and implement a browser/deep-link fallback.",
"proof": "The application produces the stated outcome—a reproducible legacy screen behind a replaceable capability facade—through one application-owned interface."
},
{
"title": "Run the release path",
"instruction": "Create clean Android and iOS builds from the lockfile, enter/leave the page repeatedly, simulate plugin absence, and run the corresponding migration track parity test.",
"proof": "The documented command or platform release workflow succeeds from a clean environment, not only an already-configured IDE or debug session."
},
{
"title": "Break it deliberately",
"instruction": "Exercise missing/denied credentials, unavailable network or runtime, invalid input, cancellation, and cleanup. Show a bounded user-safe failure while retaining a correlation identity for support.",
"proof": "The failure plan is automated or captured as repeatable evidence, and no fixture behavior is represented as live Mappls data."
}
],
"verification": [
"One legacy journey is reproducible, has a fallback, and can switch to a replacement adapter without changing domain state.",
"A blocked, missing, or unentitled provider produces a useful explicit failure rather than a blank surface or fabricated result.",
"No server credential, bearer value, precise private fixture, or provider response body appears in client bundles, logs, screenshots, or test artifacts.",
"Resources, listeners, sessions, processes, or requests stop cleanly when the owning screen, request, or application ends."
],
"debugging": [
{
"signal": "A fresh machine cannot reproduce the signed build",
"likelyCause": "Unpinned Node/Cordova/plugin/native build inputs, removed repositories, certificates, or generated native edits are part of the hidden build.",
"nextAction": "Capture the entire toolchain manifest and generated-project changes before feature work; if dependencies are unavailable, prioritize the migration seam and replacement cohort."
},
{
"signal": "Authentication or entitlement is rejected",
"likelyCause": "The credential class, restriction, account region, host/path generation, package application, or subscribed capability does not match.",
"nextAction": "Do not try another credential shape blindly. Capture the safe status/request identity and reconcile the exact contract in the developer console or support packet."
},
{
"signal": "The sample works once but not after reload, backgrounding, or a second run",
"likelyCause": "Lifecycle ownership, listener disposal, token/session refresh, saved state, or a singleton initialization boundary is incomplete.",
"nextAction": "Instrument create/ready/cancel/destroy transitions and prove one owner before adding product behavior."
}
]
}
```
## quickstart · Extract a Xamarin map integration for replacement
- Identity: `quickstart:xamarin-maintenance`
- Canonical: https://developer.mappls.com/quickstart/xamarin-maintenance
```json
{
"slug": "xamarin-maintenance",
"platform": "Xamarin",
"title": "Extract a Xamarin map integration for replacement",
"outcome": "a shared .NET contract with independently owned Android and iOS adapters",
"duration": "40 minutes",
"readiness": "entitlement-required",
"sourceGuideSlugs": [],
"credentialBoundary": "Use separately restricted native app credentials and keep privileged service credentials on a backend. Do not move secrets into shared assemblies during extraction.",
"evidenceBoundary": "No public repository in the snapshot provides a current Xamarin successor. Obtain the existing binding/source and target-platform contract from Mappls and use the migration principles before implementation.",
"prerequisites": [
"An existing Xamarin solution and reproducible build host",
"Inventory of NuGet packages, native bindings, binaries, and licenses",
"Android and iOS journey fixtures",
"A confirmed supported migration target"
],
"configure": "Move place IDs, domain commands, view models, and persistence interfaces into a framework-independent library; leave native views, delegates, permissions, and Mappls symbols in platform adapters.",
"build": "Freeze one search-select-map journey as shared contract tests and implement it through the existing Android/iOS adapters without changing UI behavior.",
"exercise": "Build both platform release configurations from a clean host, navigate/recreate pages, dispose renderers, and run the same fixture contract against the selected replacement adapter.",
"platformProof": "Shared tests prove equivalent place identity and errors while no shared state retains a native view, context, delegate, or credential.",
"platformFailure": {
"signal": "Shared tests pass but a platform leaks or crashes after navigation",
"likelyCause": "Renderer/delegate/event ownership remains implicit or native callbacks target a disposed shared object.",
"nextAction": "Trace creation, subscription, disappearance, disposal, and late callbacks per platform; introduce cancellation/version fencing at the adapter boundary."
},
"runCommands": [
"dotnet restore",
"dotnet test",
"dotnet build -c Release"
],
"samples": [
{
"language": "csharp",
"label": ".NET capability contract",
"code": "public sealed record Place(string Id, string Label, double Latitude, double Longitude);\n\npublic interface IPlacesProvider\n{\n Task> SearchAsync(string query, CancellationToken cancellation);\n}\n\n// Xamarin and replacement adapters implement the same fixture-tested interface.\npublic sealed class PlacesFeature(IPlacesProvider provider)\n{\n public Task> Search(string query, CancellationToken ct) => provider.SearchAsync(query, ct);\n}"
}
],
"nextTutorialSlugs": [
"xamarin-map"
],
"productionChecks": [
"Support posture is documented",
"Both native builds are reproducible",
"Shared code owns no native resources",
"Journey parity determines migration"
],
"steps": [
{
"title": "Confirm the source line",
"instruction": "Open the linked evidence and confirm the exact Xamarin package, endpoint, toolchain, region, and account entitlement before installing anything. No public repository in the snapshot provides a current Xamarin successor. Obtain the existing binding/source and target-platform contract from Mappls and use the migration principles before implementation.",
"proof": "Record the guide slug, source fingerprint, selected version or contract generation, and approving owner in the project README."
},
{
"title": "Create a clean boundary",
"instruction": "Move place IDs, domain commands, view models, and persistence interfaces into a framework-independent library; leave native views, delegates, permissions, and Mappls symbols in platform adapters.",
"proof": "A clean checkout resolves dependencies and configuration without a credential in source, generated assets, logs, or screenshots."
},
{
"title": "Build one useful result",
"instruction": "Freeze one search-select-map journey as shared contract tests and implement it through the existing Android/iOS adapters without changing UI behavior.",
"proof": "The application produces the stated outcome—a shared .net contract with independently owned android and ios adapters—through one application-owned interface."
},
{
"title": "Run the release path",
"instruction": "Build both platform release configurations from a clean host, navigate/recreate pages, dispose renderers, and run the same fixture contract against the selected replacement adapter.",
"proof": "The documented command or platform release workflow succeeds from a clean environment, not only an already-configured IDE or debug session."
},
{
"title": "Break it deliberately",
"instruction": "Exercise missing/denied credentials, unavailable network or runtime, invalid input, cancellation, and cleanup. Show a bounded user-safe failure while retaining a correlation identity for support.",
"proof": "The failure plan is automated or captured as repeatable evidence, and no fixture behavior is represented as live Mappls data."
}
],
"verification": [
"Shared tests prove equivalent place identity and errors while no shared state retains a native view, context, delegate, or credential.",
"A blocked, missing, or unentitled provider produces a useful explicit failure rather than a blank surface or fabricated result.",
"No server credential, bearer value, precise private fixture, or provider response body appears in client bundles, logs, screenshots, or test artifacts.",
"Resources, listeners, sessions, processes, or requests stop cleanly when the owning screen, request, or application ends."
],
"debugging": [
{
"signal": "Shared tests pass but a platform leaks or crashes after navigation",
"likelyCause": "Renderer/delegate/event ownership remains implicit or native callbacks target a disposed shared object.",
"nextAction": "Trace creation, subscription, disappearance, disposal, and late callbacks per platform; introduce cancellation/version fencing at the adapter boundary."
},
{
"signal": "Authentication or entitlement is rejected",
"likelyCause": "The credential class, restriction, account region, host/path generation, package application, or subscribed capability does not match.",
"nextAction": "Do not try another credential shape blindly. Capture the safe status/request identity and reconcile the exact contract in the developer console or support packet."
},
{
"signal": "The sample works once but not after reload, backgrounding, or a second run",
"likelyCause": "Lifecycle ownership, listener disposal, token/session refresh, saved state, or a singleton initialization boundary is incomplete.",
"nextAction": "Instrument create/ready/cancel/destroy transitions and prove one owner before adding product behavior."
}
]
}
```
## quickstart · Boot a supervised embedded map client
- Identity: `quickstart:linux-embedded`
- Canonical: https://developer.mappls.com/quickstart/linux-embedded
```json
{
"slug": "linux-embedded",
"platform": "Linux",
"title": "Boot a supervised embedded map client",
"outcome": "a health-checked native process with an atomic data/runtime boundary",
"duration": "45 minutes",
"readiness": "entitlement-required",
"sourceGuideSlugs": [],
"credentialBoundary": "Use device/workload identity and entitlement delivered through the approved provisioning channel; never bake fleet-wide secrets into an image or package.",
"evidenceBoundary": "The public snapshot has no platform-specific Linux distribution guide. The runtime, ABI, compiler, graphics, activation, and data contract must come from the entitled private distribution.",
"prerequisites": [
"Target CPU, ABI, libc, GPU/graphics, OS image, storage, and sensor manifest",
"Entitled runtime, data, license, and activation contract",
"A supervised service environment",
"Dual-slot storage or another atomic rollback mechanism"
],
"configure": "Validate runtime/data/compiler compatibility and signatures before installing; run the application with explicit read-only runtime/data and isolated writable state under a supervisor.",
"build": "Expose liveness, readiness, active runtime/data versions, activation state, and last safe error; render a deterministic offline fixture before enabling live data.",
"exercise": "Cold boot without network, kill/restart the process, fill staging storage, corrupt a staged package, and interrupt power before/after the atomic activation pointer.",
"platformProof": "Every test leaves exactly one bootable active runtime/data set and health reports the selected versions without leaking device credentials.",
"platformFailure": {
"signal": "The process starts but rendering or routing fails on target hardware",
"likelyCause": "ABI/libc/compiler/GPU/runtime/data epoch or activation is incompatible despite a successful file copy.",
"nextAction": "Compare the signed release manifest to device facts, fail readiness, retain the previous slot, and obtain the exact compatibility decision from the runtime owner."
},
"runCommands": [
"cmake -S . -B build -DCMAKE_BUILD_TYPE=Release",
"cmake --build build",
"ctest --test-dir build",
"./build/mappls_client --self-test"
],
"samples": [
{
"language": "cpp",
"label": "Supervised runtime boundary",
"code": "struct RuntimeHealth { bool live; bool ready; std::string runtimeVersion; std::string dataVersion; };\n\nclass MapRuntime {\npublic:\n virtual ~MapRuntime() = default;\n virtual RuntimeHealth health() const = 0;\n virtual void renderFixture() = 0;\n virtual void shutdown() noexcept = 0;\n};\n\n// The entitled SDK adapter is selected only after manifest and activation checks."
}
],
"nextTutorialSlugs": [
"linux-map-client",
"offline-package-update"
],
"productionChecks": [
"Runtime/data compatibility is enforced",
"Activation can rotate",
"Updates are signed and reversible",
"Health survives process restart"
],
"steps": [
{
"title": "Confirm the source line",
"instruction": "Open the linked evidence and confirm the exact Linux package, endpoint, toolchain, region, and account entitlement before installing anything. The public snapshot has no platform-specific Linux distribution guide. The runtime, ABI, compiler, graphics, activation, and data contract must come from the entitled private distribution.",
"proof": "Record the guide slug, source fingerprint, selected version or contract generation, and approving owner in the project README."
},
{
"title": "Create a clean boundary",
"instruction": "Validate runtime/data/compiler compatibility and signatures before installing; run the application with explicit read-only runtime/data and isolated writable state under a supervisor.",
"proof": "A clean checkout resolves dependencies and configuration without a credential in source, generated assets, logs, or screenshots."
},
{
"title": "Build one useful result",
"instruction": "Expose liveness, readiness, active runtime/data versions, activation state, and last safe error; render a deterministic offline fixture before enabling live data.",
"proof": "The application produces the stated outcome—a health-checked native process with an atomic data/runtime boundary—through one application-owned interface."
},
{
"title": "Run the release path",
"instruction": "Cold boot without network, kill/restart the process, fill staging storage, corrupt a staged package, and interrupt power before/after the atomic activation pointer.",
"proof": "The documented command or platform release workflow succeeds from a clean environment, not only an already-configured IDE or debug session."
},
{
"title": "Break it deliberately",
"instruction": "Exercise missing/denied credentials, unavailable network or runtime, invalid input, cancellation, and cleanup. Show a bounded user-safe failure while retaining a correlation identity for support.",
"proof": "The failure plan is automated or captured as repeatable evidence, and no fixture behavior is represented as live Mappls data."
}
],
"verification": [
"Every test leaves exactly one bootable active runtime/data set and health reports the selected versions without leaking device credentials.",
"A blocked, missing, or unentitled provider produces a useful explicit failure rather than a blank surface or fabricated result.",
"No server credential, bearer value, precise private fixture, or provider response body appears in client bundles, logs, screenshots, or test artifacts.",
"Resources, listeners, sessions, processes, or requests stop cleanly when the owning screen, request, or application ends."
],
"debugging": [
{
"signal": "The process starts but rendering or routing fails on target hardware",
"likelyCause": "ABI/libc/compiler/GPU/runtime/data epoch or activation is incompatible despite a successful file copy.",
"nextAction": "Compare the signed release manifest to device facts, fail readiness, retain the previous slot, and obtain the exact compatibility decision from the runtime owner."
},
{
"signal": "Authentication or entitlement is rejected",
"likelyCause": "The credential class, restriction, account region, host/path generation, package application, or subscribed capability does not match.",
"nextAction": "Do not try another credential shape blindly. Capture the safe status/request identity and reconcile the exact contract in the developer console or support packet."
},
{
"signal": "The sample works once but not after reload, backgrounding, or a second run",
"likelyCause": "Lifecycle ownership, listener disposal, token/session refresh, saved state, or a singleton initialization boundary is incomplete.",
"nextAction": "Instrument create/ready/cancel/destroy transitions and prove one owner before adding product behavior."
}
]
}
```
## quickstart · Simulate one recoverable navigation session
- Identity: `quickstart:automotive-navigation`
- Canonical: https://developer.mappls.com/quickstart/automotive-navigation
```json
{
"slug": "automotive-navigation",
"platform": "Automotive",
"title": "Simulate one recoverable navigation session",
"outcome": "a safety-aware route-to-arrival state machine over an entitled runtime",
"duration": "60 minutes",
"readiness": "entitlement-required",
"sourceGuideSlugs": [],
"credentialBoundary": "Provision per-device identity, activation, regions, runtime, and map data through the approved vehicle/fleet control plane. Avoid shared embedded credentials.",
"evidenceBoundary": "The public snapshot does not establish an automotive SDK or safety contract. Obtain the entitled runtime, data, activation, vehicle-interface, HMI, and regulatory requirements before binding an adapter.",
"prerequisites": [
"Vehicle hardware/OS/display/control/sensor operating envelope",
"Entitled runtime, map data, activation, and update contract",
"Deterministic GNSS and vehicle-signal simulator",
"Safety, distraction, privacy, and release owners"
],
"configure": "Separate vehicle signals and HMI policy from the navigation runtime, pin runtime/data/config/activation as one release manifest, and expose route lifecycle through a recoverable application state machine.",
"build": "Simulate plan, preview, start, progress, deviation, reroute, tunnel/dead-reckoning, pause, arrival, and termination without requiring a road vehicle.",
"exercise": "Replay deterministic traces across process restart, power loss, sensor loss, offline periods, map-data switch, invalid activation, and rollback before road testing.",
"platformProof": "The session recovers to a safe explainable state with compatible runtime/data and never presents stale guidance as current after a reset.",
"platformFailure": {
"signal": "Guidance resumes with an old route or unsafe prompt after restart",
"likelyCause": "Route/session version, position freshness, vehicle state, HMI policy, or runtime/data identity was not persisted and reconciled atomically.",
"nextAction": "Fail guidance to a safe state, reconcile session and release manifest, replay the deterministic trace, and require simulation evidence before road testing."
},
"runCommands": [
"cmake -S . -B build -DCMAKE_BUILD_TYPE=Release",
"cmake --build build",
"ctest --test-dir build -R navigation",
"./build/navigation_simulator fixtures/deviation.json"
],
"samples": [
{
"language": "cpp",
"label": "Navigation state model",
"code": "enum class NavigationState { Idle, Planned, Preview, Guiding, Rerouting, Paused, Arrived, Failed };\n\nstruct NavigationSnapshot {\n std::string sessionId;\n std::uint64_t version;\n NavigationState state;\n std::string runtimeVersion;\n std::string dataVersion;\n};\n\n// Persist each accepted transition and reconcile position freshness after restart."
}
],
"nextTutorialSlugs": [
"offline-package-update",
"linux-map-client"
],
"productionChecks": [
"Driver-distraction rules are testable",
"Power/connectivity recovery is proven",
"Runtime and data roll out together",
"Simulation precedes road evidence"
],
"steps": [
{
"title": "Confirm the source line",
"instruction": "Open the linked evidence and confirm the exact Automotive package, endpoint, toolchain, region, and account entitlement before installing anything. The public snapshot does not establish an automotive SDK or safety contract. Obtain the entitled runtime, data, activation, vehicle-interface, HMI, and regulatory requirements before binding an adapter.",
"proof": "Record the guide slug, source fingerprint, selected version or contract generation, and approving owner in the project README."
},
{
"title": "Create a clean boundary",
"instruction": "Separate vehicle signals and HMI policy from the navigation runtime, pin runtime/data/config/activation as one release manifest, and expose route lifecycle through a recoverable application state machine.",
"proof": "A clean checkout resolves dependencies and configuration without a credential in source, generated assets, logs, or screenshots."
},
{
"title": "Build one useful result",
"instruction": "Simulate plan, preview, start, progress, deviation, reroute, tunnel/dead-reckoning, pause, arrival, and termination without requiring a road vehicle.",
"proof": "The application produces the stated outcome—a safety-aware route-to-arrival state machine over an entitled runtime—through one application-owned interface."
},
{
"title": "Run the release path",
"instruction": "Replay deterministic traces across process restart, power loss, sensor loss, offline periods, map-data switch, invalid activation, and rollback before road testing.",
"proof": "The documented command or platform release workflow succeeds from a clean environment, not only an already-configured IDE or debug session."
},
{
"title": "Break it deliberately",
"instruction": "Exercise missing/denied credentials, unavailable network or runtime, invalid input, cancellation, and cleanup. Show a bounded user-safe failure while retaining a correlation identity for support.",
"proof": "The failure plan is automated or captured as repeatable evidence, and no fixture behavior is represented as live Mappls data."
}
],
"verification": [
"The session recovers to a safe explainable state with compatible runtime/data and never presents stale guidance as current after a reset.",
"A blocked, missing, or unentitled provider produces a useful explicit failure rather than a blank surface or fabricated result.",
"No server credential, bearer value, precise private fixture, or provider response body appears in client bundles, logs, screenshots, or test artifacts.",
"Resources, listeners, sessions, processes, or requests stop cleanly when the owning screen, request, or application ends."
],
"debugging": [
{
"signal": "Guidance resumes with an old route or unsafe prompt after restart",
"likelyCause": "Route/session version, position freshness, vehicle state, HMI policy, or runtime/data identity was not persisted and reconciled atomically.",
"nextAction": "Fail guidance to a safe state, reconcile session and release manifest, replay the deterministic trace, and require simulation evidence before road testing."
},
{
"signal": "Authentication or entitlement is rejected",
"likelyCause": "The credential class, restriction, account region, host/path generation, package application, or subscribed capability does not match.",
"nextAction": "Do not try another credential shape blindly. Capture the safe status/request identity and reconcile the exact contract in the developer console or support packet."
},
{
"signal": "The sample works once but not after reload, backgrounding, or a second run",
"likelyCause": "Lifecycle ownership, listener disposal, token/session refresh, saved state, or a singleton initialization boundary is incomplete.",
"nextAction": "Instrument create/ready/cancel/destroy transitions and prove one owner before adding product behavior."
}
]
}
```
## quickstart · Embed a place journey with an owned fallback
- Identity: `quickstart:widgets-place`
- Canonical: https://developer.mappls.com/quickstart/widgets-place
```json
{
"slug": "widgets-place",
"platform": "Widgets",
"title": "Embed a place journey with an owned fallback",
"outcome": "an accessible host that validates one widget result and survives widget failure",
"duration": "20 minutes",
"readiness": "public-source",
"sourceGuideSlugs": [
"mappls-web-plugins"
],
"credentialBoundary": "Use only the widget/browser credential class restricted to exact origins. Validate every postMessage/callback payload and keep privileged operations on the server.",
"evidenceBoundary": "The current public Web Plugins guide spans current vector and legacy raster integration branches; source activity is not a support promise. Confirm the exact widget, script, origin, event schema, release, entitlement, and authentication line before implementation.",
"prerequisites": [
"A confirmed Mappls widget and auth generation",
"Exact host and allowed widget origins",
"An accessible host form and manual fallback",
"A versioned callback/message schema"
],
"configure": "Load the confirmed widget only from an allow-listed origin, give its host a visible label/status/fallback, and validate origin, schema version, size, and field types before accepting events.",
"build": "Commit only a stable Mappls place identity plus display label into application state; invalidate it when host text changes and keep a manual/search fallback available.",
"exercise": "Block the script/frame, send wrong-origin and malformed messages, resize to mobile, use keyboard/screen reader, and navigate away/back twice.",
"platformProof": "The host submits only a validated selected identity and remains usable when the widget is slow, blocked, denied, or unavailable.",
"platformFailure": {
"signal": "The widget displays but selection never reaches the form",
"likelyCause": "Origin, callback name, event schema/version, load timing, or host state invalidation differs from the confirmed integration line.",
"nextAction": "Log only safe message metadata, verify exact origin/schema from the guide, reject unknown shapes, and keep the visible fallback active."
},
"runCommands": [
"npm install",
"npm run dev",
"npm run test",
"npm run build"
],
"samples": [
{
"language": "typescript",
"label": "Validated widget hand-off",
"code": "type PlaceMessage = { version: 1; type: \"place.selected\"; place: { id: string; label: string } };\n\nexport function acceptWidgetMessage(event: MessageEvent, allowedOrigin: string): PlaceMessage | null {\n if (event.origin !== allowedOrigin || !event.data || event.data.version !== 1) return null;\n if (event.data.type !== \"place.selected\" || typeof event.data.place?.id !== \"string\") return null;\n return event.data as PlaceMessage;\n}"
}
],
"nextTutorialSlugs": [
"web-widget-place-picker"
],
"productionChecks": [
"Supported status is confirmed",
"Origins and payloads are validated",
"Fallback is complete",
"Keyboard and screen-reader behavior is tested"
],
"steps": [
{
"title": "Confirm the source line",
"instruction": "Open the linked evidence and confirm the exact Widgets package, endpoint, toolchain, region, and account entitlement before installing anything. The current public Web Plugins guide spans current vector and legacy raster integration branches; source activity is not a support promise. Confirm the exact widget, script, origin, event schema, release, entitlement, and authentication line before implementation.",
"proof": "Record the guide slug, source fingerprint, selected version or contract generation, and approving owner in the project README."
},
{
"title": "Create a clean boundary",
"instruction": "Load the confirmed widget only from an allow-listed origin, give its host a visible label/status/fallback, and validate origin, schema version, size, and field types before accepting events.",
"proof": "A clean checkout resolves dependencies and configuration without a credential in source, generated assets, logs, or screenshots."
},
{
"title": "Build one useful result",
"instruction": "Commit only a stable Mappls place identity plus display label into application state; invalidate it when host text changes and keep a manual/search fallback available.",
"proof": "The application produces the stated outcome—an accessible host that validates one widget result and survives widget failure—through one application-owned interface."
},
{
"title": "Run the release path",
"instruction": "Block the script/frame, send wrong-origin and malformed messages, resize to mobile, use keyboard/screen reader, and navigate away/back twice.",
"proof": "The documented command or platform release workflow succeeds from a clean environment, not only an already-configured IDE or debug session."
},
{
"title": "Break it deliberately",
"instruction": "Exercise missing/denied credentials, unavailable network or runtime, invalid input, cancellation, and cleanup. Show a bounded user-safe failure while retaining a correlation identity for support.",
"proof": "The failure plan is automated or captured as repeatable evidence, and no fixture behavior is represented as live Mappls data."
}
],
"verification": [
"The host submits only a validated selected identity and remains usable when the widget is slow, blocked, denied, or unavailable.",
"A blocked, missing, or unentitled provider produces a useful explicit failure rather than a blank surface or fabricated result.",
"No server credential, bearer value, precise private fixture, or provider response body appears in client bundles, logs, screenshots, or test artifacts.",
"Resources, listeners, sessions, processes, or requests stop cleanly when the owning screen, request, or application ends."
],
"debugging": [
{
"signal": "The widget displays but selection never reaches the form",
"likelyCause": "Origin, callback name, event schema/version, load timing, or host state invalidation differs from the confirmed integration line.",
"nextAction": "Log only safe message metadata, verify exact origin/schema from the guide, reject unknown shapes, and keep the visible fallback active."
},
{
"signal": "Authentication or entitlement is rejected",
"likelyCause": "The credential class, restriction, account region, host/path generation, package application, or subscribed capability does not match.",
"nextAction": "Do not try another credential shape blindly. Capture the safe status/request identity and reconcile the exact contract in the developer console or support packet."
},
{
"signal": "The sample works once but not after reload, backgrounding, or a second run",
"likelyCause": "Lifecycle ownership, listener disposal, token/session refresh, saved state, or a singleton initialization boundary is incomplete.",
"nextAction": "Instrument create/ready/cancel/destroy transitions and prove one owner before adding product behavior."
}
]
}
```
## quickstart · Ship one zero-SDK Mappls hand-off
- Identity: `quickstart:deep-links`
- Canonical: https://developer.mappls.com/quickstart/deep-links
```json
{
"slug": "deep-links",
"platform": "Deep links",
"title": "Ship one zero-SDK Mappls hand-off",
"outcome": "a place link that reaches the same intent across app and browser fallbacks",
"duration": "10 minutes",
"readiness": "public-source",
"sourceGuideSlugs": [
"mappls-app-widgets"
],
"credentialBoundary": "Deep links contain no credential. Put only bounded non-sensitive intent in the URL; precise private/user data and server secrets must never become query parameters.",
"evidenceBoundary": "Use the exact link shape documented by the current App Widgets source. The scaffold below deliberately receives that approved base rather than inventing an undocumented path.",
"prerequisites": [
"A stable Mappls place identity or validated destination",
"The exact documented link template",
"Installed/uninstalled Android and iOS test devices",
"Browser, messaging, email, and QR test channels"
],
"configure": "Store the documented allow-listed base and construct URL components with the platform URL library; never concatenate user input or allow it to change origin/path shape.",
"build": "Render human-readable destination context, the hand-off link, and a copyable/browser fallback that preserve the same stable intent.",
"exercise": "Test installed/uninstalled app, mobile/desktop browsers, messaging, email, QR, in-app webviews, offline state, and rewritten links.",
"platformProof": "Every supported channel reaches the same destination intent or a useful visible fallback without sensitive query data.",
"platformFailure": {
"signal": "A channel opens a generic page or different destination",
"likelyCause": "The association, link shape, encoding, redirector, app installation state, or channel rewriting altered the documented intent.",
"nextAction": "Compare the final URL components without private data, bypass unapproved redirectors, and retest installed/uninstalled fallback against the exact guide."
},
"runCommands": [
"npm test",
"npm run build"
],
"samples": [
{
"language": "javascript",
"label": "Safe documented-link builder",
"code": "export function buildMapplsHandoff(approvedBase, placeId) {\n const url = new URL(approvedBase);\n if (url.protocol !== \"https:\" || !/^(?:www.)?mappls.com$/.test(url.hostname)) throw new Error(\"unapproved_base\");\n if (!/^[A-Za-z0-9_-]{3,40}$/.test(placeId)) throw new Error(\"invalid_place_id\");\n url.searchParams.set(\"place\", placeId); // Use only the parameter name confirmed by the source guide.\n return url.toString();\n}"
}
],
"nextTutorialSlugs": [
"deep-link-campaign",
"navigation-deep-link"
],
"productionChecks": [
"No private data is encoded",
"All values are validated and encoded",
"App/browser intent matches",
"Redirect domains are allow-listed"
],
"steps": [
{
"title": "Confirm the source line",
"instruction": "Open the linked evidence and confirm the exact Deep links package, endpoint, toolchain, region, and account entitlement before installing anything. Use the exact link shape documented by the current App Widgets source. The scaffold below deliberately receives that approved base rather than inventing an undocumented path.",
"proof": "Record the guide slug, source fingerprint, selected version or contract generation, and approving owner in the project README."
},
{
"title": "Create a clean boundary",
"instruction": "Store the documented allow-listed base and construct URL components with the platform URL library; never concatenate user input or allow it to change origin/path shape.",
"proof": "A clean checkout resolves dependencies and configuration without a credential in source, generated assets, logs, or screenshots."
},
{
"title": "Build one useful result",
"instruction": "Render human-readable destination context, the hand-off link, and a copyable/browser fallback that preserve the same stable intent.",
"proof": "The application produces the stated outcome—a place link that reaches the same intent across app and browser fallbacks—through one application-owned interface."
},
{
"title": "Run the release path",
"instruction": "Test installed/uninstalled app, mobile/desktop browsers, messaging, email, QR, in-app webviews, offline state, and rewritten links.",
"proof": "The documented command or platform release workflow succeeds from a clean environment, not only an already-configured IDE or debug session."
},
{
"title": "Break it deliberately",
"instruction": "Exercise missing/denied credentials, unavailable network or runtime, invalid input, cancellation, and cleanup. Show a bounded user-safe failure while retaining a correlation identity for support.",
"proof": "The failure plan is automated or captured as repeatable evidence, and no fixture behavior is represented as live Mappls data."
}
],
"verification": [
"Every supported channel reaches the same destination intent or a useful visible fallback without sensitive query data.",
"A blocked, missing, or unentitled provider produces a useful explicit failure rather than a blank surface or fabricated result.",
"No server credential, bearer value, precise private fixture, or provider response body appears in client bundles, logs, screenshots, or test artifacts.",
"Resources, listeners, sessions, processes, or requests stop cleanly when the owning screen, request, or application ends."
],
"debugging": [
{
"signal": "A channel opens a generic page or different destination",
"likelyCause": "The association, link shape, encoding, redirector, app installation state, or channel rewriting altered the documented intent.",
"nextAction": "Compare the final URL components without private data, bypass unapproved redirectors, and retest installed/uninstalled fallback against the exact guide."
},
{
"signal": "Authentication or entitlement is rejected",
"likelyCause": "The credential class, restriction, account region, host/path generation, package application, or subscribed capability does not match.",
"nextAction": "Do not try another credential shape blindly. Capture the safe status/request identity and reconcile the exact contract in the developer console or support packet."
},
{
"signal": "The sample works once but not after reload, backgrounding, or a second run",
"likelyCause": "Lifecycle ownership, listener disposal, token/session refresh, saved state, or a singleton initialization boundary is incomplete.",
"nextAction": "Instrument create/ready/cancel/destroy transitions and prove one owner before adding product behavior."
}
]
}
```
## quickstart · Connect a read-only Mappls agent
- Identity: `quickstart:mcp-agent`
- Canonical: https://developer.mappls.com/quickstart/mcp-agent
```json
{
"slug": "mcp-agent",
"platform": "MCP",
"title": "Connect a read-only Mappls agent",
"outcome": "a grounded documentation query through local stdio or authenticated stateless HTTP",
"duration": "15 minutes",
"readiness": "local-reference",
"sourceGuideSlugs": [],
"credentialBoundary": "Keep provider credentials in the MCP server process or approved secret provider, never model context or client configuration committed to source. A remote internal gateway bearer or issuer-bound OAuth access token is independent from every Mappls provider credential. Documentation and migration tools require no live credential.",
"evidenceBoundary": "The MCP implementation is maintained in this repository and protocol-tested over stdio and Streamable HTTP. Live tool success still depends on the issued account, operation, region, and credential scope; production OAuth authorization-server registration, consent, lifecycle, and revocation remain company integrations.",
"prerequisites": [
"Node.js 22 or newer",
"An MCP-capable client or the downloadable Spatial Operations Agent",
"A built `@mappls/mcp-server` package",
"No credential for offline discovery; separately scoped non-production credentials only for approved live reads"
],
"configure": "Build the server; start the Spatial Operations Agent in fixture mode or register its absolute local stdio entrypoint or exact authenticated HTTPS Streamable HTTP resource; keep the default remote profile offline; choose the controlled static-bearer hop or OAuth JWT resource-server mode; keep gateway and provider credentials separate; and grant no state-changing Mappls operation.",
"build": "Run the sample's solution_research journey across any of sixteen industries and thirteen target platforms, generate the portable integration manifest, then call the product-platform capability matrix, capability qualification planner, and live-conformance planner, documentation search, generation comparison, documentation coverage, and the exact stateful journey workshop before proposing integration code.",
"exercise": "Run both server protocol suites and the fifteen-test agent suite; prove the default remote endpoint lists only 32 credential-free tools and rejects a hidden live call; execute one real stdio offline solution plan and integration manifest; retrieve one exact product-platform decision, its six-phase qualification journey, a bounded live-conformance plan, and an eight-lab journey workshop; prove exact generation differences and coverage gaps remain visible and ambiguous authentication choices remain selection-required; validate protected-resource discovery plus wrong-audience/expired/insufficient-scope tokens; reject unauthorized, wrong-origin, unsafe URL, oversized-body/output, missing-provenance, and token-reflection paths; and verify credential-shaped failures are redacted.",
"platformProof": "Fixture, real stdio, and remote HTTP share one governed application client contract. Local stdio and an explicit live-read deployment advertise 42 typed tools; default remote HTTP advertises only the 32 credential-free tools. Both profiles retain 38 resources and two prompts, OAuth mode binds an attributable principal/client/scope to the exact resource, remote HTTP retains no session registry, and no profile exposes writes.",
"platformFailure": {
"signal": "The client starts but lists no tools/resources, or a planned tool is unavailable",
"likelyCause": "The package was not built, the stdio path/runtime or remote URL/auth is wrong, the configured profile is offline while the plan needs live-read, JWT issuer/audience/scope is mismatched, stdout contains non-protocol output, or a host/origin allowlist rejected the client.",
"nextAction": "Run the package build and protocol test directly, use solution_research and mappls_get_authentication_path to prove offline negotiation and credential placement, check credential-free health and protected-resource metadata, inspect only safe token classification, verify the absolute local entrypoint or exact HTTPS resource identity, then reconnect with the smallest profile."
},
"runCommands": [
"npm run build --workspace @mappls/mcp-server",
"npm run test --workspace @mappls/mcp-server",
"node packages/mcp-server/dist/index.js",
"MAPPLS_MCP_HTTP_BEARER_TOKEN=YOUR_INDEPENDENT_32_BYTE_SECRET npm run start:http --workspace @mappls/mcp-server"
],
"samples": [
{
"language": "json",
"label": "Local stdio client",
"code": "{\n \"mcpServers\": {\n \"mappls\": {\n \"command\": \"node\",\n \"args\": [\"/absolute/path/packages/mcp-server/dist/index.js\"],\n \"env\": {\n \"MAPPLS_STATIC_KEY\": \"${MAPPLS_STATIC_KEY}\",\n \"MAPPLS_INTOUCH_ACCESS_TOKEN\": \"${MAPPLS_INTOUCH_ACCESS_TOKEN}\"\n }\n }\n }\n}"
},
{
"language": "json",
"label": "Remote Streamable HTTP client",
"code": "{\n \"mcpServers\": {\n \"mappls-remote\": {\n \"type\": \"streamable-http\",\n \"url\": \"https://mcp.developers.example.com/mcp\",\n \"headers\": { \"Authorization\": \"Bearer ${MAPPLS_MCP_REMOTE_TOKEN}\" }\n }\n }\n}"
}
],
"nextTutorialSlugs": [
"mappls-mcp-agent"
],
"productionChecks": [
"Tools have least authority",
"Gateway/OAuth and provider credentials are independent",
"Issuer, resource audience, principal, client, expiry, and profile scope are enforced",
"Consent, rate limiting, revocation, TLS, and egress are production-governed",
"Writes require separate design/approval",
"Results preserve provenance",
"Calls are scoped, metered, redacted, and traceable"
],
"steps": [
{
"title": "Confirm the source line",
"instruction": "Open the linked evidence and confirm the exact MCP package, endpoint, toolchain, region, and account entitlement before installing anything. The MCP implementation is maintained in this repository and protocol-tested over stdio and Streamable HTTP. Live tool success still depends on the issued account, operation, region, and credential scope; production OAuth authorization-server registration, consent, lifecycle, and revocation remain company integrations.",
"proof": "Record the guide slug, source fingerprint, selected version or contract generation, and approving owner in the project README."
},
{
"title": "Create a clean boundary",
"instruction": "Build the server; start the Spatial Operations Agent in fixture mode or register its absolute local stdio entrypoint or exact authenticated HTTPS Streamable HTTP resource; keep the default remote profile offline; choose the controlled static-bearer hop or OAuth JWT resource-server mode; keep gateway and provider credentials separate; and grant no state-changing Mappls operation.",
"proof": "A clean checkout resolves dependencies and configuration without a credential in source, generated assets, logs, or screenshots."
},
{
"title": "Build one useful result",
"instruction": "Run the sample's solution_research journey across any of sixteen industries and thirteen target platforms, generate the portable integration manifest, then call the product-platform capability matrix, capability qualification planner, and live-conformance planner, documentation search, generation comparison, documentation coverage, and the exact stateful journey workshop before proposing integration code.",
"proof": "The application produces the stated outcome—a grounded documentation query through local stdio or authenticated stateless http—through one application-owned interface."
},
{
"title": "Run the release path",
"instruction": "Run both server protocol suites and the fifteen-test agent suite; prove the default remote endpoint lists only 32 credential-free tools and rejects a hidden live call; execute one real stdio offline solution plan and integration manifest; retrieve one exact product-platform decision, its six-phase qualification journey, a bounded live-conformance plan, and an eight-lab journey workshop; prove exact generation differences and coverage gaps remain visible and ambiguous authentication choices remain selection-required; validate protected-resource discovery plus wrong-audience/expired/insufficient-scope tokens; reject unauthorized, wrong-origin, unsafe URL, oversized-body/output, missing-provenance, and token-reflection paths; and verify credential-shaped failures are redacted.",
"proof": "The documented command or platform release workflow succeeds from a clean environment, not only an already-configured IDE or debug session."
},
{
"title": "Break it deliberately",
"instruction": "Exercise missing/denied credentials, unavailable network or runtime, invalid input, cancellation, and cleanup. Show a bounded user-safe failure while retaining a correlation identity for support.",
"proof": "The failure plan is automated or captured as repeatable evidence, and no fixture behavior is represented as live Mappls data."
}
],
"verification": [
"Fixture, real stdio, and remote HTTP share one governed application client contract. Local stdio and an explicit live-read deployment advertise 42 typed tools; default remote HTTP advertises only the 32 credential-free tools. Both profiles retain 38 resources and two prompts, OAuth mode binds an attributable principal/client/scope to the exact resource, remote HTTP retains no session registry, and no profile exposes writes.",
"A blocked, missing, or unentitled provider produces a useful explicit failure rather than a blank surface or fabricated result.",
"No server credential, bearer value, precise private fixture, or provider response body appears in client bundles, logs, screenshots, or test artifacts.",
"Resources, listeners, sessions, processes, or requests stop cleanly when the owning screen, request, or application ends."
],
"debugging": [
{
"signal": "The client starts but lists no tools/resources, or a planned tool is unavailable",
"likelyCause": "The package was not built, the stdio path/runtime or remote URL/auth is wrong, the configured profile is offline while the plan needs live-read, JWT issuer/audience/scope is mismatched, stdout contains non-protocol output, or a host/origin allowlist rejected the client.",
"nextAction": "Run the package build and protocol test directly, use solution_research and mappls_get_authentication_path to prove offline negotiation and credential placement, check credential-free health and protected-resource metadata, inspect only safe token classification, verify the absolute local entrypoint or exact HTTPS resource identity, then reconnect with the smallest profile."
},
{
"signal": "Authentication or entitlement is rejected",
"likelyCause": "The credential class, restriction, account region, host/path generation, package application, or subscribed capability does not match.",
"nextAction": "Do not try another credential shape blindly. Capture the safe status/request identity and reconcile the exact contract in the developer console or support packet."
},
{
"signal": "The sample works once but not after reload, backgrounding, or a second run",
"likelyCause": "Lifecycle ownership, listener disposal, token/session refresh, saved state, or a singleton initialization boundary is incomplete.",
"nextAction": "Instrument create/ready/cancel/destroy transitions and prove one owner before adding product behavior."
}
]
}
```
## capability-decision · Maps · REST
- Identity: `capability-decision:maps--rest`
- Canonical: https://developer.mappls.com/platforms/matrix?product=maps&platform=rest
- State model: stateless
```json
{
"id": "maps--rest",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "rest",
"name": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateless",
"integrationLane": "trusted-service",
"capabilities": [
"Vector and raster basemaps",
"Markers, shapes, layers, and overlays",
"Traffic and thematic visualization",
"Custom styles and camera controls",
"Static and travelled-route images",
"Offline and embedded map packages"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-angular-sample-websdk-rest",
"title": "Angular Sample for MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web",
"href": "/reference/mapmyindia-angular-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/reference/mapmyindia-interactive-map-js-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-mgis-apis",
"title": "Mappls mGIS APIs",
"href": "/reference/mapmyindia-mgis-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-purejs-sample-websdk-rest",
"title": "MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web in Pure JS",
"href": "/reference/mapmyindia-purejs-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-rest-api",
"title": "Mapmyindia REST API",
"href": "/reference/mapmyindia-rest-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-workmate-apis",
"title": "Mappls by MapmyIndia-Workmate-Apis",
"href": "/reference/mapmyindia-workmate-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ai-apis",
"title": "MAPPLS AI / ML APIs",
"href": "/reference/mappls-ai-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-rest-apis",
"title": "Mappls Map APIs (REST) !",
"href": "/reference/mappls-rest-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "skydnn-aiapi-docs",
"title": "Skydnn AI APIs",
"href": "/reference/skydnn-aiapi-docs"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/sdks/mapmyindia-interactive-map-js-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-woodpecker-address-standardization-api",
"title": "Address Standardization API",
"href": "/api-reference/core-location-get-api-places-woodpecker-address-standardization-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-search-json-autosuggest-api",
"title": "AutoSuggest API",
"href": "/api-reference/core-location-get-api-places-search-json-autosuggest-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-distance-matrix-api",
"title": "Distance Matrix API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-distance-matrix-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-distance-matrix-predictive-driving-coordinates-distance-matrix-predictive-eta-api",
"title": "Distance Matrix Predictive ETA API",
"href": "/api-reference/core-location-get-rest-key-distance-matrix-predictive-driving-coordinates-distance-matrix-predictive-eta-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-elevation-elevation-api",
"title": "Elevation API",
"href": "/api-reference/core-location-get-rest-key-elevation-elevation-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-geocode-geocode-api",
"title": "Geocode API",
"href": "/api-reference/core-location-get-api-places-geocode-geocode-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-nearby-json-nearby-api",
"title": "Nearby API",
"href": "/api-reference/core-location-get-api-places-nearby-json-nearby-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-api-places-along-route-poi-along-the-route-api",
"title": "POI Along the Route API",
"href": "/api-reference/core-location-post-api-places-along-route-poi-along-the-route-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-apis-o2o-entity-eloc-place-detail-api",
"title": "Place Detail API",
"href": "/api-reference/core-location-get-apis-o2o-entity-eloc-place-detail-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-rev-geocode-reverse-geocode-api",
"title": "Reverse Geocode API",
"href": "/api-reference/core-location-get-rest-key-rev-geocode-reverse-geocode-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-route-optimization-api",
"title": "Route Optimization API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-route-optimization-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-routing-api",
"title": "Routing API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-routing-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-biking-geopositions-routing-api-with-biking-profile",
"title": "Routing API with biking profile",
"href": "/api-reference/core-location-get-rest-key-resources-biking-geopositions-routing-api-with-biking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-driving-geopositions-routing-api-with-driving-profile",
"title": "Routing API with driving profile",
"href": "/api-reference/core-location-get-rest-key-resources-driving-geopositions-routing-api-with-driving-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-trucking-geopositions-routing-api-with-trucking-profile",
"title": "Routing API with trucking profile",
"href": "/api-reference/core-location-get-rest-key-resources-trucking-geopositions-routing-api-with-trucking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-walking-geopositions-routing-api-with-walking-profile",
"title": "Routing API with walking profile",
"href": "/api-reference/core-location-get-rest-key-resources-walking-geopositions-routing-api-with-walking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-rest-key-snaptoroad-snap-to-road-api",
"title": "Snap to Road API",
"href": "/api-reference/core-location-post-rest-key-snaptoroad-snap-to-road-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-still-image-still-map-image-api",
"title": "Still Map Image API",
"href": "/api-reference/core-location-get-rest-key-still-image-still-map-image-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-textsearch-json-text-search-api",
"title": "Text Search API",
"href": "/api-reference/core-location-get-api-places-textsearch-json-text-search-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-security-oauth-token-token-generation-api",
"title": "Token Generation API",
"href": "/api-reference/core-location-post-security-oauth-token-token-generation-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-rest-key-still-image-polyline-traveled-route-image-api",
"title": "Traveled Route Image API",
"href": "/api-reference/core-location-post-rest-key-still-image-polyline-traveled-route-image-api"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "route-preview",
"title": "Build a route preview with alternatives",
"href": "/tutorials/route-preview"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "fleet-geofences",
"title": "Build fleet geofence operations",
"href": "/tutorials/fleet-geofences"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "static-map-receipt",
"title": "Generate static maps for receipts and notifications",
"href": "/tutorials/static-map-receipt"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "traffic-aware-commute",
"title": "Build a traffic-aware commute assistant",
"href": "/tutorials/traffic-aware-commute"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "rest-api",
"title": "Your first trusted Mappls request",
"href": "/quickstart/rest-api"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "rest-api-starter",
"title": "Trusted REST service starter",
"href": "/starter-kits/rest-api-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"evidenceCounts": {
"sourceGuides": 9,
"sdks": 1,
"apiOperations": 21,
"tutorials": 4,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 0
},
"primaryHref": "/tutorials/route-preview",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=maps&platform=rest",
"apiPath": "/api/capability-matrix?product=maps&platform=rest",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Maps · Web
- Identity: `capability-decision:maps--web`
- Canonical: https://developer.mappls.com/platforms/matrix?product=maps&platform=web
- State model: stateless
```json
{
"id": "maps--web",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "web",
"name": "Web",
"headline": "Build expressive browser maps without surrendering performance or control."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateless",
"integrationLane": "browser-or-embed",
"capabilities": [
"Vector and raster basemaps",
"Markers, shapes, layers, and overlays",
"Traffic and thematic visualization",
"Custom styles and camera controls",
"Static and travelled-route images",
"Offline and embedded map packages"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-angular-sample-websdk-rest",
"title": "Angular Sample for MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web",
"href": "/reference/mapmyindia-angular-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-geoanalytics-api-web",
"title": "MapmyIndia Geo-Analytics APIs !",
"href": "/reference/mapmyindia-geoanalytics-api-web"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/reference/mapmyindia-interactive-map-js-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-nearby-covid-places",
"title": "Mapmyindia Nearby Covid Places",
"href": "/reference/mapmyindia-nearby-covid-places"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-purejs-sample-websdk-rest",
"title": "MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web in Pure JS",
"href": "/reference/mapmyindia-purejs-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-vector-maps-js-web-sdk",
"title": "Mapmyindia Vector Maps JS Web SDK",
"href": "/reference/mapmyindia-vector-maps-js-web-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-maps",
"title": "Sign up for Mappls",
"href": "/reference/mappls-web-maps"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-maps-js",
"title": "Mappls Web Maps JS",
"href": "/reference/mappls-web-maps-js"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-plugins",
"title": "Mappls Web Plugins",
"href": "/reference/mappls-web-plugins"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-vector-maps-js-web-sdk",
"title": "Mapmyindia Vector Maps JS Web SDK",
"href": "/sdks/mapmyindia-vector-maps-js-web-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/sdks/mapmyindia-interactive-map-js-api"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "first-web-map",
"title": "Put your first Mappls map on the web",
"href": "/tutorials/first-web-map"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "route-preview",
"title": "Build a route preview with alternatives",
"href": "/tutorials/route-preview"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "nearby-discovery",
"title": "Create a nearby discovery experience",
"href": "/tutorials/nearby-discovery"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "fleet-geofences",
"title": "Build fleet geofence operations",
"href": "/tutorials/fleet-geofences"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "traffic-aware-commute",
"title": "Build a traffic-aware commute assistant",
"href": "/tutorials/traffic-aware-commute"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "geojson-operations-layer",
"title": "Render a governed GeoJSON operations layer",
"href": "/tutorials/geojson-operations-layer"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "web-map",
"title": "Render one accessible web map",
"href": "/quickstart/web-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "web-map-starter",
"title": "Accessible web map host starter",
"href": "/starter-kits/web-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"evidenceCounts": {
"sourceGuides": 9,
"sdks": 2,
"apiOperations": 0,
"tutorials": 6,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 0
},
"primaryHref": "/tutorials/first-web-map",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=maps&platform=web",
"apiPath": "/api/capability-matrix?product=maps&platform=web",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Maps · Android
- Identity: `capability-decision:maps--android`
- Canonical: https://developer.mappls.com/platforms/matrix?product=maps&platform=android
- State model: stateless
```json
{
"id": "maps--android",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "android",
"name": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateless",
"integrationLane": "native-client",
"capabilities": [
"Vector and raster basemaps",
"Markers, shapes, layers, and overlays",
"Traffic and thematic visualization",
"Custom styles and camera controls",
"Static and travelled-route images",
"Offline and embedded map packages"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/reference/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-compose-demo",
"title": "Mappls Vector Map Android SDK JetPack Compose",
"href": "/reference/mappls-android-compose-demo"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/reference/mappls-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/reference/mappls-camera-sdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/sdks/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/sdks/mappls-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/sdks/mappls-camera-sdk-android"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "android-map",
"title": "Add Mappls to an Android app",
"href": "/tutorials/android-map"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "android-native",
"title": "Create a lifecycle-safe Android map",
"href": "/quickstart/android-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "android-native-starter",
"title": "Android lifecycle adapter starter",
"href": "/starter-kits/android-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"evidenceCounts": {
"sourceGuides": 4,
"sdks": 3,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 0
},
"primaryHref": "/tutorials/android-map",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=maps&platform=android",
"apiPath": "/api/capability-matrix?product=maps&platform=android",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Maps · iOS
- Identity: `capability-decision:maps--ios`
- Canonical: https://developer.mappls.com/platforms/matrix?product=maps&platform=ios
- State model: stateless
```json
{
"id": "maps--ios",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "ios",
"name": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateless",
"integrationLane": "native-client",
"capabilities": [
"Vector and raster basemaps",
"Markers, shapes, layers, and overlays",
"Traffic and thematic visualization",
"Custom styles and camera controls",
"Static and travelled-route images",
"Offline and embedded map packages"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-ios-sdk",
"title": "MapmyIndia Intouch iOS SDK",
"href": "/reference/mapmyindia-intouch-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-ios",
"title": "Mapmyindia Maps VectorSDK IOS",
"href": "/reference/mapmyindia-maps-vectorsdk-ios"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution",
"title": "Mappls Annotation Extension for iOS",
"href": "/reference/mappls-annotation-extension-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution-base",
"title": "Mappls Annotation Extension for iOS",
"href": "/reference/mappls-annotation-extension-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/reference/mappls-api-kit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution-base",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/reference/mappls-api-kit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-ios-distribution",
"title": "MapplsCamera SDK for iOS",
"href": "/reference/mappls-camera-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-ios",
"title": "MapplsCamera SDK for iOS",
"href": "/reference/mappls-camera-sdk-ios"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution",
"title": "MapplsDirectionUI for iOS",
"href": "/reference/mappls-direction-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution-base",
"title": "MapplsDirectionUI for iOS",
"href": "/reference/mappls-direction-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/reference/mappls-drivingrange-plugin-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution-base",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/reference/mappls-drivingrange-plugin-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/reference/mappls-feedback-uikit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution-base",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/reference/mappls-feedback-uikit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/reference/mappls-geoanalytics-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution-base",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/reference/mappls-geoanalytics-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/reference/mappls-geofence-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution-base",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/reference/mappls-geofence-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/reference/mappls-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-move-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/reference/mappls-nearby-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution-base",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/reference/mappls-nearby-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/reference/mappls-raster-catalogue-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution-base",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/reference/mappls-raster-catalogue-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-move-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/sdks/mappls-api-kit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution-base",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/sdks/mappls-api-kit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-ios-sdk",
"title": "MapmyIndia Intouch iOS SDK",
"href": "/sdks/mapmyindia-intouch-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-ios",
"title": "Mapmyindia Maps VectorSDK IOS",
"href": "/sdks/mapmyindia-maps-vectorsdk-ios"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution",
"title": "Mappls Annotation Extension for iOS",
"href": "/sdks/mappls-annotation-extension-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution-base",
"title": "Mappls Annotation Extension for iOS",
"href": "/sdks/mappls-annotation-extension-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/sdks/mappls-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/sdks/mappls-nearby-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution-base",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/sdks/mappls-nearby-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-ios-distribution",
"title": "MapplsCamera SDK for iOS",
"href": "/sdks/mappls-camera-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-ios",
"title": "MapplsCamera SDK for iOS",
"href": "/sdks/mappls-camera-sdk-ios"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution",
"title": "MapplsDirectionUI for iOS",
"href": "/sdks/mappls-direction-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution-base",
"title": "MapplsDirectionUI for iOS",
"href": "/sdks/mappls-direction-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/sdks/mappls-drivingrange-plugin-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution-base",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/sdks/mappls-drivingrange-plugin-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/sdks/mappls-feedback-uikit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution-base",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/sdks/mappls-feedback-uikit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/sdks/mappls-geoanalytics-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution-base",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/sdks/mappls-geoanalytics-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/sdks/mappls-geofence-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution-base",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/sdks/mappls-geofence-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/sdks/mappls-raster-catalogue-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution-base",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/sdks/mappls-raster-catalogue-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "ios-map",
"title": "Add Mappls to an iOS app with Swift Package Manager",
"href": "/tutorials/ios-map"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "ios-sdk-production-readiness",
"title": "Qualify an iOS Mappls release",
"href": "/tutorials/ios-sdk-production-readiness"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "ios-native",
"title": "Create a lifecycle-safe iOS map",
"href": "/quickstart/ios-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "ios-native-starter",
"title": "iOS view-ownership starter",
"href": "/starter-kits/ios-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"evidenceCounts": {
"sourceGuides": 30,
"sdks": 30,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 0
},
"primaryHref": "/tutorials/ios-map",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=maps&platform=ios",
"apiPath": "/api/capability-matrix?product=maps&platform=ios",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Maps · React Native
- Identity: `capability-decision:maps--react-native`
- Canonical: https://developer.mappls.com/platforms/matrix?product=maps&platform=react-native
- State model: stateless
```json
{
"id": "maps--react-native",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "react-native",
"name": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateless",
"integrationLane": "native-client",
"capabilities": [
"Vector and raster basemaps",
"Markers, shapes, layers, and overlays",
"Traffic and thematic visualization",
"Custom styles and camera controls",
"Static and travelled-route images",
"Offline and embedded map packages"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-map-react-native-beta",
"title": "Mapmyindia Maps SDK for React Native beta",
"href": "/reference/mapmyindia-map-react-native-beta"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-restapi-react-native-beta",
"title": "Mapmyindia REST API SDK for React Native - beta",
"href": "/reference/mapmyindia-restapi-react-native-beta"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-react-native-sdk",
"title": "Mappls React Native SDK",
"href": "/reference/mappls-react-native-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-restapi-react-native-beta",
"title": "Mapmyindia REST API SDK for React Native - beta",
"href": "/sdks/mapmyindia-restapi-react-native-beta"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-react-native-sdk",
"title": "Mappls React Native SDK",
"href": "/sdks/mappls-react-native-sdk"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "react-native-map",
"title": "Build a cross-platform React Native map",
"href": "/tutorials/react-native-map"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "react-native-native-parity",
"title": "Qualify React Native native parity",
"href": "/tutorials/react-native-native-parity"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "react-native-map",
"title": "Bridge one map feature across Android and iOS",
"href": "/quickstart/react-native-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "react-native-map-starter",
"title": "React Native bridge-contract starter",
"href": "/starter-kits/react-native-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"evidenceCounts": {
"sourceGuides": 3,
"sdks": 2,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 0
},
"primaryHref": "/tutorials/react-native-map",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=maps&platform=react-native",
"apiPath": "/api/capability-matrix?product=maps&platform=react-native",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Maps · Flutter
- Identity: `capability-decision:maps--flutter`
- Canonical: https://developer.mappls.com/platforms/matrix?product=maps&platform=flutter
- State model: stateless
```json
{
"id": "maps--flutter",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "flutter",
"name": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateless",
"integrationLane": "native-client",
"capabilities": [
"Vector and raster basemaps",
"Markers, shapes, layers, and overlays",
"Traffic and thematic visualization",
"Custom styles and camera controls",
"Static and travelled-route images",
"Offline and embedded map packages"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "flutter-mapmyindia-gl",
"title": "Flutter MapmyIndia GL",
"href": "/reference/flutter-mapmyindia-gl"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-flutter-sdk",
"title": "Mappls Flutter SDK",
"href": "/reference/mappls-flutter-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "flutter-mapmyindia-gl",
"title": "Flutter MapmyIndia GL",
"href": "/sdks/flutter-mapmyindia-gl"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-flutter-sdk",
"title": "Mappls Flutter SDK",
"href": "/sdks/mappls-flutter-sdk"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "flutter-map",
"title": "Build a Flutter map and place picker",
"href": "/tutorials/flutter-map"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "flutter-production-lifecycle",
"title": "Production-harden a Flutter location feature",
"href": "/tutorials/flutter-production-lifecycle"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "flutter-map",
"title": "Build a native-backed Flutter place picker",
"href": "/quickstart/flutter-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "flutter-map-starter",
"title": "Flutter place-selection starter",
"href": "/starter-kits/flutter-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"evidenceCounts": {
"sourceGuides": 2,
"sdks": 2,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 0
},
"primaryHref": "/tutorials/flutter-map",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=maps&platform=flutter",
"apiPath": "/api/capability-matrix?product=maps&platform=flutter",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Maps · Cordova
- Identity: `capability-decision:maps--cordova`
- Canonical: https://developer.mappls.com/platforms/matrix?product=maps&platform=cordova
- State model: stateless
```json
{
"id": "maps--cordova",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "cordova",
"name": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateless",
"integrationLane": "native-client",
"capabilities": [
"Vector and raster basemaps",
"Markers, shapes, layers, and overlays",
"Traffic and thematic visualization",
"Custom styles and camera controls",
"Static and travelled-route images",
"Offline and embedded map packages"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-map-cordova-ionic-beta",
"title": "MapmyIndia Map SDK for Cordova/Ionic - Beta 1",
"href": "/reference/mapmyindia-map-cordova-ionic-beta"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "cordova-map",
"title": "Ship a Mappls map in Cordova and Ionic",
"href": "/tutorials/cordova-map"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "cordova-release-hardening",
"title": "Qualify a Cordova location release",
"href": "/tutorials/cordova-release-hardening"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance",
"title": "Stabilize a Cordova map before migration",
"href": "/quickstart/cordova-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance-starter",
"title": "Cordova stabilization starter",
"href": "/starter-kits/cordova-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"evidenceCounts": {
"sourceGuides": 1,
"sdks": 0,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 0
},
"primaryHref": "/tutorials/cordova-map",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=maps&platform=cordova",
"apiPath": "/api/capability-matrix?product=maps&platform=cordova",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Maps · Xamarin
- Identity: `capability-decision:maps--xamarin`
- Canonical: https://developer.mappls.com/platforms/matrix?product=maps&platform=xamarin
- State model: stateless
```json
{
"id": "maps--xamarin",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "xamarin",
"name": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateless",
"integrationLane": "native-client",
"capabilities": [
"Vector and raster basemaps",
"Markers, shapes, layers, and overlays",
"Traffic and thematic visualization",
"Custom styles and camera controls",
"Static and travelled-route images",
"Offline and embedded map packages"
],
"exactEvidence": [
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "xamarin-map",
"title": "Integrate Mappls into a Xamarin application",
"href": "/tutorials/xamarin-map"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "xamarin-maintenance-migration",
"title": "Harden and migrate a Xamarin location feature",
"href": "/tutorials/xamarin-maintenance-migration"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance",
"title": "Extract a Xamarin map integration for replacement",
"href": "/quickstart/xamarin-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance-starter",
"title": "Xamarin extraction starter",
"href": "/starter-kits/xamarin-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 0
},
"primaryHref": "/tutorials/xamarin-map",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=maps&platform=xamarin",
"apiPath": "/api/capability-matrix?product=maps&platform=xamarin",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Maps · Linux
- Identity: `capability-decision:maps--linux`
- Canonical: https://developer.mappls.com/platforms/matrix?product=maps&platform=linux
- State model: stateless
```json
{
"id": "maps--linux",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "linux",
"name": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateless",
"integrationLane": "entitled-runtime",
"capabilities": [
"Vector and raster basemaps",
"Markers, shapes, layers, and overlays",
"Traffic and thematic visualization",
"Custom styles and camera controls",
"Static and travelled-route images",
"Offline and embedded map packages"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "linux-embedded",
"title": "Boot a supervised embedded map client",
"href": "/quickstart/linux-embedded"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "linux-embedded-starter",
"title": "Embedded Linux supervisor starter",
"href": "/starter-kits/linux-embedded-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 0
},
"primaryHref": "/tutorials/linux-map-client",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=maps&platform=linux",
"apiPath": "/api/capability-matrix?product=maps&platform=linux",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Maps · Automotive
- Identity: `capability-decision:maps--automotive`
- Canonical: https://developer.mappls.com/platforms/matrix?product=maps&platform=automotive
- State model: stateless
```json
{
"id": "maps--automotive",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "automotive",
"name": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateless",
"integrationLane": "entitled-runtime",
"capabilities": [
"Vector and raster basemaps",
"Markers, shapes, layers, and overlays",
"Traffic and thematic visualization",
"Custom styles and camera controls",
"Static and travelled-route images",
"Offline and embedded map packages"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation",
"title": "Simulate one recoverable navigation session",
"href": "/quickstart/automotive-navigation"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation-starter",
"title": "Automotive release-manifest starter",
"href": "/starter-kits/automotive-navigation-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 0
},
"primaryHref": "/tutorials/linux-map-client",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=maps&platform=automotive",
"apiPath": "/api/capability-matrix?product=maps&platform=automotive",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Maps · Widgets
- Identity: `capability-decision:maps--widgets`
- Canonical: https://developer.mappls.com/platforms/matrix?product=maps&platform=widgets
- State model: stateless
```json
{
"id": "maps--widgets",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "widgets",
"name": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateless",
"integrationLane": "browser-or-embed",
"capabilities": [
"Vector and raster basemaps",
"Markers, shapes, layers, and overlays",
"Traffic and thematic visualization",
"Custom styles and camera controls",
"Static and travelled-route images",
"Offline and embedded map packages"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "widgets-place",
"title": "Embed a place journey with an owned fallback",
"href": "/quickstart/widgets-place"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "widgets-place-starter",
"title": "Widget journey host starter",
"href": "/starter-kits/widgets-place-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"evidenceCounts": {
"sourceGuides": 1,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 0
},
"primaryHref": "/quickstart/widgets-place",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=maps&platform=widgets",
"apiPath": "/api/capability-matrix?product=maps&platform=widgets",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Maps · Deep links
- Identity: `capability-decision:maps--deep-links`
- Canonical: https://developer.mappls.com/platforms/matrix?product=maps&platform=deep-links
- State model: stateless
```json
{
"id": "maps--deep-links",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "deep-links",
"name": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateless",
"integrationLane": "browser-or-embed",
"capabilities": [
"Vector and raster basemaps",
"Markers, shapes, layers, and overlays",
"Traffic and thematic visualization",
"Custom styles and camera controls",
"Static and travelled-route images",
"Offline and embedded map packages"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "deep-links",
"title": "Ship one zero-SDK Mappls hand-off",
"href": "/quickstart/deep-links"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "deep-links-starter",
"title": "Deep-link handoff starter",
"href": "/starter-kits/deep-links-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"evidenceCounts": {
"sourceGuides": 1,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 0
},
"primaryHref": "/quickstart/deep-links",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=maps&platform=deep-links",
"apiPath": "/api/capability-matrix?product=maps&platform=deep-links",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Maps · MCP
- Identity: `capability-decision:maps--mcp`
- Canonical: https://developer.mappls.com/platforms/matrix?product=maps&platform=mcp
- State model: stateless
```json
{
"id": "maps--mcp",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "mcp",
"name": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateless",
"integrationLane": "ai-client",
"capabilities": [
"Vector and raster basemaps",
"Markers, shapes, layers, and overlays",
"Traffic and thematic visualization",
"Custom styles and camera controls",
"Static and travelled-route images",
"Offline and embedded map packages"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "mcp-agent",
"title": "Connect a read-only Mappls agent",
"href": "/quickstart/mcp-agent"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "mcp-agent-starter",
"title": "MCP client policy starter",
"href": "/starter-kits/mcp-agent-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"evidenceCounts": {
"sourceGuides": 2,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 0
},
"primaryHref": "/quickstart/mcp-agent",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=maps&platform=mcp",
"apiPath": "/api/capability-matrix?product=maps&platform=mcp",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Search & Places · REST
- Identity: `capability-decision:search-places--rest`
- Canonical: https://developer.mappls.com/platforms/matrix?product=search-places&platform=rest
- State model: stateless
```json
{
"id": "search-places--rest",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "rest",
"name": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateless",
"integrationLane": "trusted-service",
"capabilities": [
"Autosuggest and text search",
"Forward and reverse geocoding",
"Nearby and route-corridor search",
"Place details and categories",
"Address validation and standardization",
"Mappls Pin and DIGIPIN workflows"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-angular-sample-websdk-rest",
"title": "Angular Sample for MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web",
"href": "/reference/mapmyindia-angular-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/reference/mapmyindia-interactive-map-js-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-mgis-apis",
"title": "Mappls mGIS APIs",
"href": "/reference/mapmyindia-mgis-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-purejs-sample-websdk-rest",
"title": "MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web in Pure JS",
"href": "/reference/mapmyindia-purejs-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-rest-api",
"title": "Mapmyindia REST API",
"href": "/reference/mapmyindia-rest-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ai-apis",
"title": "MAPPLS AI / ML APIs",
"href": "/reference/mappls-ai-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-rest-apis",
"title": "Mappls Map APIs (REST) !",
"href": "/reference/mappls-rest-apis"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/sdks/mapmyindia-interactive-map-js-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-woodpecker-address-standardization-api",
"title": "Address Standardization API",
"href": "/api-reference/core-location-get-api-places-woodpecker-address-standardization-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-search-json-autosuggest-api",
"title": "AutoSuggest API",
"href": "/api-reference/core-location-get-api-places-search-json-autosuggest-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-distance-matrix-api",
"title": "Distance Matrix API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-distance-matrix-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-distance-matrix-predictive-driving-coordinates-distance-matrix-predictive-eta-api",
"title": "Distance Matrix Predictive ETA API",
"href": "/api-reference/core-location-get-rest-key-distance-matrix-predictive-driving-coordinates-distance-matrix-predictive-eta-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-elevation-elevation-api",
"title": "Elevation API",
"href": "/api-reference/core-location-get-rest-key-elevation-elevation-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-geocode-geocode-api",
"title": "Geocode API",
"href": "/api-reference/core-location-get-api-places-geocode-geocode-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-nearby-json-nearby-api",
"title": "Nearby API",
"href": "/api-reference/core-location-get-api-places-nearby-json-nearby-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-api-places-along-route-poi-along-the-route-api",
"title": "POI Along the Route API",
"href": "/api-reference/core-location-post-api-places-along-route-poi-along-the-route-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-apis-o2o-entity-eloc-place-detail-api",
"title": "Place Detail API",
"href": "/api-reference/core-location-get-apis-o2o-entity-eloc-place-detail-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-rev-geocode-reverse-geocode-api",
"title": "Reverse Geocode API",
"href": "/api-reference/core-location-get-rest-key-rev-geocode-reverse-geocode-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-route-optimization-api",
"title": "Route Optimization API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-route-optimization-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-routing-api",
"title": "Routing API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-routing-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-biking-geopositions-routing-api-with-biking-profile",
"title": "Routing API with biking profile",
"href": "/api-reference/core-location-get-rest-key-resources-biking-geopositions-routing-api-with-biking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-driving-geopositions-routing-api-with-driving-profile",
"title": "Routing API with driving profile",
"href": "/api-reference/core-location-get-rest-key-resources-driving-geopositions-routing-api-with-driving-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-trucking-geopositions-routing-api-with-trucking-profile",
"title": "Routing API with trucking profile",
"href": "/api-reference/core-location-get-rest-key-resources-trucking-geopositions-routing-api-with-trucking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-walking-geopositions-routing-api-with-walking-profile",
"title": "Routing API with walking profile",
"href": "/api-reference/core-location-get-rest-key-resources-walking-geopositions-routing-api-with-walking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-rest-key-snaptoroad-snap-to-road-api",
"title": "Snap to Road API",
"href": "/api-reference/core-location-post-rest-key-snaptoroad-snap-to-road-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-still-image-still-map-image-api",
"title": "Still Map Image API",
"href": "/api-reference/core-location-get-rest-key-still-image-still-map-image-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-textsearch-json-text-search-api",
"title": "Text Search API",
"href": "/api-reference/core-location-get-api-places-textsearch-json-text-search-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-security-oauth-token-token-generation-api",
"title": "Token Generation API",
"href": "/api-reference/core-location-post-security-oauth-token-token-generation-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-rest-key-still-image-polyline-traveled-route-image-api",
"title": "Traveled Route Image API",
"href": "/api-reference/core-location-post-rest-key-still-image-polyline-traveled-route-image-api"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "address-autocomplete",
"title": "Build address autocomplete that users trust",
"href": "/tutorials/address-autocomplete"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "oauth-server-integration",
"title": "Call Mappls safely from a trusted server",
"href": "/tutorials/oauth-server-integration"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "rest-geocode-service",
"title": "Build a server-side geocoding boundary",
"href": "/tutorials/rest-geocode-service"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "reverse-geocode-check-in",
"title": "Turn a device fix into a trustworthy check-in",
"href": "/tutorials/reverse-geocode-check-in"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "distance-matrix-dispatch",
"title": "Rank responders with a distance matrix",
"href": "/tutorials/distance-matrix-dispatch"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "rest-api",
"title": "Your first trusted Mappls request",
"href": "/quickstart/rest-api"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "rest-api-starter",
"title": "Trusted REST service starter",
"href": "/starter-kits/rest-api-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"evidenceCounts": {
"sourceGuides": 7,
"sdks": 1,
"apiOperations": 21,
"tutorials": 5,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 10,
"journeys": 1
},
"primaryHref": "/tutorials/address-autocomplete",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=search-places&platform=rest",
"apiPath": "/api/capability-matrix?product=search-places&platform=rest",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Search & Places · Web
- Identity: `capability-decision:search-places--web`
- Canonical: https://developer.mappls.com/platforms/matrix?product=search-places&platform=web
- State model: stateless
```json
{
"id": "search-places--web",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "web",
"name": "Web",
"headline": "Build expressive browser maps without surrendering performance or control."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateless",
"integrationLane": "browser-or-embed",
"capabilities": [
"Autosuggest and text search",
"Forward and reverse geocoding",
"Nearby and route-corridor search",
"Place details and categories",
"Address validation and standardization",
"Mappls Pin and DIGIPIN workflows"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-angular-sample-websdk-rest",
"title": "Angular Sample for MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web",
"href": "/reference/mapmyindia-angular-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/reference/mapmyindia-interactive-map-js-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-nearby-covid-places",
"title": "Mapmyindia Nearby Covid Places",
"href": "/reference/mapmyindia-nearby-covid-places"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-purejs-sample-websdk-rest",
"title": "MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web in Pure JS",
"href": "/reference/mapmyindia-purejs-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-vector-maps-js-web-sdk",
"title": "Mapmyindia Vector Maps JS Web SDK",
"href": "/reference/mapmyindia-vector-maps-js-web-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-maps",
"title": "Sign up for Mappls",
"href": "/reference/mappls-web-maps"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-maps-js",
"title": "Mappls Web Maps JS",
"href": "/reference/mappls-web-maps-js"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-plugins",
"title": "Mappls Web Plugins",
"href": "/reference/mappls-web-plugins"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-vector-maps-js-web-sdk",
"title": "Mapmyindia Vector Maps JS Web SDK",
"href": "/sdks/mapmyindia-vector-maps-js-web-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/sdks/mapmyindia-interactive-map-js-api"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "address-autocomplete",
"title": "Build address autocomplete that users trust",
"href": "/tutorials/address-autocomplete"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "nearby-discovery",
"title": "Create a nearby discovery experience",
"href": "/tutorials/nearby-discovery"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "web-widget-place-picker",
"title": "Embed a place picker widget",
"href": "/tutorials/web-widget-place-picker"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "web-map",
"title": "Render one accessible web map",
"href": "/quickstart/web-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "web-map-starter",
"title": "Accessible web map host starter",
"href": "/starter-kits/web-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"evidenceCounts": {
"sourceGuides": 8,
"sdks": 2,
"apiOperations": 0,
"tutorials": 3,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 10,
"journeys": 1
},
"primaryHref": "/tutorials/address-autocomplete",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=search-places&platform=web",
"apiPath": "/api/capability-matrix?product=search-places&platform=web",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Search & Places · Android
- Identity: `capability-decision:search-places--android`
- Canonical: https://developer.mappls.com/platforms/matrix?product=search-places&platform=android
- State model: stateless
```json
{
"id": "search-places--android",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "android",
"name": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateless",
"integrationLane": "native-client",
"capabilities": [
"Autosuggest and text search",
"Forward and reverse geocoding",
"Nearby and route-corridor search",
"Place details and categories",
"Address validation and standardization",
"Mappls Pin and DIGIPIN workflows"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/reference/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-compose-demo",
"title": "Mappls Vector Map Android SDK JetPack Compose",
"href": "/reference/mappls-android-compose-demo"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/reference/mappls-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/reference/mappls-camera-sdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-location-capture-android-sdk",
"title": "Mappls Location Capture SDK",
"href": "/reference/mappls-location-capture-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/sdks/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/sdks/mappls-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/sdks/mappls-camera-sdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-location-capture-android-sdk",
"title": "Mappls Location Capture SDK",
"href": "/sdks/mappls-location-capture-android-sdk"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "android-native",
"title": "Create a lifecycle-safe Android map",
"href": "/quickstart/android-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "android-native-starter",
"title": "Android lifecycle adapter starter",
"href": "/starter-kits/android-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"evidenceCounts": {
"sourceGuides": 5,
"sdks": 4,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 10,
"journeys": 1
},
"primaryHref": "/sdks/mapmyindia-maps-vectorsdk-android",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=search-places&platform=android",
"apiPath": "/api/capability-matrix?product=search-places&platform=android",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Search & Places · iOS
- Identity: `capability-decision:search-places--ios`
- Canonical: https://developer.mappls.com/platforms/matrix?product=search-places&platform=ios
- State model: stateless
```json
{
"id": "search-places--ios",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "ios",
"name": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateless",
"integrationLane": "native-client",
"capabilities": [
"Autosuggest and text search",
"Forward and reverse geocoding",
"Nearby and route-corridor search",
"Place details and categories",
"Address validation and standardization",
"Mappls Pin and DIGIPIN workflows"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-ios",
"title": "Mapmyindia Maps VectorSDK IOS",
"href": "/reference/mapmyindia-maps-vectorsdk-ios"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution",
"title": "Mappls Annotation Extension for iOS",
"href": "/reference/mappls-annotation-extension-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution-base",
"title": "Mappls Annotation Extension for iOS",
"href": "/reference/mappls-annotation-extension-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/reference/mappls-api-kit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution-base",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/reference/mappls-api-kit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-ios-distribution",
"title": "MapplsCamera SDK for iOS",
"href": "/reference/mappls-camera-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-ios",
"title": "MapplsCamera SDK for iOS",
"href": "/reference/mappls-camera-sdk-ios"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution",
"title": "MapplsDirectionUI for iOS",
"href": "/reference/mappls-direction-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution-base",
"title": "MapplsDirectionUI for iOS",
"href": "/reference/mappls-direction-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution",
"title": "MapplsFeedbackKit for iOS",
"href": "/reference/mappls-feedback-kit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution-base",
"title": "MapplsFeedbackKit for iOS",
"href": "/reference/mappls-feedback-kit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/reference/mappls-geoanalytics-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution-base",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/reference/mappls-geoanalytics-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/reference/mappls-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-move-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/reference/mappls-nearby-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution-base",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/reference/mappls-nearby-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-move-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/sdks/mappls-api-kit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution-base",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/sdks/mappls-api-kit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-ios",
"title": "Mapmyindia Maps VectorSDK IOS",
"href": "/sdks/mapmyindia-maps-vectorsdk-ios"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution",
"title": "Mappls Annotation Extension for iOS",
"href": "/sdks/mappls-annotation-extension-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution-base",
"title": "Mappls Annotation Extension for iOS",
"href": "/sdks/mappls-annotation-extension-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/sdks/mappls-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/sdks/mappls-nearby-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution-base",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/sdks/mappls-nearby-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-ios-distribution",
"title": "MapplsCamera SDK for iOS",
"href": "/sdks/mappls-camera-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-ios",
"title": "MapplsCamera SDK for iOS",
"href": "/sdks/mappls-camera-sdk-ios"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution",
"title": "MapplsDirectionUI for iOS",
"href": "/sdks/mappls-direction-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution-base",
"title": "MapplsDirectionUI for iOS",
"href": "/sdks/mappls-direction-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution",
"title": "MapplsFeedbackKit for iOS",
"href": "/sdks/mappls-feedback-kit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution-base",
"title": "MapplsFeedbackKit for iOS",
"href": "/sdks/mappls-feedback-kit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/sdks/mappls-geoanalytics-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution-base",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/sdks/mappls-geoanalytics-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "ios-sdk-production-readiness",
"title": "Qualify an iOS Mappls release",
"href": "/tutorials/ios-sdk-production-readiness"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "ios-native",
"title": "Create a lifecycle-safe iOS map",
"href": "/quickstart/ios-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "ios-native-starter",
"title": "iOS view-ownership starter",
"href": "/starter-kits/ios-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"evidenceCounts": {
"sourceGuides": 23,
"sdks": 23,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 10,
"journeys": 1
},
"primaryHref": "/tutorials/ios-sdk-production-readiness",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=search-places&platform=ios",
"apiPath": "/api/capability-matrix?product=search-places&platform=ios",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Search & Places · React Native
- Identity: `capability-decision:search-places--react-native`
- Canonical: https://developer.mappls.com/platforms/matrix?product=search-places&platform=react-native
- State model: stateless
```json
{
"id": "search-places--react-native",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "react-native",
"name": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateless",
"integrationLane": "native-client",
"capabilities": [
"Autosuggest and text search",
"Forward and reverse geocoding",
"Nearby and route-corridor search",
"Place details and categories",
"Address validation and standardization",
"Mappls Pin and DIGIPIN workflows"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-map-react-native-beta",
"title": "Mapmyindia Maps SDK for React Native beta",
"href": "/reference/mapmyindia-map-react-native-beta"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-restapi-react-native-beta",
"title": "Mapmyindia REST API SDK for React Native - beta",
"href": "/reference/mapmyindia-restapi-react-native-beta"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-react-native-sdk",
"title": "Mappls React Native SDK",
"href": "/reference/mappls-react-native-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-restapi-react-native-beta",
"title": "Mapmyindia REST API SDK for React Native - beta",
"href": "/sdks/mapmyindia-restapi-react-native-beta"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-react-native-sdk",
"title": "Mappls React Native SDK",
"href": "/sdks/mappls-react-native-sdk"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "react-native-native-parity",
"title": "Qualify React Native native parity",
"href": "/tutorials/react-native-native-parity"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "react-native-map",
"title": "Bridge one map feature across Android and iOS",
"href": "/quickstart/react-native-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "react-native-map-starter",
"title": "React Native bridge-contract starter",
"href": "/starter-kits/react-native-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"evidenceCounts": {
"sourceGuides": 3,
"sdks": 2,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 10,
"journeys": 1
},
"primaryHref": "/tutorials/react-native-native-parity",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=search-places&platform=react-native",
"apiPath": "/api/capability-matrix?product=search-places&platform=react-native",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Search & Places · Flutter
- Identity: `capability-decision:search-places--flutter`
- Canonical: https://developer.mappls.com/platforms/matrix?product=search-places&platform=flutter
- State model: stateless
```json
{
"id": "search-places--flutter",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "flutter",
"name": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateless",
"integrationLane": "native-client",
"capabilities": [
"Autosuggest and text search",
"Forward and reverse geocoding",
"Nearby and route-corridor search",
"Place details and categories",
"Address validation and standardization",
"Mappls Pin and DIGIPIN workflows"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "flutter-mapmyindia-gl",
"title": "Flutter MapmyIndia GL",
"href": "/reference/flutter-mapmyindia-gl"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-flutter-sdk",
"title": "Mappls Flutter SDK",
"href": "/reference/mappls-flutter-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "flutter-mapmyindia-gl",
"title": "Flutter MapmyIndia GL",
"href": "/sdks/flutter-mapmyindia-gl"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-flutter-sdk",
"title": "Mappls Flutter SDK",
"href": "/sdks/mappls-flutter-sdk"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "flutter-map",
"title": "Build a Flutter map and place picker",
"href": "/tutorials/flutter-map"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "flutter-production-lifecycle",
"title": "Production-harden a Flutter location feature",
"href": "/tutorials/flutter-production-lifecycle"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "flutter-map",
"title": "Build a native-backed Flutter place picker",
"href": "/quickstart/flutter-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "flutter-map-starter",
"title": "Flutter place-selection starter",
"href": "/starter-kits/flutter-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"evidenceCounts": {
"sourceGuides": 2,
"sdks": 2,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 10,
"journeys": 1
},
"primaryHref": "/tutorials/flutter-map",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=search-places&platform=flutter",
"apiPath": "/api/capability-matrix?product=search-places&platform=flutter",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Search & Places · Cordova
- Identity: `capability-decision:search-places--cordova`
- Canonical: https://developer.mappls.com/platforms/matrix?product=search-places&platform=cordova
- State model: stateless
```json
{
"id": "search-places--cordova",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "cordova",
"name": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateless",
"integrationLane": "native-client",
"capabilities": [
"Autosuggest and text search",
"Forward and reverse geocoding",
"Nearby and route-corridor search",
"Place details and categories",
"Address validation and standardization",
"Mappls Pin and DIGIPIN workflows"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance",
"title": "Stabilize a Cordova map before migration",
"href": "/quickstart/cordova-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance-starter",
"title": "Cordova stabilization starter",
"href": "/starter-kits/cordova-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"evidenceCounts": {
"sourceGuides": 2,
"sdks": 1,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 10,
"journeys": 1
},
"primaryHref": "/tutorials/cordova-map",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=search-places&platform=cordova",
"apiPath": "/api/capability-matrix?product=search-places&platform=cordova",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Search & Places · Xamarin
- Identity: `capability-decision:search-places--xamarin`
- Canonical: https://developer.mappls.com/platforms/matrix?product=search-places&platform=xamarin
- State model: stateless
```json
{
"id": "search-places--xamarin",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "xamarin",
"name": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateless",
"integrationLane": "native-client",
"capabilities": [
"Autosuggest and text search",
"Forward and reverse geocoding",
"Nearby and route-corridor search",
"Place details and categories",
"Address validation and standardization",
"Mappls Pin and DIGIPIN workflows"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance",
"title": "Extract a Xamarin map integration for replacement",
"href": "/quickstart/xamarin-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance-starter",
"title": "Xamarin extraction starter",
"href": "/starter-kits/xamarin-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 10,
"journeys": 1
},
"primaryHref": "/tutorials/xamarin-map",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=search-places&platform=xamarin",
"apiPath": "/api/capability-matrix?product=search-places&platform=xamarin",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Search & Places · Linux
- Identity: `capability-decision:search-places--linux`
- Canonical: https://developer.mappls.com/platforms/matrix?product=search-places&platform=linux
- State model: stateless
```json
{
"id": "search-places--linux",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "linux",
"name": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateless",
"integrationLane": "entitled-runtime",
"capabilities": [
"Autosuggest and text search",
"Forward and reverse geocoding",
"Nearby and route-corridor search",
"Place details and categories",
"Address validation and standardization",
"Mappls Pin and DIGIPIN workflows"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "linux-embedded",
"title": "Boot a supervised embedded map client",
"href": "/quickstart/linux-embedded"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "linux-embedded-starter",
"title": "Embedded Linux supervisor starter",
"href": "/starter-kits/linux-embedded-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 10,
"journeys": 1
},
"primaryHref": "/quickstart/linux-embedded",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=search-places&platform=linux",
"apiPath": "/api/capability-matrix?product=search-places&platform=linux",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Search & Places · Automotive
- Identity: `capability-decision:search-places--automotive`
- Canonical: https://developer.mappls.com/platforms/matrix?product=search-places&platform=automotive
- State model: stateless
```json
{
"id": "search-places--automotive",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "automotive",
"name": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateless",
"integrationLane": "entitled-runtime",
"capabilities": [
"Autosuggest and text search",
"Forward and reverse geocoding",
"Nearby and route-corridor search",
"Place details and categories",
"Address validation and standardization",
"Mappls Pin and DIGIPIN workflows"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation",
"title": "Simulate one recoverable navigation session",
"href": "/quickstart/automotive-navigation"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation-starter",
"title": "Automotive release-manifest starter",
"href": "/starter-kits/automotive-navigation-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 10,
"journeys": 1
},
"primaryHref": "/quickstart/automotive-navigation",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=search-places&platform=automotive",
"apiPath": "/api/capability-matrix?product=search-places&platform=automotive",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Search & Places · Widgets
- Identity: `capability-decision:search-places--widgets`
- Canonical: https://developer.mappls.com/platforms/matrix?product=search-places&platform=widgets
- State model: stateless
```json
{
"id": "search-places--widgets",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "widgets",
"name": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateless",
"integrationLane": "browser-or-embed",
"capabilities": [
"Autosuggest and text search",
"Forward and reverse geocoding",
"Nearby and route-corridor search",
"Place details and categories",
"Address validation and standardization",
"Mappls Pin and DIGIPIN workflows"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-app-widgets",
"title": "Mappls App Widgets",
"href": "/reference/mappls-app-widgets"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-plugins",
"title": "Mappls Web Plugins",
"href": "/reference/mappls-web-plugins"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "web-widget-place-picker",
"title": "Embed a place picker widget",
"href": "/tutorials/web-widget-place-picker"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "widget-host-production",
"title": "Operate widgets as untrusted lifecycle surfaces",
"href": "/tutorials/widget-host-production"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "widgets-place",
"title": "Embed a place journey with an owned fallback",
"href": "/quickstart/widgets-place"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "widgets-place-starter",
"title": "Widget journey host starter",
"href": "/starter-kits/widgets-place-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"evidenceCounts": {
"sourceGuides": 2,
"sdks": 0,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 10,
"journeys": 1
},
"primaryHref": "/tutorials/web-widget-place-picker",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=search-places&platform=widgets",
"apiPath": "/api/capability-matrix?product=search-places&platform=widgets",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Search & Places · Deep links
- Identity: `capability-decision:search-places--deep-links`
- Canonical: https://developer.mappls.com/platforms/matrix?product=search-places&platform=deep-links
- State model: stateless
```json
{
"id": "search-places--deep-links",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "deep-links",
"name": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateless",
"integrationLane": "browser-or-embed",
"capabilities": [
"Autosuggest and text search",
"Forward and reverse geocoding",
"Nearby and route-corridor search",
"Place details and categories",
"Address validation and standardization",
"Mappls Pin and DIGIPIN workflows"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "deep-links",
"title": "Ship one zero-SDK Mappls hand-off",
"href": "/quickstart/deep-links"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "deep-links-starter",
"title": "Deep-link handoff starter",
"href": "/starter-kits/deep-links-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"evidenceCounts": {
"sourceGuides": 2,
"sdks": 0,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 10,
"journeys": 1
},
"primaryHref": "/tutorials/deep-link-attribution-resilience",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=search-places&platform=deep-links",
"apiPath": "/api/capability-matrix?product=search-places&platform=deep-links",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Search & Places · MCP
- Identity: `capability-decision:search-places--mcp`
- Canonical: https://developer.mappls.com/platforms/matrix?product=search-places&platform=mcp
- State model: stateless
```json
{
"id": "search-places--mcp",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "mcp",
"name": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateless",
"integrationLane": "ai-client",
"capabilities": [
"Autosuggest and text search",
"Forward and reverse geocoding",
"Nearby and route-corridor search",
"Place details and categories",
"Address validation and standardization",
"Mappls Pin and DIGIPIN workflows"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "mcp-agent",
"title": "Connect a read-only Mappls agent",
"href": "/quickstart/mcp-agent"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "mcp-agent-starter",
"title": "MCP client policy starter",
"href": "/starter-kits/mcp-agent-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"evidenceCounts": {
"sourceGuides": 1,
"sdks": 0,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 10,
"journeys": 1
},
"primaryHref": "/tutorials/mappls-mcp-agent",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=search-places&platform=mcp",
"apiPath": "/api/capability-matrix?product=search-places&platform=mcp",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Routes & Navigation · REST
- Identity: `capability-decision:routes-navigation--rest`
- Canonical: https://developer.mappls.com/platforms/matrix?product=routes-navigation&platform=rest
- State model: hybrid
```json
{
"id": "routes-navigation--rest",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "rest",
"name": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "hybrid",
"integrationLane": "trusted-service",
"capabilities": [
"Multi-profile routing and alternatives",
"Distance and time matrices",
"Trip and vehicle-route optimization",
"Map matching and snap-to-road",
"Predictive routes and refreshed ETAs",
"Online and offline turn-by-turn navigation"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/reference/mapmyindia-interactive-map-js-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-mgis-apis",
"title": "Mappls mGIS APIs",
"href": "/reference/mapmyindia-mgis-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-purejs-sample-websdk-rest",
"title": "MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web in Pure JS",
"href": "/reference/mapmyindia-purejs-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-rest-api",
"title": "Mapmyindia REST API",
"href": "/reference/mapmyindia-rest-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-rest-apis",
"title": "Mappls Intouch REST Apis",
"href": "/reference/mappls-intouch-rest-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-rest-apis",
"title": "Mappls Map APIs (REST) !",
"href": "/reference/mappls-rest-apis"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/sdks/mapmyindia-interactive-map-js-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-woodpecker-address-standardization-api",
"title": "Address Standardization API",
"href": "/api-reference/core-location-get-api-places-woodpecker-address-standardization-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-search-json-autosuggest-api",
"title": "AutoSuggest API",
"href": "/api-reference/core-location-get-api-places-search-json-autosuggest-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-distance-matrix-api",
"title": "Distance Matrix API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-distance-matrix-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-distance-matrix-predictive-driving-coordinates-distance-matrix-predictive-eta-api",
"title": "Distance Matrix Predictive ETA API",
"href": "/api-reference/core-location-get-rest-key-distance-matrix-predictive-driving-coordinates-distance-matrix-predictive-eta-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-elevation-elevation-api",
"title": "Elevation API",
"href": "/api-reference/core-location-get-rest-key-elevation-elevation-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-geocode-geocode-api",
"title": "Geocode API",
"href": "/api-reference/core-location-get-api-places-geocode-geocode-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-nearby-json-nearby-api",
"title": "Nearby API",
"href": "/api-reference/core-location-get-api-places-nearby-json-nearby-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-api-places-along-route-poi-along-the-route-api",
"title": "POI Along the Route API",
"href": "/api-reference/core-location-post-api-places-along-route-poi-along-the-route-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-apis-o2o-entity-eloc-place-detail-api",
"title": "Place Detail API",
"href": "/api-reference/core-location-get-apis-o2o-entity-eloc-place-detail-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-rev-geocode-reverse-geocode-api",
"title": "Reverse Geocode API",
"href": "/api-reference/core-location-get-rest-key-rev-geocode-reverse-geocode-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-route-optimization-api",
"title": "Route Optimization API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-route-optimization-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-routing-api",
"title": "Routing API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-routing-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-biking-geopositions-routing-api-with-biking-profile",
"title": "Routing API with biking profile",
"href": "/api-reference/core-location-get-rest-key-resources-biking-geopositions-routing-api-with-biking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-driving-geopositions-routing-api-with-driving-profile",
"title": "Routing API with driving profile",
"href": "/api-reference/core-location-get-rest-key-resources-driving-geopositions-routing-api-with-driving-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-trucking-geopositions-routing-api-with-trucking-profile",
"title": "Routing API with trucking profile",
"href": "/api-reference/core-location-get-rest-key-resources-trucking-geopositions-routing-api-with-trucking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-walking-geopositions-routing-api-with-walking-profile",
"title": "Routing API with walking profile",
"href": "/api-reference/core-location-get-rest-key-resources-walking-geopositions-routing-api-with-walking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-rest-key-snaptoroad-snap-to-road-api",
"title": "Snap to Road API",
"href": "/api-reference/core-location-post-rest-key-snaptoroad-snap-to-road-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-still-image-still-map-image-api",
"title": "Still Map Image API",
"href": "/api-reference/core-location-get-rest-key-still-image-still-map-image-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-textsearch-json-text-search-api",
"title": "Text Search API",
"href": "/api-reference/core-location-get-api-places-textsearch-json-text-search-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-security-oauth-token-token-generation-api",
"title": "Token Generation API",
"href": "/api-reference/core-location-post-security-oauth-token-token-generation-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-rest-key-still-image-polyline-traveled-route-image-api",
"title": "Traveled Route Image API",
"href": "/api-reference/core-location-post-rest-key-still-image-polyline-traveled-route-image-api"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "route-preview",
"title": "Build a route preview with alternatives",
"href": "/tutorials/route-preview"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "delivery-eta",
"title": "Track a delivery with a trustworthy ETA",
"href": "/tutorials/delivery-eta"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "oauth-server-integration",
"title": "Call Mappls safely from a trusted server",
"href": "/tutorials/oauth-server-integration"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "distance-matrix-dispatch",
"title": "Rank responders with a distance matrix",
"href": "/tutorials/distance-matrix-dispatch"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "traffic-aware-commute",
"title": "Build a traffic-aware commute assistant",
"href": "/tutorials/traffic-aware-commute"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "intouch-trip-lifecycle",
"title": "Reconcile a complete InTouch trip lifecycle",
"href": "/tutorials/intouch-trip-lifecycle"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "rest-api",
"title": "Your first trusted Mappls request",
"href": "/quickstart/rest-api"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "rest-api-starter",
"title": "Trusted REST service starter",
"href": "/starter-kits/rest-api-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"evidenceCounts": {
"sourceGuides": 6,
"sdks": 1,
"apiOperations": 21,
"tutorials": 6,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 11,
"journeys": 4
},
"primaryHref": "/tutorials/route-preview",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=routes-navigation&platform=rest",
"apiPath": "/api/capability-matrix?product=routes-navigation&platform=rest",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Routes & Navigation · Web
- Identity: `capability-decision:routes-navigation--web`
- Canonical: https://developer.mappls.com/platforms/matrix?product=routes-navigation&platform=web
- State model: hybrid
```json
{
"id": "routes-navigation--web",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "web",
"name": "Web",
"headline": "Build expressive browser maps without surrendering performance or control."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"capabilities": [
"Multi-profile routing and alternatives",
"Distance and time matrices",
"Trip and vehicle-route optimization",
"Map matching and snap-to-road",
"Predictive routes and refreshed ETAs",
"Online and offline turn-by-turn navigation"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "web-map",
"title": "Render one accessible web map",
"href": "/quickstart/web-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "web-map-starter",
"title": "Accessible web map host starter",
"href": "/starter-kits/web-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"evidenceCounts": {
"sourceGuides": 6,
"sdks": 2,
"apiOperations": 0,
"tutorials": 4,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 11,
"journeys": 4
},
"primaryHref": "/tutorials/route-preview",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=routes-navigation&platform=web",
"apiPath": "/api/capability-matrix?product=routes-navigation&platform=web",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Routes & Navigation · Android
- Identity: `capability-decision:routes-navigation--android`
- Canonical: https://developer.mappls.com/platforms/matrix?product=routes-navigation&platform=android
- State model: hybrid
```json
{
"id": "routes-navigation--android",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "android",
"name": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Multi-profile routing and alternatives",
"Distance and time matrices",
"Trip and vehicle-route optimization",
"Map matching and snap-to-road",
"Predictive routes and refreshed ETAs",
"Online and offline turn-by-turn navigation"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/reference/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-compose-demo",
"title": "Mappls Vector Map Android SDK JetPack Compose",
"href": "/reference/mappls-android-compose-demo"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/reference/mappls-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/sdks/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/sdks/mappls-android-sdk"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "android-native",
"title": "Create a lifecycle-safe Android map",
"href": "/quickstart/android-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "android-native-starter",
"title": "Android lifecycle adapter starter",
"href": "/starter-kits/android-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"evidenceCounts": {
"sourceGuides": 3,
"sdks": 2,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 11,
"journeys": 4
},
"primaryHref": "/sdks/mapmyindia-maps-vectorsdk-android",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=routes-navigation&platform=android",
"apiPath": "/api/capability-matrix?product=routes-navigation&platform=android",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Routes & Navigation · iOS
- Identity: `capability-decision:routes-navigation--ios`
- Canonical: https://developer.mappls.com/platforms/matrix?product=routes-navigation&platform=ios
- State model: hybrid
```json
{
"id": "routes-navigation--ios",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "ios",
"name": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Multi-profile routing and alternatives",
"Distance and time matrices",
"Trip and vehicle-route optimization",
"Map matching and snap-to-road",
"Predictive routes and refreshed ETAs",
"Online and offline turn-by-turn navigation"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-ios",
"title": "Mapmyindia Maps VectorSDK IOS",
"href": "/reference/mapmyindia-maps-vectorsdk-ios"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-core-ios-distribution",
"title": "[MapplsAPICore]()",
"href": "/reference/mappls-api-core-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/reference/mappls-api-kit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution-base",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/reference/mappls-api-kit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution",
"title": "MapplsDirectionUI for iOS",
"href": "/reference/mappls-direction-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution-base",
"title": "MapplsDirectionUI for iOS",
"href": "/reference/mappls-direction-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/reference/mappls-drivingrange-plugin-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution-base",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/reference/mappls-drivingrange-plugin-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/reference/mappls-feedback-uikit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution-base",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/reference/mappls-feedback-uikit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/reference/mappls-geofence-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution-base",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/reference/mappls-geofence-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/reference/mappls-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-move-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-move-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-core-ios-distribution",
"title": "[MapplsAPICore]()",
"href": "/sdks/mappls-api-core-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/sdks/mappls-api-kit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution-base",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/sdks/mappls-api-kit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-ios",
"title": "Mapmyindia Maps VectorSDK IOS",
"href": "/sdks/mapmyindia-maps-vectorsdk-ios"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/sdks/mappls-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution",
"title": "MapplsDirectionUI for iOS",
"href": "/sdks/mappls-direction-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution-base",
"title": "MapplsDirectionUI for iOS",
"href": "/sdks/mappls-direction-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/sdks/mappls-drivingrange-plugin-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution-base",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/sdks/mappls-drivingrange-plugin-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/sdks/mappls-feedback-uikit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution-base",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/sdks/mappls-feedback-uikit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/sdks/mappls-geofence-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution-base",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/sdks/mappls-geofence-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "ios-sdk-production-readiness",
"title": "Qualify an iOS Mappls release",
"href": "/tutorials/ios-sdk-production-readiness"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "ios-direction-geofence-handoffs",
"title": "Build restart-safe iOS direction and geofence handoffs",
"href": "/tutorials/ios-direction-geofence-handoffs"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "ios-native",
"title": "Create a lifecycle-safe iOS map",
"href": "/quickstart/ios-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "ios-native-starter",
"title": "iOS view-ownership starter",
"href": "/starter-kits/ios-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"evidenceCounts": {
"sourceGuides": 20,
"sdks": 20,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 11,
"journeys": 4
},
"primaryHref": "/tutorials/ios-sdk-production-readiness",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=routes-navigation&platform=ios",
"apiPath": "/api/capability-matrix?product=routes-navigation&platform=ios",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Routes & Navigation · React Native
- Identity: `capability-decision:routes-navigation--react-native`
- Canonical: https://developer.mappls.com/platforms/matrix?product=routes-navigation&platform=react-native
- State model: hybrid
```json
{
"id": "routes-navigation--react-native",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "react-native",
"name": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Multi-profile routing and alternatives",
"Distance and time matrices",
"Trip and vehicle-route optimization",
"Map matching and snap-to-road",
"Predictive routes and refreshed ETAs",
"Online and offline turn-by-turn navigation"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-map-react-native-beta",
"title": "Mapmyindia Maps SDK for React Native beta",
"href": "/reference/mapmyindia-map-react-native-beta"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-restapi-react-native-beta",
"title": "Mapmyindia REST API SDK for React Native - beta",
"href": "/reference/mapmyindia-restapi-react-native-beta"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-react-native-sdk",
"title": "Mappls React Native SDK",
"href": "/reference/mappls-react-native-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-restapi-react-native-beta",
"title": "Mapmyindia REST API SDK for React Native - beta",
"href": "/sdks/mapmyindia-restapi-react-native-beta"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-react-native-sdk",
"title": "Mappls React Native SDK",
"href": "/sdks/mappls-react-native-sdk"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "react-native-native-parity",
"title": "Qualify React Native native parity",
"href": "/tutorials/react-native-native-parity"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "react-native-map",
"title": "Bridge one map feature across Android and iOS",
"href": "/quickstart/react-native-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "react-native-map-starter",
"title": "React Native bridge-contract starter",
"href": "/starter-kits/react-native-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"evidenceCounts": {
"sourceGuides": 3,
"sdks": 2,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 11,
"journeys": 4
},
"primaryHref": "/tutorials/react-native-native-parity",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=routes-navigation&platform=react-native",
"apiPath": "/api/capability-matrix?product=routes-navigation&platform=react-native",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Routes & Navigation · Flutter
- Identity: `capability-decision:routes-navigation--flutter`
- Canonical: https://developer.mappls.com/platforms/matrix?product=routes-navigation&platform=flutter
- State model: hybrid
```json
{
"id": "routes-navigation--flutter",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "flutter",
"name": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Multi-profile routing and alternatives",
"Distance and time matrices",
"Trip and vehicle-route optimization",
"Map matching and snap-to-road",
"Predictive routes and refreshed ETAs",
"Online and offline turn-by-turn navigation"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "flutter-map",
"title": "Build a native-backed Flutter place picker",
"href": "/quickstart/flutter-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "flutter-map-starter",
"title": "Flutter place-selection starter",
"href": "/starter-kits/flutter-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"evidenceCounts": {
"sourceGuides": 2,
"sdks": 2,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 11,
"journeys": 4
},
"primaryHref": "/tutorials/flutter-production-lifecycle",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=routes-navigation&platform=flutter",
"apiPath": "/api/capability-matrix?product=routes-navigation&platform=flutter",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Routes & Navigation · Cordova
- Identity: `capability-decision:routes-navigation--cordova`
- Canonical: https://developer.mappls.com/platforms/matrix?product=routes-navigation&platform=cordova
- State model: hybrid
```json
{
"id": "routes-navigation--cordova",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "cordova",
"name": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Multi-profile routing and alternatives",
"Distance and time matrices",
"Trip and vehicle-route optimization",
"Map matching and snap-to-road",
"Predictive routes and refreshed ETAs",
"Online and offline turn-by-turn navigation"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance",
"title": "Stabilize a Cordova map before migration",
"href": "/quickstart/cordova-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance-starter",
"title": "Cordova stabilization starter",
"href": "/starter-kits/cordova-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"evidenceCounts": {
"sourceGuides": 1,
"sdks": 1,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 11,
"journeys": 4
},
"primaryHref": "/tutorials/cordova-release-hardening",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=routes-navigation&platform=cordova",
"apiPath": "/api/capability-matrix?product=routes-navigation&platform=cordova",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Routes & Navigation · Xamarin
- Identity: `capability-decision:routes-navigation--xamarin`
- Canonical: https://developer.mappls.com/platforms/matrix?product=routes-navigation&platform=xamarin
- State model: hybrid
```json
{
"id": "routes-navigation--xamarin",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "xamarin",
"name": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Multi-profile routing and alternatives",
"Distance and time matrices",
"Trip and vehicle-route optimization",
"Map matching and snap-to-road",
"Predictive routes and refreshed ETAs",
"Online and offline turn-by-turn navigation"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance",
"title": "Extract a Xamarin map integration for replacement",
"href": "/quickstart/xamarin-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance-starter",
"title": "Xamarin extraction starter",
"href": "/starter-kits/xamarin-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 11,
"journeys": 4
},
"primaryHref": "/tutorials/xamarin-maintenance-migration",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=routes-navigation&platform=xamarin",
"apiPath": "/api/capability-matrix?product=routes-navigation&platform=xamarin",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Routes & Navigation · Linux
- Identity: `capability-decision:routes-navigation--linux`
- Canonical: https://developer.mappls.com/platforms/matrix?product=routes-navigation&platform=linux
- State model: hybrid
```json
{
"id": "routes-navigation--linux",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "linux",
"name": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems."
},
"availability": "listed",
"evidenceStatus": "listed-selection-required",
"stateModel": "hybrid",
"integrationLane": "entitled-runtime",
"capabilities": [
"Multi-profile routing and alternatives",
"Distance and time matrices",
"Trip and vehicle-route optimization",
"Map matching and snap-to-road",
"Predictive routes and refreshed ETAs",
"Online and offline turn-by-turn navigation"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "linux-embedded",
"title": "Boot a supervised embedded map client",
"href": "/quickstart/linux-embedded"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "linux-embedded-starter",
"title": "Embedded Linux supervisor starter",
"href": "/starter-kits/linux-embedded-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 11,
"journeys": 4
},
"primaryHref": "/quickstart/linux-embedded",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=routes-navigation&platform=linux",
"apiPath": "/api/capability-matrix?product=routes-navigation&platform=linux",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Routes & Navigation · Automotive
- Identity: `capability-decision:routes-navigation--automotive`
- Canonical: https://developer.mappls.com/platforms/matrix?product=routes-navigation&platform=automotive
- State model: hybrid
```json
{
"id": "routes-navigation--automotive",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "automotive",
"name": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen."
},
"availability": "listed",
"evidenceStatus": "listed-selection-required",
"stateModel": "hybrid",
"integrationLane": "entitled-runtime",
"capabilities": [
"Multi-profile routing and alternatives",
"Distance and time matrices",
"Trip and vehicle-route optimization",
"Map matching and snap-to-road",
"Predictive routes and refreshed ETAs",
"Online and offline turn-by-turn navigation"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation",
"title": "Simulate one recoverable navigation session",
"href": "/quickstart/automotive-navigation"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation-starter",
"title": "Automotive release-manifest starter",
"href": "/starter-kits/automotive-navigation-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 11,
"journeys": 4
},
"primaryHref": "/quickstart/automotive-navigation",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=routes-navigation&platform=automotive",
"apiPath": "/api/capability-matrix?product=routes-navigation&platform=automotive",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Routes & Navigation · Widgets
- Identity: `capability-decision:routes-navigation--widgets`
- Canonical: https://developer.mappls.com/platforms/matrix?product=routes-navigation&platform=widgets
- State model: hybrid
```json
{
"id": "routes-navigation--widgets",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "widgets",
"name": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"capabilities": [
"Multi-profile routing and alternatives",
"Distance and time matrices",
"Trip and vehicle-route optimization",
"Map matching and snap-to-road",
"Predictive routes and refreshed ETAs",
"Online and offline turn-by-turn navigation"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "widgets-place",
"title": "Embed a place journey with an owned fallback",
"href": "/quickstart/widgets-place"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "widgets-place-starter",
"title": "Widget journey host starter",
"href": "/starter-kits/widgets-place-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"evidenceCounts": {
"sourceGuides": 1,
"sdks": 0,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 11,
"journeys": 4
},
"primaryHref": "/tutorials/widget-host-production",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=routes-navigation&platform=widgets",
"apiPath": "/api/capability-matrix?product=routes-navigation&platform=widgets",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Routes & Navigation · Deep links
- Identity: `capability-decision:routes-navigation--deep-links`
- Canonical: https://developer.mappls.com/platforms/matrix?product=routes-navigation&platform=deep-links
- State model: hybrid
```json
{
"id": "routes-navigation--deep-links",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "deep-links",
"name": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"capabilities": [
"Multi-profile routing and alternatives",
"Distance and time matrices",
"Trip and vehicle-route optimization",
"Map matching and snap-to-road",
"Predictive routes and refreshed ETAs",
"Online and offline turn-by-turn navigation"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "deep-links",
"title": "Ship one zero-SDK Mappls hand-off",
"href": "/quickstart/deep-links"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "deep-links-starter",
"title": "Deep-link handoff starter",
"href": "/starter-kits/deep-links-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"evidenceCounts": {
"sourceGuides": 1,
"sdks": 0,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 11,
"journeys": 4
},
"primaryHref": "/tutorials/navigation-deep-link",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=routes-navigation&platform=deep-links",
"apiPath": "/api/capability-matrix?product=routes-navigation&platform=deep-links",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Routes & Navigation · MCP
- Identity: `capability-decision:routes-navigation--mcp`
- Canonical: https://developer.mappls.com/platforms/matrix?product=routes-navigation&platform=mcp
- State model: hybrid
```json
{
"id": "routes-navigation--mcp",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "mcp",
"name": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "ai-client",
"capabilities": [
"Multi-profile routing and alternatives",
"Distance and time matrices",
"Trip and vehicle-route optimization",
"Map matching and snap-to-road",
"Predictive routes and refreshed ETAs",
"Online and offline turn-by-turn navigation"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "mcp-agent",
"title": "Connect a read-only Mappls agent",
"href": "/quickstart/mcp-agent"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "mcp-agent-starter",
"title": "MCP client policy starter",
"href": "/starter-kits/mcp-agent-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 11,
"journeys": 4
},
"primaryHref": "/tutorials/mappls-mcp-agent",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=routes-navigation&platform=mcp",
"apiPath": "/api/capability-matrix?product=routes-navigation&platform=mcp",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · InTouch Telematics · REST
- Identity: `capability-decision:intouch-telematics--rest`
- Canonical: https://developer.mappls.com/platforms/matrix?product=intouch-telematics&platform=rest
- State model: stateful
```json
{
"id": "intouch-telematics--rest",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "rest",
"name": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateful",
"integrationLane": "trusted-service",
"capabilities": [
"Device and vehicle provisioning",
"Live location and historical trails",
"Trips, stoppages, and events",
"Geofences, alerts, and notifications",
"Driver behavior and fleet reports",
"Mobile sensor-based tracking SDKs"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-rest-apis",
"title": "Mapmyindia Intouch REST Apis",
"href": "/reference/mapmyindia-intouch-rest-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-purejs-sample-websdk-rest",
"title": "MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web in Pure JS",
"href": "/reference/mapmyindia-purejs-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-rest-apis",
"title": "Mappls Intouch REST Apis",
"href": "/reference/mappls-intouch-rest-apis"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-alarm-this-api-will-get-all-the-alarm-configurations-for-a-user-v1-0-0",
"title": "This API will get all the alarm configurations for a user.",
"href": "/api-reference/intouch-get-alarm-this-api-will-get-all-the-alarm-configurations-for-a-user-v1-0-0"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-alarm-this-api-will-get-all-the-alarm-configurations-for-a-user",
"title": "This API will get all the alarm configurations for a user.",
"href": "/api-reference/intouch-get-alarm-this-api-will-get-all-the-alarm-configurations-for-a-user"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-alarm-this-api-will-create-an-alarm-v1-0-0",
"title": "This API will create an alarm.",
"href": "/api-reference/intouch-post-alarm-this-api-will-create-an-alarm-v1-0-0"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-alarm-this-api-will-create-an-alarm",
"title": "This API will create an alarm.",
"href": "/api-reference/intouch-post-alarm-this-api-will-create-an-alarm"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-alarm-alarmlog-gets-the-list-of-alarm-config-s-v1-0-0",
"title": "Gets The List Of Alarm Config(s)",
"href": "/api-reference/intouch-get-alarm-alarmlog-gets-the-list-of-alarm-config-s-v1-0-0"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-alarm-alarmlog-gets-the-list-of-alarm-config-s",
"title": "Gets The List Of Alarm Config(s)",
"href": "/api-reference/intouch-get-alarm-alarmlog-gets-the-list-of-alarm-config-s"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-delete-alarm-id-deletes-an-alarm-config-v1-0-0",
"title": "Deletes An Alarm Config",
"href": "/api-reference/intouch-delete-alarm-id-deletes-an-alarm-config-v1-0-0"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-delete-alarm-id-deletes-an-alarm-config",
"title": "Deletes An Alarm Config",
"href": "/api-reference/intouch-delete-alarm-id-deletes-an-alarm-config"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-alarm-id-updates-an-alarm-config-v1-0-0",
"title": "Updates An Alarm Config",
"href": "/api-reference/intouch-post-alarm-id-updates-an-alarm-config-v1-0-0"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-alarm-id-updates-an-alarm-config",
"title": "Updates An Alarm Config",
"href": "/api-reference/intouch-post-alarm-id-updates-an-alarm-config"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-alarms-this-api-will-get-all-the-alarm-configurations-for-a-user",
"title": "This API will get all the alarm configurations for a user.",
"href": "/api-reference/intouch-get-alarms-this-api-will-get-all-the-alarm-configurations-for-a-user"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-alarms-this-api-will-create-an-alarm",
"title": "This API will create an alarm.",
"href": "/api-reference/intouch-post-alarms-this-api-will-create-an-alarm"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-alarms-alarmlogs-gets-the-list-of-alarm-config-s",
"title": "Gets The List Of Alarm Config(s)",
"href": "/api-reference/intouch-get-alarms-alarmlogs-gets-the-list-of-alarm-config-s"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-delete-alarms-id-deletes-an-alarm-config",
"title": "Deletes An Alarm Config",
"href": "/api-reference/intouch-delete-alarms-id-deletes-an-alarm-config"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-alarms-id-updates-an-alarm-config",
"title": "Updates An Alarm Config",
"href": "/api-reference/intouch-post-alarms-id-updates-an-alarm-config"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-devices-info-gets-the-basic-info-of-devices",
"title": "Gets the basic info of devices.",
"href": "/api-reference/intouch-get-devices-info-gets-the-basic-info-of-devices"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-devices-hardwareinfo-gets-the-hardware-info-of-devices",
"title": "Gets the hardware info of devices.",
"href": "/api-reference/intouch-get-devices-hardwareinfo-gets-the-hardware-info-of-devices"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-devices-gets-the-live-data-of-devices",
"title": "Gets the live data of devices.",
"href": "/api-reference/intouch-get-devices-gets-the-live-data-of-devices"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-device-gets-the-live-data-of-devices",
"title": "Gets the live data of devices.",
"href": "/api-reference/intouch-get-device-gets-the-live-data-of-devices"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-device-drive-gets-drive-details-of-a-device",
"title": "Gets drive details of a device.",
"href": "/api-reference/intouch-get-device-drive-gets-drive-details-of-a-device"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-devices-drives-gets-drive-details-of-a-device",
"title": "Gets drive details of a device.",
"href": "/api-reference/intouch-get-devices-drives-gets-drive-details-of-a-device"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-device-deviceid-events-gets-the-historical-location-events-of-a-device",
"title": "Gets the historical location events of a device.",
"href": "/api-reference/intouch-get-device-deviceid-events-gets-the-historical-location-events-of-a-device"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-devices-deviceid-events-gets-the-historical-location-events-of-a-device",
"title": "Gets the historical location events of a device.",
"href": "/api-reference/intouch-get-devices-deviceid-events-gets-the-historical-location-events-of-a-device"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-geofence-gets-all-the-configured-geofence-s-v1-0-0",
"title": "Gets All The Configured Geofence(s)",
"href": "/api-reference/intouch-get-geofence-gets-all-the-configured-geofence-s-v1-0-0"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-geofence-gets-all-the-configured-geofence-s",
"title": "Gets All The Configured Geofence(s)",
"href": "/api-reference/intouch-get-geofence-gets-all-the-configured-geofence-s"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-geofence-create-a-new-geofence-v1-0-0",
"title": "Create A New Geofence",
"href": "/api-reference/intouch-post-geofence-create-a-new-geofence-v1-0-0"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-geofence-create-a-new-geofence",
"title": "Create A New Geofence",
"href": "/api-reference/intouch-post-geofence-create-a-new-geofence"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-geofence-activity-get-all-the-activities-done-by-devices-w-r-t-various-geofences",
"title": "Get all the activities done by devices w.r.t various geofences",
"href": "/api-reference/intouch-get-geofence-activity-get-all-the-activities-done-by-devices-w-r-t-various-geofences"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-delete-geofence-id-delete-a-geofence-v1-0-0",
"title": "Delete A Geofence.",
"href": "/api-reference/intouch-delete-geofence-id-delete-a-geofence-v1-0-0"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-delete-geofence-id-delete-a-geofence",
"title": "Delete A Geofence.",
"href": "/api-reference/intouch-delete-geofence-id-delete-a-geofence"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-geofence-id-get-a-single-or-multiple-geofence-s-v1-0-0",
"title": "Get A Single Or Multiple Geofence(s).",
"href": "/api-reference/intouch-get-geofence-id-get-a-single-or-multiple-geofence-s-v1-0-0"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-geofence-id-get-a-single-or-multiple-geofence-s",
"title": "Get A Single Or Multiple Geofence(s).",
"href": "/api-reference/intouch-get-geofence-id-get-a-single-or-multiple-geofence-s"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-geofence-id-update-a-geofence-v1-0-0",
"title": "Update A Geofence.",
"href": "/api-reference/intouch-post-geofence-id-update-a-geofence-v1-0-0"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-geofence-id-update-a-geofence",
"title": "Update A Geofence.",
"href": "/api-reference/intouch-post-geofence-id-update-a-geofence"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-geofences-gets-all-the-configured-geofence-s",
"title": "Gets All The Configured Geofence(s)",
"href": "/api-reference/intouch-get-geofences-gets-all-the-configured-geofence-s"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-geofences-create-a-new-geofence",
"title": "Create A New Geofence",
"href": "/api-reference/intouch-post-geofences-create-a-new-geofence"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-geofences-activities-get-all-the-activities-done-by-devices-w-r-t-various-geofences",
"title": "Get all the activities done by devices w.r.t various geofences",
"href": "/api-reference/intouch-get-geofences-activities-get-all-the-activities-done-by-devices-w-r-t-various-geofences"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-delete-geofences-id-delete-a-geofence",
"title": "Delete A Geofence.",
"href": "/api-reference/intouch-delete-geofences-id-delete-a-geofence"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-geofences-id-get-a-single-or-multiple-geofence-s",
"title": "Get A Single Or Multiple Geofence(s).",
"href": "/api-reference/intouch-get-geofences-id-get-a-single-or-multiple-geofence-s"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-geofences-id-update-a-geofence",
"title": "Update A Geofence.",
"href": "/api-reference/intouch-post-geofences-id-update-a-geofence"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-group-this-api-will-get-all-the-groups-for-a-user",
"title": "This API will get all the groups for a user.",
"href": "/api-reference/intouch-get-group-this-api-will-get-all-the-groups-for-a-user"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-group-this-api-will-create-a-group",
"title": "This API will create a group.",
"href": "/api-reference/intouch-post-group-this-api-will-create-a-group"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-delete-group-id-deletes-a-group",
"title": "Deletes a group",
"href": "/api-reference/intouch-delete-group-id-deletes-a-group"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-group-id-updates-a-group",
"title": "Updates a group",
"href": "/api-reference/intouch-post-group-id-updates-a-group"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-groups-this-api-will-get-all-the-groups-for-a-user",
"title": "This API will get all the groups for a user.",
"href": "/api-reference/intouch-get-groups-this-api-will-get-all-the-groups-for-a-user"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-groups-this-api-will-create-a-group",
"title": "This API will create a group.",
"href": "/api-reference/intouch-post-groups-this-api-will-create-a-group"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-delete-groups-id-deletes-a-group",
"title": "Deletes a group",
"href": "/api-reference/intouch-delete-groups-id-deletes-a-group"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-groups-id-updates-a-group",
"title": "Updates a group",
"href": "/api-reference/intouch-post-groups-id-updates-a-group"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-devices-nearby-gets-the-list-of-all-the-nearby-devices",
"title": "Gets the list of all the nearby devices.",
"href": "/api-reference/intouch-get-devices-nearby-gets-the-list-of-all-the-nearby-devices"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-trips-this-api-will-get-all-the-trips-for-a-user",
"title": "This API will get all the trips for a user.",
"href": "/api-reference/intouch-get-trips-this-api-will-get-all-the-trips-for-a-user"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-trips-this-api-will-create-a-trip",
"title": "This API will create a trip.",
"href": "/api-reference/intouch-post-trips-this-api-will-create-a-trip"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-trips-id-gets-the-details-of-a-single-trip",
"title": "Gets the details of a single trip",
"href": "/api-reference/intouch-get-trips-id-gets-the-details-of-a-single-trip"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-trips-id-close-post-api-to-close-a-trip",
"title": "POST API to close a trip.",
"href": "/api-reference/intouch-post-trips-id-close-post-api-to-close-a-trip"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "delivery-eta",
"title": "Track a delivery with a trustworthy ETA",
"href": "/tutorials/delivery-eta"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "fleet-geofences",
"title": "Build fleet geofence operations",
"href": "/tutorials/fleet-geofences"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "webhook-reliability",
"title": "Consume Mappls events exactly once in effect",
"href": "/tutorials/webhook-reliability"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "oauth-server-integration",
"title": "Call Mappls safely from a trusted server",
"href": "/tutorials/oauth-server-integration"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "intouch-trip-lifecycle",
"title": "Reconcile a complete InTouch trip lifecycle",
"href": "/tutorials/intouch-trip-lifecycle"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "rest-api",
"title": "Your first trusted Mappls request",
"href": "/quickstart/rest-api"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "rest-api-starter",
"title": "Trusted REST service starter",
"href": "/starter-kits/rest-api-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"evidenceCounts": {
"sourceGuides": 3,
"sdks": 0,
"apiOperations": 53,
"tutorials": 5,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 9,
"journeys": 3
},
"primaryHref": "/tutorials/delivery-eta",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=intouch-telematics&platform=rest",
"apiPath": "/api/capability-matrix?product=intouch-telematics&platform=rest",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · InTouch Telematics · Web
- Identity: `capability-decision:intouch-telematics--web`
- Canonical: https://developer.mappls.com/platforms/matrix?product=intouch-telematics&platform=web
- State model: stateful
```json
{
"id": "intouch-telematics--web",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "web",
"name": "Web",
"headline": "Build expressive browser maps without surrendering performance or control."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateful",
"integrationLane": "browser-or-embed",
"capabilities": [
"Device and vehicle provisioning",
"Live location and historical trails",
"Trips, stoppages, and events",
"Geofences, alerts, and notifications",
"Driver behavior and fleet reports",
"Mobile sensor-based tracking SDKs"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-web-plugins",
"title": "Mapmyindia Intouch Web Plugins",
"href": "/reference/mapmyindia-intouch-web-plugins"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-purejs-sample-websdk-rest",
"title": "MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web in Pure JS",
"href": "/reference/mapmyindia-purejs-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-plugins",
"title": "Mappls Web Plugins",
"href": "/reference/mappls-web-plugins"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "delivery-eta",
"title": "Track a delivery with a trustworthy ETA",
"href": "/tutorials/delivery-eta"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "fleet-geofences",
"title": "Build fleet geofence operations",
"href": "/tutorials/fleet-geofences"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "intouch-trip-lifecycle",
"title": "Reconcile a complete InTouch trip lifecycle",
"href": "/tutorials/intouch-trip-lifecycle"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "web-map",
"title": "Render one accessible web map",
"href": "/quickstart/web-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "web-map-starter",
"title": "Accessible web map host starter",
"href": "/starter-kits/web-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"evidenceCounts": {
"sourceGuides": 3,
"sdks": 0,
"apiOperations": 0,
"tutorials": 3,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 9,
"journeys": 3
},
"primaryHref": "/tutorials/delivery-eta",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=intouch-telematics&platform=web",
"apiPath": "/api/capability-matrix?product=intouch-telematics&platform=web",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · InTouch Telematics · Android
- Identity: `capability-decision:intouch-telematics--android`
- Canonical: https://developer.mappls.com/platforms/matrix?product=intouch-telematics&platform=android
- State model: stateful
```json
{
"id": "intouch-telematics--android",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "android",
"name": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateful",
"integrationLane": "native-client",
"capabilities": [
"Device and vehicle provisioning",
"Live location and historical trails",
"Trips, stoppages, and events",
"Geofences, alerts, and notifications",
"Driver behavior and fleet reports",
"Mobile sensor-based tracking SDKs"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-android-sdk",
"title": "Mapmyindia Intouch Android SDK",
"href": "/reference/mapmyindia-intouch-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/reference/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/reference/mappls-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/reference/mappls-camera-sdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-android-sdk",
"title": "Mappls Intouch Android SDK",
"href": "/reference/mappls-intouch-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-location-capture-android-sdk",
"title": "Mappls Location Capture SDK",
"href": "/reference/mappls-location-capture-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-workmate-android-sdk",
"title": "Workmate SDK - Android",
"href": "/reference/mappls-workmate-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-android-sdk",
"title": "Mapmyindia Intouch Android SDK",
"href": "/sdks/mapmyindia-intouch-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/sdks/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/sdks/mappls-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/sdks/mappls-camera-sdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-intouch-android-sdk",
"title": "Mappls Intouch Android SDK",
"href": "/sdks/mappls-intouch-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-location-capture-android-sdk",
"title": "Mappls Location Capture SDK",
"href": "/sdks/mappls-location-capture-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-workmate-android-sdk",
"title": "Workmate SDK - Android",
"href": "/sdks/mappls-workmate-android-sdk"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "android-native",
"title": "Create a lifecycle-safe Android map",
"href": "/quickstart/android-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "android-native-starter",
"title": "Android lifecycle adapter starter",
"href": "/starter-kits/android-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"evidenceCounts": {
"sourceGuides": 7,
"sdks": 7,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 9,
"journeys": 3
},
"primaryHref": "/sdks/mapmyindia-intouch-android-sdk",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=intouch-telematics&platform=android",
"apiPath": "/api/capability-matrix?product=intouch-telematics&platform=android",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · InTouch Telematics · iOS
- Identity: `capability-decision:intouch-telematics--ios`
- Canonical: https://developer.mappls.com/platforms/matrix?product=intouch-telematics&platform=ios
- State model: stateful
```json
{
"id": "intouch-telematics--ios",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "ios",
"name": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateful",
"integrationLane": "native-client",
"capabilities": [
"Device and vehicle provisioning",
"Live location and historical trails",
"Trips, stoppages, and events",
"Geofences, alerts, and notifications",
"Driver behavior and fleet reports",
"Mobile sensor-based tracking SDKs"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-ios-sdk",
"title": "MapmyIndia Intouch iOS SDK",
"href": "/reference/mapmyindia-intouch-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution",
"title": "Mappls Annotation Extension for iOS",
"href": "/reference/mappls-annotation-extension-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution-base",
"title": "Mappls Annotation Extension for iOS",
"href": "/reference/mappls-annotation-extension-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-core-ios-distribution",
"title": "[MapplsAPICore]()",
"href": "/reference/mappls-api-core-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/reference/mappls-api-kit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution-base",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/reference/mappls-api-kit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-ios-distribution",
"title": "MapplsCamera SDK for iOS",
"href": "/reference/mappls-camera-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-ios",
"title": "MapplsCamera SDK for iOS",
"href": "/reference/mappls-camera-sdk-ios"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution",
"title": "MapplsDirectionUI for iOS",
"href": "/reference/mappls-direction-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution-base",
"title": "MapplsDirectionUI for iOS",
"href": "/reference/mappls-direction-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/reference/mappls-drivingrange-plugin-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution-base",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/reference/mappls-drivingrange-plugin-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution",
"title": "MapplsFeedbackKit for iOS",
"href": "/reference/mappls-feedback-kit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution-base",
"title": "MapplsFeedbackKit for iOS",
"href": "/reference/mappls-feedback-kit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/reference/mappls-feedback-uikit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution-base",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/reference/mappls-feedback-uikit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/reference/mappls-geoanalytics-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution-base",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/reference/mappls-geoanalytics-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/reference/mappls-geofence-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution-base",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/reference/mappls-geofence-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-ios-distribution",
"title": "Mappls Intouch IOS Distribution",
"href": "/reference/mappls-intouch-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-ios-distribution-base",
"title": "Mappls Intouch IOS Distribution Base",
"href": "/reference/mappls-intouch-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-ios-sdk",
"title": "[Mappls Intouch SDK]()",
"href": "/reference/mappls-intouch-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/reference/mappls-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-location-capture-sdk-ios-distribution",
"title": "Mappls Location Capture SDK (iOS)",
"href": "/reference/mappls-location-capture-sdk-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-move-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/reference/mappls-nearby-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution-base",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/reference/mappls-nearby-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/reference/mappls-raster-catalogue-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution-base",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/reference/mappls-raster-catalogue-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-intouch-ios-sdk",
"title": "[Mappls Intouch SDK]()",
"href": "/sdks/mappls-intouch-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-move-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-core-ios-distribution",
"title": "[MapplsAPICore]()",
"href": "/sdks/mappls-api-core-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/sdks/mappls-api-kit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution-base",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/sdks/mappls-api-kit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-ios-sdk",
"title": "MapmyIndia Intouch iOS SDK",
"href": "/sdks/mapmyindia-intouch-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution",
"title": "Mappls Annotation Extension for iOS",
"href": "/sdks/mappls-annotation-extension-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution-base",
"title": "Mappls Annotation Extension for iOS",
"href": "/sdks/mappls-annotation-extension-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-intouch-ios-distribution",
"title": "Mappls Intouch IOS Distribution",
"href": "/sdks/mappls-intouch-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-intouch-ios-distribution-base",
"title": "Mappls Intouch IOS Distribution Base",
"href": "/sdks/mappls-intouch-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/sdks/mappls-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-location-capture-sdk-ios-distribution",
"title": "Mappls Location Capture SDK (iOS)",
"href": "/sdks/mappls-location-capture-sdk-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/sdks/mappls-nearby-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution-base",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/sdks/mappls-nearby-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-ios-distribution",
"title": "MapplsCamera SDK for iOS",
"href": "/sdks/mappls-camera-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-ios",
"title": "MapplsCamera SDK for iOS",
"href": "/sdks/mappls-camera-sdk-ios"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution",
"title": "MapplsDirectionUI for iOS",
"href": "/sdks/mappls-direction-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution-base",
"title": "MapplsDirectionUI for iOS",
"href": "/sdks/mappls-direction-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/sdks/mappls-drivingrange-plugin-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution-base",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/sdks/mappls-drivingrange-plugin-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution",
"title": "MapplsFeedbackKit for iOS",
"href": "/sdks/mappls-feedback-kit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution-base",
"title": "MapplsFeedbackKit for iOS",
"href": "/sdks/mappls-feedback-kit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/sdks/mappls-feedback-uikit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution-base",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/sdks/mappls-feedback-uikit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/sdks/mappls-geoanalytics-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution-base",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/sdks/mappls-geoanalytics-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/sdks/mappls-geofence-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution-base",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/sdks/mappls-geofence-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/sdks/mappls-raster-catalogue-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution-base",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/sdks/mappls-raster-catalogue-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "ios-sdk-production-readiness",
"title": "Qualify an iOS Mappls release",
"href": "/tutorials/ios-sdk-production-readiness"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "ios-direction-geofence-handoffs",
"title": "Build restart-safe iOS direction and geofence handoffs",
"href": "/tutorials/ios-direction-geofence-handoffs"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "ios-native",
"title": "Create a lifecycle-safe iOS map",
"href": "/quickstart/ios-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "ios-native-starter",
"title": "iOS view-ownership starter",
"href": "/starter-kits/ios-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"evidenceCounts": {
"sourceGuides": 36,
"sdks": 36,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 9,
"journeys": 3
},
"primaryHref": "/tutorials/ios-sdk-production-readiness",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=intouch-telematics&platform=ios",
"apiPath": "/api/capability-matrix?product=intouch-telematics&platform=ios",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · InTouch Telematics · React Native
- Identity: `capability-decision:intouch-telematics--react-native`
- Canonical: https://developer.mappls.com/platforms/matrix?product=intouch-telematics&platform=react-native
- State model: stateful
```json
{
"id": "intouch-telematics--react-native",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "react-native",
"name": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateful",
"integrationLane": "native-client",
"capabilities": [
"Device and vehicle provisioning",
"Live location and historical trails",
"Trips, stoppages, and events",
"Geofences, alerts, and notifications",
"Driver behavior and fleet reports",
"Mobile sensor-based tracking SDKs"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-react-native-sdk",
"title": "Mapmyindia Intouch React Native SDK",
"href": "/reference/mapmyindia-intouch-react-native-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-react-native-intouch-sdk",
"title": "Mappls Intouch React Native SDK",
"href": "/reference/mappls-react-native-intouch-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-react-native-sdk",
"title": "Mappls React Native SDK",
"href": "/reference/mappls-react-native-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-react-native-sdk",
"title": "Mapmyindia Intouch React Native SDK",
"href": "/sdks/mapmyindia-intouch-react-native-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-react-native-intouch-sdk",
"title": "Mappls Intouch React Native SDK",
"href": "/sdks/mappls-react-native-intouch-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-react-native-sdk",
"title": "Mappls React Native SDK",
"href": "/sdks/mappls-react-native-sdk"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "react-native-native-parity",
"title": "Qualify React Native native parity",
"href": "/tutorials/react-native-native-parity"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "react-native-map",
"title": "Bridge one map feature across Android and iOS",
"href": "/quickstart/react-native-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "react-native-map-starter",
"title": "React Native bridge-contract starter",
"href": "/starter-kits/react-native-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"evidenceCounts": {
"sourceGuides": 3,
"sdks": 3,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 9,
"journeys": 3
},
"primaryHref": "/tutorials/react-native-native-parity",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=intouch-telematics&platform=react-native",
"apiPath": "/api/capability-matrix?product=intouch-telematics&platform=react-native",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · InTouch Telematics · Flutter
- Identity: `capability-decision:intouch-telematics--flutter`
- Canonical: https://developer.mappls.com/platforms/matrix?product=intouch-telematics&platform=flutter
- State model: stateful
```json
{
"id": "intouch-telematics--flutter",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "flutter",
"name": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"capabilities": [
"Device and vehicle provisioning",
"Live location and historical trails",
"Trips, stoppages, and events",
"Geofences, alerts, and notifications",
"Driver behavior and fleet reports",
"Mobile sensor-based tracking SDKs"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "flutter-map",
"title": "Build a native-backed Flutter place picker",
"href": "/quickstart/flutter-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "flutter-map-starter",
"title": "Flutter place-selection starter",
"href": "/starter-kits/flutter-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"evidenceCounts": {
"sourceGuides": 2,
"sdks": 2,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 9,
"journeys": 3
},
"primaryHref": "/sdks/flutter-mapmyindia-gl",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=intouch-telematics&platform=flutter",
"apiPath": "/api/capability-matrix?product=intouch-telematics&platform=flutter",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · InTouch Telematics · Cordova
- Identity: `capability-decision:intouch-telematics--cordova`
- Canonical: https://developer.mappls.com/platforms/matrix?product=intouch-telematics&platform=cordova
- State model: stateful
```json
{
"id": "intouch-telematics--cordova",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "cordova",
"name": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"capabilities": [
"Device and vehicle provisioning",
"Live location and historical trails",
"Trips, stoppages, and events",
"Geofences, alerts, and notifications",
"Driver behavior and fleet reports",
"Mobile sensor-based tracking SDKs"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance",
"title": "Stabilize a Cordova map before migration",
"href": "/quickstart/cordova-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance-starter",
"title": "Cordova stabilization starter",
"href": "/starter-kits/cordova-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 9,
"journeys": 3
},
"primaryHref": "/quickstart/cordova-maintenance",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=intouch-telematics&platform=cordova",
"apiPath": "/api/capability-matrix?product=intouch-telematics&platform=cordova",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · InTouch Telematics · Xamarin
- Identity: `capability-decision:intouch-telematics--xamarin`
- Canonical: https://developer.mappls.com/platforms/matrix?product=intouch-telematics&platform=xamarin
- State model: stateful
```json
{
"id": "intouch-telematics--xamarin",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "xamarin",
"name": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"capabilities": [
"Device and vehicle provisioning",
"Live location and historical trails",
"Trips, stoppages, and events",
"Geofences, alerts, and notifications",
"Driver behavior and fleet reports",
"Mobile sensor-based tracking SDKs"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance",
"title": "Extract a Xamarin map integration for replacement",
"href": "/quickstart/xamarin-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance-starter",
"title": "Xamarin extraction starter",
"href": "/starter-kits/xamarin-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 9,
"journeys": 3
},
"primaryHref": "/quickstart/xamarin-maintenance",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=intouch-telematics&platform=xamarin",
"apiPath": "/api/capability-matrix?product=intouch-telematics&platform=xamarin",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · InTouch Telematics · Linux
- Identity: `capability-decision:intouch-telematics--linux`
- Canonical: https://developer.mappls.com/platforms/matrix?product=intouch-telematics&platform=linux
- State model: stateful
```json
{
"id": "intouch-telematics--linux",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "linux",
"name": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "entitled-runtime",
"capabilities": [
"Device and vehicle provisioning",
"Live location and historical trails",
"Trips, stoppages, and events",
"Geofences, alerts, and notifications",
"Driver behavior and fleet reports",
"Mobile sensor-based tracking SDKs"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "linux-embedded",
"title": "Boot a supervised embedded map client",
"href": "/quickstart/linux-embedded"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "linux-embedded-starter",
"title": "Embedded Linux supervisor starter",
"href": "/starter-kits/linux-embedded-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 9,
"journeys": 3
},
"primaryHref": "/quickstart/linux-embedded",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=intouch-telematics&platform=linux",
"apiPath": "/api/capability-matrix?product=intouch-telematics&platform=linux",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · InTouch Telematics · Automotive
- Identity: `capability-decision:intouch-telematics--automotive`
- Canonical: https://developer.mappls.com/platforms/matrix?product=intouch-telematics&platform=automotive
- State model: stateful
```json
{
"id": "intouch-telematics--automotive",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "automotive",
"name": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "entitled-runtime",
"capabilities": [
"Device and vehicle provisioning",
"Live location and historical trails",
"Trips, stoppages, and events",
"Geofences, alerts, and notifications",
"Driver behavior and fleet reports",
"Mobile sensor-based tracking SDKs"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation",
"title": "Simulate one recoverable navigation session",
"href": "/quickstart/automotive-navigation"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation-starter",
"title": "Automotive release-manifest starter",
"href": "/starter-kits/automotive-navigation-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 9,
"journeys": 3
},
"primaryHref": "/quickstart/automotive-navigation",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=intouch-telematics&platform=automotive",
"apiPath": "/api/capability-matrix?product=intouch-telematics&platform=automotive",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · InTouch Telematics · Widgets
- Identity: `capability-decision:intouch-telematics--widgets`
- Canonical: https://developer.mappls.com/platforms/matrix?product=intouch-telematics&platform=widgets
- State model: stateful
```json
{
"id": "intouch-telematics--widgets",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "widgets",
"name": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateful",
"integrationLane": "browser-or-embed",
"capabilities": [
"Device and vehicle provisioning",
"Live location and historical trails",
"Trips, stoppages, and events",
"Geofences, alerts, and notifications",
"Driver behavior and fleet reports",
"Mobile sensor-based tracking SDKs"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-web-plugins",
"title": "Mapmyindia Intouch Web Plugins",
"href": "/reference/mapmyindia-intouch-web-plugins"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-plugins",
"title": "Mappls Web Plugins",
"href": "/reference/mappls-web-plugins"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "widget-host-production",
"title": "Operate widgets as untrusted lifecycle surfaces",
"href": "/tutorials/widget-host-production"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "widgets-place",
"title": "Embed a place journey with an owned fallback",
"href": "/quickstart/widgets-place"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "widgets-place-starter",
"title": "Widget journey host starter",
"href": "/starter-kits/widgets-place-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"evidenceCounts": {
"sourceGuides": 2,
"sdks": 0,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 9,
"journeys": 3
},
"primaryHref": "/tutorials/widget-host-production",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=intouch-telematics&platform=widgets",
"apiPath": "/api/capability-matrix?product=intouch-telematics&platform=widgets",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · InTouch Telematics · Deep links
- Identity: `capability-decision:intouch-telematics--deep-links`
- Canonical: https://developer.mappls.com/platforms/matrix?product=intouch-telematics&platform=deep-links
- State model: stateful
```json
{
"id": "intouch-telematics--deep-links",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "deep-links",
"name": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "browser-or-embed",
"capabilities": [
"Device and vehicle provisioning",
"Live location and historical trails",
"Trips, stoppages, and events",
"Geofences, alerts, and notifications",
"Driver behavior and fleet reports",
"Mobile sensor-based tracking SDKs"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "deep-links",
"title": "Ship one zero-SDK Mappls hand-off",
"href": "/quickstart/deep-links"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "deep-links-starter",
"title": "Deep-link handoff starter",
"href": "/starter-kits/deep-links-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"evidenceCounts": {
"sourceGuides": 2,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 9,
"journeys": 3
},
"primaryHref": "/quickstart/deep-links",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=intouch-telematics&platform=deep-links",
"apiPath": "/api/capability-matrix?product=intouch-telematics&platform=deep-links",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · InTouch Telematics · MCP
- Identity: `capability-decision:intouch-telematics--mcp`
- Canonical: https://developer.mappls.com/platforms/matrix?product=intouch-telematics&platform=mcp
- State model: stateful
```json
{
"id": "intouch-telematics--mcp",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "mcp",
"name": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "ai-client",
"capabilities": [
"Device and vehicle provisioning",
"Live location and historical trails",
"Trips, stoppages, and events",
"Geofences, alerts, and notifications",
"Driver behavior and fleet reports",
"Mobile sensor-based tracking SDKs"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "mcp-agent",
"title": "Connect a read-only Mappls agent",
"href": "/quickstart/mcp-agent"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "mcp-agent-starter",
"title": "MCP client policy starter",
"href": "/starter-kits/mcp-agent-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 9,
"journeys": 3
},
"primaryHref": "/tutorials/a2a-solution-coordination",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=intouch-telematics&platform=mcp",
"apiPath": "/api/capability-matrix?product=intouch-telematics&platform=mcp",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Workmate · REST
- Identity: `capability-decision:workmate--rest`
- Canonical: https://developer.mappls.com/platforms/matrix?product=workmate&platform=rest
- State model: stateful
```json
{
"id": "workmate--rest",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "rest",
"name": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateful",
"integrationLane": "trusted-service",
"capabilities": [
"Worker and team management",
"Task assignment and dispatch",
"Attendance and shift workflows",
"Client visits and proof of service",
"Live operations and exceptions",
"Forms, evidence, and completion reports"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-workmate-apis",
"title": "Mappls by MapmyIndia-Workmate-Apis",
"href": "/reference/mapmyindia-workmate-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ai-apis",
"title": "MAPPLS AI / ML APIs",
"href": "/reference/mappls-ai-apis"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-get-clients-to-get-all-your-client-details",
"title": "To get all your client details",
"href": "/api-reference/workmate-get-clients-to-get-all-your-client-details"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-post-clients-to-create-new-client",
"title": "To create new client",
"href": "/api-reference/workmate-post-clients-to-create-new-client"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-get-configurations-categories-to-get-the-list-of-client-category-in-an-account",
"title": "To get the list of client category in an account",
"href": "/api-reference/workmate-get-configurations-categories-to-get-the-list-of-client-category-in-an-account"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-get-configurations-forms-to-get-the-form-s-id-and-their-details-from-your-account",
"title": "To get the form's Id and their details from your account.",
"href": "/api-reference/workmate-get-configurations-forms-to-get-the-form-s-id-and-their-details-from-your-account"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-get-reports-attendances-get-users-attendance-details-with-travelled-distance",
"title": "Get users attendance details with travelled distance.",
"href": "/api-reference/workmate-get-reports-attendances-get-users-attendance-details-with-travelled-distance"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-get-reports-forms-formid-to-get-form-based-check-in-out-details",
"title": "To get form based check in/out details",
"href": "/api-reference/workmate-get-reports-forms-formid-to-get-form-based-check-in-out-details"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-get-reports-movements-userid-get-users-movement-details",
"title": "Get users movement details",
"href": "/api-reference/workmate-get-reports-movements-userid-get-users-movement-details"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-get-tasklists-to-get-the-task-list-details",
"title": "To get the task list details.",
"href": "/api-reference/workmate-get-tasklists-to-get-the-task-list-details"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-get-tasks-to-get-the-list-of-tasks-and-their-details",
"title": "To get the list of tasks and their details",
"href": "/api-reference/workmate-get-tasks-to-get-the-list-of-tasks-and-their-details"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-post-tasks-to-create-new-task",
"title": "To create new Task",
"href": "/api-reference/workmate-post-tasks-to-create-new-task"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-get-tasks-taskid-to-get-the-task-details-for-the-given-task-id",
"title": "To get the task details for the given task id.",
"href": "/api-reference/workmate-get-tasks-taskid-to-get-the-task-details-for-the-given-task-id"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-put-tasks-taskid-to-update-the-task-description-status",
"title": "To update the task description & status.",
"href": "/api-reference/workmate-put-tasks-taskid-to-update-the-task-description-status"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-get-users-to-get-all-the-user-details-which-belongs-to-your-organization",
"title": "To get all the user details which belongs to your organization.",
"href": "/api-reference/workmate-get-users-to-get-all-the-user-details-which-belongs-to-your-organization"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "workmate-task-lifecycle",
"title": "Automate a complete Workmate task lifecycle",
"href": "/tutorials/workmate-task-lifecycle"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "webhook-reliability",
"title": "Consume Mappls events exactly once in effect",
"href": "/tutorials/webhook-reliability"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "workmate-proof-review",
"title": "Build proof review and rework for field jobs",
"href": "/tutorials/workmate-proof-review"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "rest-api",
"title": "Your first trusted Mappls request",
"href": "/quickstart/rest-api"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "rest-api-starter",
"title": "Trusted REST service starter",
"href": "/starter-kits/rest-api-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"evidenceCounts": {
"sourceGuides": 2,
"sdks": 0,
"apiOperations": 13,
"tutorials": 3,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 3,
"journeys": 1
},
"primaryHref": "/tutorials/workmate-task-lifecycle",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=workmate&platform=rest",
"apiPath": "/api/capability-matrix?product=workmate&platform=rest",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Workmate · Web
- Identity: `capability-decision:workmate--web`
- Canonical: https://developer.mappls.com/platforms/matrix?product=workmate&platform=web
- State model: stateful
```json
{
"id": "workmate--web",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "web",
"name": "Web",
"headline": "Build expressive browser maps without surrendering performance or control."
},
"availability": "listed",
"evidenceStatus": "listed-selection-required",
"stateModel": "stateful",
"integrationLane": "browser-or-embed",
"capabilities": [
"Worker and team management",
"Task assignment and dispatch",
"Attendance and shift workflows",
"Client visits and proof of service",
"Live operations and exceptions",
"Forms, evidence, and completion reports"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "web-map",
"title": "Render one accessible web map",
"href": "/quickstart/web-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "web-map-starter",
"title": "Accessible web map host starter",
"href": "/starter-kits/web-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 3,
"journeys": 1
},
"primaryHref": "/quickstart/web-map",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=workmate&platform=web",
"apiPath": "/api/capability-matrix?product=workmate&platform=web",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Workmate · Android
- Identity: `capability-decision:workmate--android`
- Canonical: https://developer.mappls.com/platforms/matrix?product=workmate&platform=android
- State model: stateful
```json
{
"id": "workmate--android",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "android",
"name": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateful",
"integrationLane": "native-client",
"capabilities": [
"Worker and team management",
"Task assignment and dispatch",
"Attendance and shift workflows",
"Client visits and proof of service",
"Live operations and exceptions",
"Forms, evidence, and completion reports"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-android-sdk",
"title": "Mapmyindia Intouch Android SDK",
"href": "/reference/mapmyindia-intouch-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/reference/mappls-camera-sdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-android-sdk",
"title": "Mappls Intouch Android SDK",
"href": "/reference/mappls-intouch-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-location-capture-android-sdk",
"title": "Mappls Location Capture SDK",
"href": "/reference/mappls-location-capture-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-workmate-android-sdk",
"title": "Workmate SDK - Android",
"href": "/reference/mappls-workmate-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-android-sdk",
"title": "Mapmyindia Intouch Android SDK",
"href": "/sdks/mapmyindia-intouch-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/sdks/mappls-camera-sdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-intouch-android-sdk",
"title": "Mappls Intouch Android SDK",
"href": "/sdks/mappls-intouch-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-location-capture-android-sdk",
"title": "Mappls Location Capture SDK",
"href": "/sdks/mappls-location-capture-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-workmate-android-sdk",
"title": "Workmate SDK - Android",
"href": "/sdks/mappls-workmate-android-sdk"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "workmate-task-lifecycle",
"title": "Automate a complete Workmate task lifecycle",
"href": "/tutorials/workmate-task-lifecycle"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "workmate-proof-review",
"title": "Build proof review and rework for field jobs",
"href": "/tutorials/workmate-proof-review"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "android-native",
"title": "Create a lifecycle-safe Android map",
"href": "/quickstart/android-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "android-native-starter",
"title": "Android lifecycle adapter starter",
"href": "/starter-kits/android-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"evidenceCounts": {
"sourceGuides": 5,
"sdks": 5,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 3,
"journeys": 1
},
"primaryHref": "/tutorials/workmate-task-lifecycle",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=workmate&platform=android",
"apiPath": "/api/capability-matrix?product=workmate&platform=android",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Workmate · iOS
- Identity: `capability-decision:workmate--ios`
- Canonical: https://developer.mappls.com/platforms/matrix?product=workmate&platform=ios
- State model: stateful
```json
{
"id": "workmate--ios",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "ios",
"name": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"capabilities": [
"Worker and team management",
"Task assignment and dispatch",
"Attendance and shift workflows",
"Client visits and proof of service",
"Live operations and exceptions",
"Forms, evidence, and completion reports"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "ios-native",
"title": "Create a lifecycle-safe iOS map",
"href": "/quickstart/ios-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "ios-native-starter",
"title": "iOS view-ownership starter",
"href": "/starter-kits/ios-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"evidenceCounts": {
"sourceGuides": 5,
"sdks": 5,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 3,
"journeys": 1
},
"primaryHref": "/tutorials/ios-sdk-production-readiness",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=workmate&platform=ios",
"apiPath": "/api/capability-matrix?product=workmate&platform=ios",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Workmate · React Native
- Identity: `capability-decision:workmate--react-native`
- Canonical: https://developer.mappls.com/platforms/matrix?product=workmate&platform=react-native
- State model: stateful
```json
{
"id": "workmate--react-native",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "react-native",
"name": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"capabilities": [
"Worker and team management",
"Task assignment and dispatch",
"Attendance and shift workflows",
"Client visits and proof of service",
"Live operations and exceptions",
"Forms, evidence, and completion reports"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "react-native-map",
"title": "Bridge one map feature across Android and iOS",
"href": "/quickstart/react-native-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "react-native-map-starter",
"title": "React Native bridge-contract starter",
"href": "/starter-kits/react-native-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"evidenceCounts": {
"sourceGuides": 2,
"sdks": 2,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 3,
"journeys": 1
},
"primaryHref": "/tutorials/react-native-native-parity",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=workmate&platform=react-native",
"apiPath": "/api/capability-matrix?product=workmate&platform=react-native",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Workmate · Flutter
- Identity: `capability-decision:workmate--flutter`
- Canonical: https://developer.mappls.com/platforms/matrix?product=workmate&platform=flutter
- State model: stateful
```json
{
"id": "workmate--flutter",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "flutter",
"name": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"capabilities": [
"Worker and team management",
"Task assignment and dispatch",
"Attendance and shift workflows",
"Client visits and proof of service",
"Live operations and exceptions",
"Forms, evidence, and completion reports"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "flutter-map",
"title": "Build a native-backed Flutter place picker",
"href": "/quickstart/flutter-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "flutter-map-starter",
"title": "Flutter place-selection starter",
"href": "/starter-kits/flutter-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 3,
"journeys": 1
},
"primaryHref": "/quickstart/flutter-map",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=workmate&platform=flutter",
"apiPath": "/api/capability-matrix?product=workmate&platform=flutter",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Workmate · Cordova
- Identity: `capability-decision:workmate--cordova`
- Canonical: https://developer.mappls.com/platforms/matrix?product=workmate&platform=cordova
- State model: stateful
```json
{
"id": "workmate--cordova",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "cordova",
"name": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"capabilities": [
"Worker and team management",
"Task assignment and dispatch",
"Attendance and shift workflows",
"Client visits and proof of service",
"Live operations and exceptions",
"Forms, evidence, and completion reports"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance",
"title": "Stabilize a Cordova map before migration",
"href": "/quickstart/cordova-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance-starter",
"title": "Cordova stabilization starter",
"href": "/starter-kits/cordova-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 3,
"journeys": 1
},
"primaryHref": "/quickstart/cordova-maintenance",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=workmate&platform=cordova",
"apiPath": "/api/capability-matrix?product=workmate&platform=cordova",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Workmate · Xamarin
- Identity: `capability-decision:workmate--xamarin`
- Canonical: https://developer.mappls.com/platforms/matrix?product=workmate&platform=xamarin
- State model: stateful
```json
{
"id": "workmate--xamarin",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "xamarin",
"name": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"capabilities": [
"Worker and team management",
"Task assignment and dispatch",
"Attendance and shift workflows",
"Client visits and proof of service",
"Live operations and exceptions",
"Forms, evidence, and completion reports"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance",
"title": "Extract a Xamarin map integration for replacement",
"href": "/quickstart/xamarin-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance-starter",
"title": "Xamarin extraction starter",
"href": "/starter-kits/xamarin-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 3,
"journeys": 1
},
"primaryHref": "/quickstart/xamarin-maintenance",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=workmate&platform=xamarin",
"apiPath": "/api/capability-matrix?product=workmate&platform=xamarin",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Workmate · Linux
- Identity: `capability-decision:workmate--linux`
- Canonical: https://developer.mappls.com/platforms/matrix?product=workmate&platform=linux
- State model: stateful
```json
{
"id": "workmate--linux",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "linux",
"name": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "entitled-runtime",
"capabilities": [
"Worker and team management",
"Task assignment and dispatch",
"Attendance and shift workflows",
"Client visits and proof of service",
"Live operations and exceptions",
"Forms, evidence, and completion reports"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "linux-embedded",
"title": "Boot a supervised embedded map client",
"href": "/quickstart/linux-embedded"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "linux-embedded-starter",
"title": "Embedded Linux supervisor starter",
"href": "/starter-kits/linux-embedded-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 3,
"journeys": 1
},
"primaryHref": "/quickstart/linux-embedded",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=workmate&platform=linux",
"apiPath": "/api/capability-matrix?product=workmate&platform=linux",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Workmate · Automotive
- Identity: `capability-decision:workmate--automotive`
- Canonical: https://developer.mappls.com/platforms/matrix?product=workmate&platform=automotive
- State model: stateful
```json
{
"id": "workmate--automotive",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "automotive",
"name": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "entitled-runtime",
"capabilities": [
"Worker and team management",
"Task assignment and dispatch",
"Attendance and shift workflows",
"Client visits and proof of service",
"Live operations and exceptions",
"Forms, evidence, and completion reports"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation",
"title": "Simulate one recoverable navigation session",
"href": "/quickstart/automotive-navigation"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation-starter",
"title": "Automotive release-manifest starter",
"href": "/starter-kits/automotive-navigation-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 3,
"journeys": 1
},
"primaryHref": "/quickstart/automotive-navigation",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=workmate&platform=automotive",
"apiPath": "/api/capability-matrix?product=workmate&platform=automotive",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Workmate · Widgets
- Identity: `capability-decision:workmate--widgets`
- Canonical: https://developer.mappls.com/platforms/matrix?product=workmate&platform=widgets
- State model: stateful
```json
{
"id": "workmate--widgets",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "widgets",
"name": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "browser-or-embed",
"capabilities": [
"Worker and team management",
"Task assignment and dispatch",
"Attendance and shift workflows",
"Client visits and proof of service",
"Live operations and exceptions",
"Forms, evidence, and completion reports"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "widgets-place",
"title": "Embed a place journey with an owned fallback",
"href": "/quickstart/widgets-place"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "widgets-place-starter",
"title": "Widget journey host starter",
"href": "/starter-kits/widgets-place-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 3,
"journeys": 1
},
"primaryHref": "/quickstart/widgets-place",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=workmate&platform=widgets",
"apiPath": "/api/capability-matrix?product=workmate&platform=widgets",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Workmate · Deep links
- Identity: `capability-decision:workmate--deep-links`
- Canonical: https://developer.mappls.com/platforms/matrix?product=workmate&platform=deep-links
- State model: stateful
```json
{
"id": "workmate--deep-links",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "deep-links",
"name": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "browser-or-embed",
"capabilities": [
"Worker and team management",
"Task assignment and dispatch",
"Attendance and shift workflows",
"Client visits and proof of service",
"Live operations and exceptions",
"Forms, evidence, and completion reports"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "deep-links",
"title": "Ship one zero-SDK Mappls hand-off",
"href": "/quickstart/deep-links"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "deep-links-starter",
"title": "Deep-link handoff starter",
"href": "/starter-kits/deep-links-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 3,
"journeys": 1
},
"primaryHref": "/quickstart/deep-links",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=workmate&platform=deep-links",
"apiPath": "/api/capability-matrix?product=workmate&platform=deep-links",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Workmate · MCP
- Identity: `capability-decision:workmate--mcp`
- Canonical: https://developer.mappls.com/platforms/matrix?product=workmate&platform=mcp
- State model: stateful
```json
{
"id": "workmate--mcp",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "mcp",
"name": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "ai-client",
"capabilities": [
"Worker and team management",
"Task assignment and dispatch",
"Attendance and shift workflows",
"Client visits and proof of service",
"Live operations and exceptions",
"Forms, evidence, and completion reports"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "mcp-agent",
"title": "Connect a read-only Mappls agent",
"href": "/quickstart/mcp-agent"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "mcp-agent-starter",
"title": "MCP client policy starter",
"href": "/starter-kits/mcp-agent-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"evidenceCounts": {
"sourceGuides": 1,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 3,
"journeys": 1
},
"primaryHref": "/quickstart/mcp-agent",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=workmate&platform=mcp",
"apiPath": "/api/capability-matrix?product=workmate&platform=mcp",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · GIS & Analytics · REST
- Identity: `capability-decision:gis-analytics--rest`
- Canonical: https://developer.mappls.com/platforms/matrix?product=gis-analytics&platform=rest
- State model: hybrid
```json
{
"id": "gis-analytics--rest",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "rest",
"name": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "hybrid",
"integrationLane": "trusted-service",
"capabilities": [
"Dataset upload and cataloguing",
"Layer styling and thematic maps",
"Spatial queries and analysis",
"Dashboards and embedded insights",
"Workspace roles and governed sharing",
"Import, export, and lineage"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/reference/mapmyindia-interactive-map-js-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-mgis-apis",
"title": "Mappls mGIS APIs",
"href": "/reference/mapmyindia-mgis-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-rest-api",
"title": "Mapmyindia REST API",
"href": "/reference/mapmyindia-rest-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ai-apis",
"title": "MAPPLS AI / ML APIs",
"href": "/reference/mappls-ai-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-rest-apis",
"title": "Mappls Map APIs (REST) !",
"href": "/reference/mappls-rest-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "skydnn-aiapi-docs",
"title": "Skydnn AI APIs",
"href": "/reference/skydnn-aiapi-docs"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/sdks/mapmyindia-interactive-map-js-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-woodpecker-address-standardization-api",
"title": "Address Standardization API",
"href": "/api-reference/core-location-get-api-places-woodpecker-address-standardization-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-search-json-autosuggest-api",
"title": "AutoSuggest API",
"href": "/api-reference/core-location-get-api-places-search-json-autosuggest-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-distance-matrix-api",
"title": "Distance Matrix API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-distance-matrix-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-distance-matrix-predictive-driving-coordinates-distance-matrix-predictive-eta-api",
"title": "Distance Matrix Predictive ETA API",
"href": "/api-reference/core-location-get-rest-key-distance-matrix-predictive-driving-coordinates-distance-matrix-predictive-eta-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-elevation-elevation-api",
"title": "Elevation API",
"href": "/api-reference/core-location-get-rest-key-elevation-elevation-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-geocode-geocode-api",
"title": "Geocode API",
"href": "/api-reference/core-location-get-api-places-geocode-geocode-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-nearby-json-nearby-api",
"title": "Nearby API",
"href": "/api-reference/core-location-get-api-places-nearby-json-nearby-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-api-places-along-route-poi-along-the-route-api",
"title": "POI Along the Route API",
"href": "/api-reference/core-location-post-api-places-along-route-poi-along-the-route-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-apis-o2o-entity-eloc-place-detail-api",
"title": "Place Detail API",
"href": "/api-reference/core-location-get-apis-o2o-entity-eloc-place-detail-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-rev-geocode-reverse-geocode-api",
"title": "Reverse Geocode API",
"href": "/api-reference/core-location-get-rest-key-rev-geocode-reverse-geocode-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-route-optimization-api",
"title": "Route Optimization API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-route-optimization-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-routing-api",
"title": "Routing API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-routing-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-biking-geopositions-routing-api-with-biking-profile",
"title": "Routing API with biking profile",
"href": "/api-reference/core-location-get-rest-key-resources-biking-geopositions-routing-api-with-biking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-driving-geopositions-routing-api-with-driving-profile",
"title": "Routing API with driving profile",
"href": "/api-reference/core-location-get-rest-key-resources-driving-geopositions-routing-api-with-driving-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-trucking-geopositions-routing-api-with-trucking-profile",
"title": "Routing API with trucking profile",
"href": "/api-reference/core-location-get-rest-key-resources-trucking-geopositions-routing-api-with-trucking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-walking-geopositions-routing-api-with-walking-profile",
"title": "Routing API with walking profile",
"href": "/api-reference/core-location-get-rest-key-resources-walking-geopositions-routing-api-with-walking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-rest-key-snaptoroad-snap-to-road-api",
"title": "Snap to Road API",
"href": "/api-reference/core-location-post-rest-key-snaptoroad-snap-to-road-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-still-image-still-map-image-api",
"title": "Still Map Image API",
"href": "/api-reference/core-location-get-rest-key-still-image-still-map-image-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-textsearch-json-text-search-api",
"title": "Text Search API",
"href": "/api-reference/core-location-get-api-places-textsearch-json-text-search-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-security-oauth-token-token-generation-api",
"title": "Token Generation API",
"href": "/api-reference/core-location-post-security-oauth-token-token-generation-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-rest-key-still-image-polyline-traveled-route-image-api",
"title": "Traveled Route Image API",
"href": "/api-reference/core-location-post-rest-key-still-image-polyline-traveled-route-image-api"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "gis-site-selection",
"title": "Build a reproducible site-selection model",
"href": "/tutorials/gis-site-selection"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "webhook-reliability",
"title": "Consume Mappls events exactly once in effect",
"href": "/tutorials/webhook-reliability"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "rest-api",
"title": "Your first trusted Mappls request",
"href": "/quickstart/rest-api"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "rest-api-starter",
"title": "Trusted REST service starter",
"href": "/starter-kits/rest-api-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"evidenceCounts": {
"sourceGuides": 6,
"sdks": 1,
"apiOperations": 21,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 7,
"journeys": 1
},
"primaryHref": "/tutorials/gis-site-selection",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=gis-analytics&platform=rest",
"apiPath": "/api/capability-matrix?product=gis-analytics&platform=rest",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · GIS & Analytics · Web
- Identity: `capability-decision:gis-analytics--web`
- Canonical: https://developer.mappls.com/platforms/matrix?product=gis-analytics&platform=web
- State model: hybrid
```json
{
"id": "gis-analytics--web",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "web",
"name": "Web",
"headline": "Build expressive browser maps without surrendering performance or control."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"capabilities": [
"Dataset upload and cataloguing",
"Layer styling and thematic maps",
"Spatial queries and analysis",
"Dashboards and embedded insights",
"Workspace roles and governed sharing",
"Import, export, and lineage"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-geoanalytics-api-web",
"title": "MapmyIndia Geo-Analytics APIs !",
"href": "/reference/mapmyindia-geoanalytics-api-web"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/reference/mapmyindia-interactive-map-js-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-vector-maps-js-web-sdk",
"title": "Mapmyindia Vector Maps JS Web SDK",
"href": "/reference/mapmyindia-vector-maps-js-web-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-insight-sdk",
"title": "Mappls Insight Embeddable Visualizations",
"href": "/reference/mappls-insight-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-maps",
"title": "Sign up for Mappls",
"href": "/reference/mappls-web-maps"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-maps-js",
"title": "Mappls Web Maps JS",
"href": "/reference/mappls-web-maps-js"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-vector-maps-js-web-sdk",
"title": "Mapmyindia Vector Maps JS Web SDK",
"href": "/sdks/mapmyindia-vector-maps-js-web-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-insight-sdk",
"title": "Mappls Insight Embeddable Visualizations",
"href": "/sdks/mappls-insight-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/sdks/mapmyindia-interactive-map-js-api"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "gis-site-selection",
"title": "Build a reproducible site-selection model",
"href": "/tutorials/gis-site-selection"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "geojson-operations-layer",
"title": "Render a governed GeoJSON operations layer",
"href": "/tutorials/geojson-operations-layer"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "web-map",
"title": "Render one accessible web map",
"href": "/quickstart/web-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "web-map-starter",
"title": "Accessible web map host starter",
"href": "/starter-kits/web-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"evidenceCounts": {
"sourceGuides": 6,
"sdks": 3,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 7,
"journeys": 1
},
"primaryHref": "/tutorials/gis-site-selection",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=gis-analytics&platform=web",
"apiPath": "/api/capability-matrix?product=gis-analytics&platform=web",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · GIS & Analytics · Android
- Identity: `capability-decision:gis-analytics--android`
- Canonical: https://developer.mappls.com/platforms/matrix?product=gis-analytics&platform=android
- State model: hybrid
```json
{
"id": "gis-analytics--android",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "android",
"name": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Dataset upload and cataloguing",
"Layer styling and thematic maps",
"Spatial queries and analysis",
"Dashboards and embedded insights",
"Workspace roles and governed sharing",
"Import, export, and lineage"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "android-native",
"title": "Create a lifecycle-safe Android map",
"href": "/quickstart/android-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "android-native-starter",
"title": "Android lifecycle adapter starter",
"href": "/starter-kits/android-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"evidenceCounts": {
"sourceGuides": 5,
"sdks": 4,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 7,
"journeys": 1
},
"primaryHref": "/sdks/mapmyindia-intouch-android-sdk",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=gis-analytics&platform=android",
"apiPath": "/api/capability-matrix?product=gis-analytics&platform=android",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · GIS & Analytics · iOS
- Identity: `capability-decision:gis-analytics--ios`
- Canonical: https://developer.mappls.com/platforms/matrix?product=gis-analytics&platform=ios
- State model: hybrid
```json
{
"id": "gis-analytics--ios",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "ios",
"name": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Dataset upload and cataloguing",
"Layer styling and thematic maps",
"Spatial queries and analysis",
"Dashboards and embedded insights",
"Workspace roles and governed sharing",
"Import, export, and lineage"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "ios-native",
"title": "Create a lifecycle-safe iOS map",
"href": "/quickstart/ios-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "ios-native-starter",
"title": "iOS view-ownership starter",
"href": "/starter-kits/ios-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"evidenceCounts": {
"sourceGuides": 8,
"sdks": 8,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 7,
"journeys": 1
},
"primaryHref": "/sdks/mappls-intouch-ios-sdk",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=gis-analytics&platform=ios",
"apiPath": "/api/capability-matrix?product=gis-analytics&platform=ios",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · GIS & Analytics · React Native
- Identity: `capability-decision:gis-analytics--react-native`
- Canonical: https://developer.mappls.com/platforms/matrix?product=gis-analytics&platform=react-native
- State model: hybrid
```json
{
"id": "gis-analytics--react-native",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "react-native",
"name": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Dataset upload and cataloguing",
"Layer styling and thematic maps",
"Spatial queries and analysis",
"Dashboards and embedded insights",
"Workspace roles and governed sharing",
"Import, export, and lineage"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "react-native-map",
"title": "Bridge one map feature across Android and iOS",
"href": "/quickstart/react-native-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "react-native-map-starter",
"title": "React Native bridge-contract starter",
"href": "/starter-kits/react-native-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"evidenceCounts": {
"sourceGuides": 4,
"sdks": 3,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 7,
"journeys": 1
},
"primaryHref": "/sdks/mapmyindia-intouch-react-native-sdk",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=gis-analytics&platform=react-native",
"apiPath": "/api/capability-matrix?product=gis-analytics&platform=react-native",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · GIS & Analytics · Flutter
- Identity: `capability-decision:gis-analytics--flutter`
- Canonical: https://developer.mappls.com/platforms/matrix?product=gis-analytics&platform=flutter
- State model: hybrid
```json
{
"id": "gis-analytics--flutter",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "flutter",
"name": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Dataset upload and cataloguing",
"Layer styling and thematic maps",
"Spatial queries and analysis",
"Dashboards and embedded insights",
"Workspace roles and governed sharing",
"Import, export, and lineage"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "flutter-map",
"title": "Build a native-backed Flutter place picker",
"href": "/quickstart/flutter-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "flutter-map-starter",
"title": "Flutter place-selection starter",
"href": "/starter-kits/flutter-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"evidenceCounts": {
"sourceGuides": 1,
"sdks": 1,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 7,
"journeys": 1
},
"primaryHref": "/sdks/mappls-flutter-sdk",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=gis-analytics&platform=flutter",
"apiPath": "/api/capability-matrix?product=gis-analytics&platform=flutter",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · GIS & Analytics · Cordova
- Identity: `capability-decision:gis-analytics--cordova`
- Canonical: https://developer.mappls.com/platforms/matrix?product=gis-analytics&platform=cordova
- State model: hybrid
```json
{
"id": "gis-analytics--cordova",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "cordova",
"name": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Dataset upload and cataloguing",
"Layer styling and thematic maps",
"Spatial queries and analysis",
"Dashboards and embedded insights",
"Workspace roles and governed sharing",
"Import, export, and lineage"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance",
"title": "Stabilize a Cordova map before migration",
"href": "/quickstart/cordova-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance-starter",
"title": "Cordova stabilization starter",
"href": "/starter-kits/cordova-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"evidenceCounts": {
"sourceGuides": 1,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 7,
"journeys": 1
},
"primaryHref": "/quickstart/cordova-maintenance",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=gis-analytics&platform=cordova",
"apiPath": "/api/capability-matrix?product=gis-analytics&platform=cordova",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · GIS & Analytics · Xamarin
- Identity: `capability-decision:gis-analytics--xamarin`
- Canonical: https://developer.mappls.com/platforms/matrix?product=gis-analytics&platform=xamarin
- State model: hybrid
```json
{
"id": "gis-analytics--xamarin",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "xamarin",
"name": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Dataset upload and cataloguing",
"Layer styling and thematic maps",
"Spatial queries and analysis",
"Dashboards and embedded insights",
"Workspace roles and governed sharing",
"Import, export, and lineage"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance",
"title": "Extract a Xamarin map integration for replacement",
"href": "/quickstart/xamarin-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance-starter",
"title": "Xamarin extraction starter",
"href": "/starter-kits/xamarin-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 7,
"journeys": 1
},
"primaryHref": "/quickstart/xamarin-maintenance",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=gis-analytics&platform=xamarin",
"apiPath": "/api/capability-matrix?product=gis-analytics&platform=xamarin",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · GIS & Analytics · Linux
- Identity: `capability-decision:gis-analytics--linux`
- Canonical: https://developer.mappls.com/platforms/matrix?product=gis-analytics&platform=linux
- State model: hybrid
```json
{
"id": "gis-analytics--linux",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "linux",
"name": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "entitled-runtime",
"capabilities": [
"Dataset upload and cataloguing",
"Layer styling and thematic maps",
"Spatial queries and analysis",
"Dashboards and embedded insights",
"Workspace roles and governed sharing",
"Import, export, and lineage"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "linux-embedded",
"title": "Boot a supervised embedded map client",
"href": "/quickstart/linux-embedded"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "linux-embedded-starter",
"title": "Embedded Linux supervisor starter",
"href": "/starter-kits/linux-embedded-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 7,
"journeys": 1
},
"primaryHref": "/quickstart/linux-embedded",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=gis-analytics&platform=linux",
"apiPath": "/api/capability-matrix?product=gis-analytics&platform=linux",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · GIS & Analytics · Automotive
- Identity: `capability-decision:gis-analytics--automotive`
- Canonical: https://developer.mappls.com/platforms/matrix?product=gis-analytics&platform=automotive
- State model: hybrid
```json
{
"id": "gis-analytics--automotive",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "automotive",
"name": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "entitled-runtime",
"capabilities": [
"Dataset upload and cataloguing",
"Layer styling and thematic maps",
"Spatial queries and analysis",
"Dashboards and embedded insights",
"Workspace roles and governed sharing",
"Import, export, and lineage"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation",
"title": "Simulate one recoverable navigation session",
"href": "/quickstart/automotive-navigation"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation-starter",
"title": "Automotive release-manifest starter",
"href": "/starter-kits/automotive-navigation-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 7,
"journeys": 1
},
"primaryHref": "/quickstart/automotive-navigation",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=gis-analytics&platform=automotive",
"apiPath": "/api/capability-matrix?product=gis-analytics&platform=automotive",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · GIS & Analytics · Widgets
- Identity: `capability-decision:gis-analytics--widgets`
- Canonical: https://developer.mappls.com/platforms/matrix?product=gis-analytics&platform=widgets
- State model: hybrid
```json
{
"id": "gis-analytics--widgets",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "widgets",
"name": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate."
},
"availability": "listed",
"evidenceStatus": "listed-selection-required",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"capabilities": [
"Dataset upload and cataloguing",
"Layer styling and thematic maps",
"Spatial queries and analysis",
"Dashboards and embedded insights",
"Workspace roles and governed sharing",
"Import, export, and lineage"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "widgets-place",
"title": "Embed a place journey with an owned fallback",
"href": "/quickstart/widgets-place"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "widgets-place-starter",
"title": "Widget journey host starter",
"href": "/starter-kits/widgets-place-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 7,
"journeys": 1
},
"primaryHref": "/quickstart/widgets-place",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=gis-analytics&platform=widgets",
"apiPath": "/api/capability-matrix?product=gis-analytics&platform=widgets",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · GIS & Analytics · Deep links
- Identity: `capability-decision:gis-analytics--deep-links`
- Canonical: https://developer.mappls.com/platforms/matrix?product=gis-analytics&platform=deep-links
- State model: hybrid
```json
{
"id": "gis-analytics--deep-links",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "deep-links",
"name": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"capabilities": [
"Dataset upload and cataloguing",
"Layer styling and thematic maps",
"Spatial queries and analysis",
"Dashboards and embedded insights",
"Workspace roles and governed sharing",
"Import, export, and lineage"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "deep-links",
"title": "Ship one zero-SDK Mappls hand-off",
"href": "/quickstart/deep-links"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "deep-links-starter",
"title": "Deep-link handoff starter",
"href": "/starter-kits/deep-links-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 7,
"journeys": 1
},
"primaryHref": "/quickstart/deep-links",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=gis-analytics&platform=deep-links",
"apiPath": "/api/capability-matrix?product=gis-analytics&platform=deep-links",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · GIS & Analytics · MCP
- Identity: `capability-decision:gis-analytics--mcp`
- Canonical: https://developer.mappls.com/platforms/matrix?product=gis-analytics&platform=mcp
- State model: hybrid
```json
{
"id": "gis-analytics--mcp",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "mcp",
"name": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "hybrid",
"integrationLane": "ai-client",
"capabilities": [
"Dataset upload and cataloguing",
"Layer styling and thematic maps",
"Spatial queries and analysis",
"Dashboards and embedded insights",
"Workspace roles and governed sharing",
"Import, export, and lineage"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ai-apis",
"title": "MAPPLS AI / ML APIs",
"href": "/reference/mappls-ai-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "skydnn-aiapi-docs",
"title": "Skydnn AI APIs",
"href": "/reference/skydnn-aiapi-docs"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "mcp-agent",
"title": "Connect a read-only Mappls agent",
"href": "/quickstart/mcp-agent"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "mcp-agent-starter",
"title": "MCP client policy starter",
"href": "/starter-kits/mcp-agent-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"evidenceCounts": {
"sourceGuides": 2,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 7,
"journeys": 1
},
"primaryHref": "/quickstart/mcp-agent",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=gis-analytics&platform=mcp",
"apiPath": "/api/capability-matrix?product=gis-analytics&platform=mcp",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · App Widgets & Deep Links · REST
- Identity: `capability-decision:app-widgets-deep-links--rest`
- Canonical: https://developer.mappls.com/platforms/matrix?product=app-widgets-deep-links&platform=rest
- State model: stateless
```json
{
"id": "app-widgets-deep-links--rest",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "rest",
"name": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateless",
"integrationLane": "trusted-service",
"capabilities": [
"Place and map visualization",
"Directions and navigation hand-off",
"Immersive 3D and RealView experiences",
"Cross-platform universal links",
"Low-code embeds",
"Credential-free entry points"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "rest-api",
"title": "Your first trusted Mappls request",
"href": "/quickstart/rest-api"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "rest-api-starter",
"title": "Trusted REST service starter",
"href": "/starter-kits/rest-api-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"evidenceCounts": {
"sourceGuides": 1,
"sdks": 1,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 6,
"journeys": 2
},
"primaryHref": "/sdks/mapmyindia-interactive-map-js-api",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=app-widgets-deep-links&platform=rest",
"apiPath": "/api/capability-matrix?product=app-widgets-deep-links&platform=rest",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · App Widgets & Deep Links · Web
- Identity: `capability-decision:app-widgets-deep-links--web`
- Canonical: https://developer.mappls.com/platforms/matrix?product=app-widgets-deep-links&platform=web
- State model: stateless
```json
{
"id": "app-widgets-deep-links--web",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "web",
"name": "Web",
"headline": "Build expressive browser maps without surrendering performance or control."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateless",
"integrationLane": "browser-or-embed",
"capabilities": [
"Place and map visualization",
"Directions and navigation hand-off",
"Immersive 3D and RealView experiences",
"Cross-platform universal links",
"Low-code embeds",
"Credential-free entry points"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/reference/mapmyindia-interactive-map-js-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-web-plugins",
"title": "Mapmyindia Intouch Web Plugins",
"href": "/reference/mapmyindia-intouch-web-plugins"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-nearby-covid-places",
"title": "Mapmyindia Nearby Covid Places",
"href": "/reference/mapmyindia-nearby-covid-places"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-vector-maps-js-web-sdk",
"title": "Mapmyindia Vector Maps JS Web SDK",
"href": "/reference/mapmyindia-vector-maps-js-web-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-maps",
"title": "Sign up for Mappls",
"href": "/reference/mappls-web-maps"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-maps-js",
"title": "Mappls Web Maps JS",
"href": "/reference/mappls-web-maps-js"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-plugins",
"title": "Mappls Web Plugins",
"href": "/reference/mappls-web-plugins"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-vector-maps-js-web-sdk",
"title": "Mapmyindia Vector Maps JS Web SDK",
"href": "/sdks/mapmyindia-vector-maps-js-web-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/sdks/mapmyindia-interactive-map-js-api"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "web-widget-place-picker",
"title": "Embed a place picker widget",
"href": "/tutorials/web-widget-place-picker"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "web-map",
"title": "Render one accessible web map",
"href": "/quickstart/web-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "web-map-starter",
"title": "Accessible web map host starter",
"href": "/starter-kits/web-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"evidenceCounts": {
"sourceGuides": 7,
"sdks": 2,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 6,
"journeys": 2
},
"primaryHref": "/tutorials/web-widget-place-picker",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=app-widgets-deep-links&platform=web",
"apiPath": "/api/capability-matrix?product=app-widgets-deep-links&platform=web",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · App Widgets & Deep Links · Android
- Identity: `capability-decision:app-widgets-deep-links--android`
- Canonical: https://developer.mappls.com/platforms/matrix?product=app-widgets-deep-links&platform=android
- State model: stateless
```json
{
"id": "app-widgets-deep-links--android",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "android",
"name": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateless",
"integrationLane": "native-client",
"capabilities": [
"Place and map visualization",
"Directions and navigation hand-off",
"Immersive 3D and RealView experiences",
"Cross-platform universal links",
"Low-code embeds",
"Credential-free entry points"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-android-sdk",
"title": "Mapmyindia Intouch Android SDK",
"href": "/reference/mapmyindia-intouch-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/reference/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-compose-demo",
"title": "Mappls Vector Map Android SDK JetPack Compose",
"href": "/reference/mappls-android-compose-demo"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/reference/mappls-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/reference/mappls-camera-sdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-android-sdk",
"title": "Mappls Intouch Android SDK",
"href": "/reference/mappls-intouch-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-location-capture-android-sdk",
"title": "Mappls Location Capture SDK",
"href": "/reference/mappls-location-capture-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-android-sdk",
"title": "Mapmyindia Intouch Android SDK",
"href": "/sdks/mapmyindia-intouch-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/sdks/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/sdks/mappls-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/sdks/mappls-camera-sdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-intouch-android-sdk",
"title": "Mappls Intouch Android SDK",
"href": "/sdks/mappls-intouch-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-location-capture-android-sdk",
"title": "Mappls Location Capture SDK",
"href": "/sdks/mappls-location-capture-android-sdk"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "android-native",
"title": "Create a lifecycle-safe Android map",
"href": "/quickstart/android-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "android-native-starter",
"title": "Android lifecycle adapter starter",
"href": "/starter-kits/android-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"evidenceCounts": {
"sourceGuides": 7,
"sdks": 6,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 6,
"journeys": 2
},
"primaryHref": "/sdks/mapmyindia-intouch-android-sdk",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=app-widgets-deep-links&platform=android",
"apiPath": "/api/capability-matrix?product=app-widgets-deep-links&platform=android",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · App Widgets & Deep Links · iOS
- Identity: `capability-decision:app-widgets-deep-links--ios`
- Canonical: https://developer.mappls.com/platforms/matrix?product=app-widgets-deep-links&platform=ios
- State model: stateless
```json
{
"id": "app-widgets-deep-links--ios",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "ios",
"name": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateless",
"integrationLane": "native-client",
"capabilities": [
"Place and map visualization",
"Directions and navigation hand-off",
"Immersive 3D and RealView experiences",
"Cross-platform universal links",
"Low-code embeds",
"Credential-free entry points"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-ios",
"title": "Mapmyindia Maps VectorSDK IOS",
"href": "/reference/mapmyindia-maps-vectorsdk-ios"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/reference/mappls-drivingrange-plugin-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution-base",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/reference/mappls-drivingrange-plugin-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution",
"title": "MapplsFeedbackKit for iOS",
"href": "/reference/mappls-feedback-kit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution-base",
"title": "MapplsFeedbackKit for iOS",
"href": "/reference/mappls-feedback-kit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/reference/mappls-feedback-uikit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution-base",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/reference/mappls-feedback-uikit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/reference/mappls-geoanalytics-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution-base",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/reference/mappls-geoanalytics-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/reference/mappls-geofence-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution-base",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/reference/mappls-geofence-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/reference/mappls-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-move-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/reference/mappls-nearby-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution-base",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/reference/mappls-nearby-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/reference/mappls-raster-catalogue-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution-base",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/reference/mappls-raster-catalogue-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-move-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-ios",
"title": "Mapmyindia Maps VectorSDK IOS",
"href": "/sdks/mapmyindia-maps-vectorsdk-ios"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/sdks/mappls-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/sdks/mappls-nearby-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution-base",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/sdks/mappls-nearby-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/sdks/mappls-drivingrange-plugin-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution-base",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/sdks/mappls-drivingrange-plugin-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution",
"title": "MapplsFeedbackKit for iOS",
"href": "/sdks/mappls-feedback-kit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution-base",
"title": "MapplsFeedbackKit for iOS",
"href": "/sdks/mappls-feedback-kit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/sdks/mappls-feedback-uikit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution-base",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/sdks/mappls-feedback-uikit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/sdks/mappls-geoanalytics-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution-base",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/sdks/mappls-geoanalytics-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/sdks/mappls-geofence-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution-base",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/sdks/mappls-geofence-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/sdks/mappls-raster-catalogue-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution-base",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/sdks/mappls-raster-catalogue-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "ios-sdk-production-readiness",
"title": "Qualify an iOS Mappls release",
"href": "/tutorials/ios-sdk-production-readiness"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "ios-direction-geofence-handoffs",
"title": "Build restart-safe iOS direction and geofence handoffs",
"href": "/tutorials/ios-direction-geofence-handoffs"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "ios-native",
"title": "Create a lifecycle-safe iOS map",
"href": "/quickstart/ios-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "ios-native-starter",
"title": "iOS view-ownership starter",
"href": "/starter-kits/ios-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"evidenceCounts": {
"sourceGuides": 23,
"sdks": 23,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 6,
"journeys": 2
},
"primaryHref": "/tutorials/ios-sdk-production-readiness",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=app-widgets-deep-links&platform=ios",
"apiPath": "/api/capability-matrix?product=app-widgets-deep-links&platform=ios",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · App Widgets & Deep Links · React Native
- Identity: `capability-decision:app-widgets-deep-links--react-native`
- Canonical: https://developer.mappls.com/platforms/matrix?product=app-widgets-deep-links&platform=react-native
- State model: stateless
```json
{
"id": "app-widgets-deep-links--react-native",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "react-native",
"name": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateless",
"integrationLane": "native-client",
"capabilities": [
"Place and map visualization",
"Directions and navigation hand-off",
"Immersive 3D and RealView experiences",
"Cross-platform universal links",
"Low-code embeds",
"Credential-free entry points"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "react-native-map",
"title": "Bridge one map feature across Android and iOS",
"href": "/quickstart/react-native-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "react-native-map-starter",
"title": "React Native bridge-contract starter",
"href": "/starter-kits/react-native-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"evidenceCounts": {
"sourceGuides": 1,
"sdks": 1,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 6,
"journeys": 2
},
"primaryHref": "/sdks/mappls-react-native-sdk",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=app-widgets-deep-links&platform=react-native",
"apiPath": "/api/capability-matrix?product=app-widgets-deep-links&platform=react-native",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · App Widgets & Deep Links · Flutter
- Identity: `capability-decision:app-widgets-deep-links--flutter`
- Canonical: https://developer.mappls.com/platforms/matrix?product=app-widgets-deep-links&platform=flutter
- State model: stateless
```json
{
"id": "app-widgets-deep-links--flutter",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "flutter",
"name": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateless",
"integrationLane": "native-client",
"capabilities": [
"Place and map visualization",
"Directions and navigation hand-off",
"Immersive 3D and RealView experiences",
"Cross-platform universal links",
"Low-code embeds",
"Credential-free entry points"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "flutter-map",
"title": "Build a native-backed Flutter place picker",
"href": "/quickstart/flutter-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "flutter-map-starter",
"title": "Flutter place-selection starter",
"href": "/starter-kits/flutter-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"evidenceCounts": {
"sourceGuides": 2,
"sdks": 2,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 6,
"journeys": 2
},
"primaryHref": "/sdks/flutter-mapmyindia-gl",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=app-widgets-deep-links&platform=flutter",
"apiPath": "/api/capability-matrix?product=app-widgets-deep-links&platform=flutter",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · App Widgets & Deep Links · Cordova
- Identity: `capability-decision:app-widgets-deep-links--cordova`
- Canonical: https://developer.mappls.com/platforms/matrix?product=app-widgets-deep-links&platform=cordova
- State model: stateless
```json
{
"id": "app-widgets-deep-links--cordova",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "cordova",
"name": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateless",
"integrationLane": "native-client",
"capabilities": [
"Place and map visualization",
"Directions and navigation hand-off",
"Immersive 3D and RealView experiences",
"Cross-platform universal links",
"Low-code embeds",
"Credential-free entry points"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance",
"title": "Stabilize a Cordova map before migration",
"href": "/quickstart/cordova-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance-starter",
"title": "Cordova stabilization starter",
"href": "/starter-kits/cordova-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"evidenceCounts": {
"sourceGuides": 2,
"sdks": 1,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 6,
"journeys": 2
},
"primaryHref": "/sdks/mapmyindia-restapi-cordova-ionic-beta",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=app-widgets-deep-links&platform=cordova",
"apiPath": "/api/capability-matrix?product=app-widgets-deep-links&platform=cordova",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · App Widgets & Deep Links · Xamarin
- Identity: `capability-decision:app-widgets-deep-links--xamarin`
- Canonical: https://developer.mappls.com/platforms/matrix?product=app-widgets-deep-links&platform=xamarin
- State model: stateless
```json
{
"id": "app-widgets-deep-links--xamarin",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "xamarin",
"name": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateless",
"integrationLane": "native-client",
"capabilities": [
"Place and map visualization",
"Directions and navigation hand-off",
"Immersive 3D and RealView experiences",
"Cross-platform universal links",
"Low-code embeds",
"Credential-free entry points"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance",
"title": "Extract a Xamarin map integration for replacement",
"href": "/quickstart/xamarin-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance-starter",
"title": "Xamarin extraction starter",
"href": "/starter-kits/xamarin-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 6,
"journeys": 2
},
"primaryHref": "/quickstart/xamarin-maintenance",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=app-widgets-deep-links&platform=xamarin",
"apiPath": "/api/capability-matrix?product=app-widgets-deep-links&platform=xamarin",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · App Widgets & Deep Links · Linux
- Identity: `capability-decision:app-widgets-deep-links--linux`
- Canonical: https://developer.mappls.com/platforms/matrix?product=app-widgets-deep-links&platform=linux
- State model: stateless
```json
{
"id": "app-widgets-deep-links--linux",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "linux",
"name": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateless",
"integrationLane": "entitled-runtime",
"capabilities": [
"Place and map visualization",
"Directions and navigation hand-off",
"Immersive 3D and RealView experiences",
"Cross-platform universal links",
"Low-code embeds",
"Credential-free entry points"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "linux-embedded",
"title": "Boot a supervised embedded map client",
"href": "/quickstart/linux-embedded"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "linux-embedded-starter",
"title": "Embedded Linux supervisor starter",
"href": "/starter-kits/linux-embedded-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 6,
"journeys": 2
},
"primaryHref": "/quickstart/linux-embedded",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=app-widgets-deep-links&platform=linux",
"apiPath": "/api/capability-matrix?product=app-widgets-deep-links&platform=linux",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · App Widgets & Deep Links · Automotive
- Identity: `capability-decision:app-widgets-deep-links--automotive`
- Canonical: https://developer.mappls.com/platforms/matrix?product=app-widgets-deep-links&platform=automotive
- State model: stateless
```json
{
"id": "app-widgets-deep-links--automotive",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "automotive",
"name": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateless",
"integrationLane": "entitled-runtime",
"capabilities": [
"Place and map visualization",
"Directions and navigation hand-off",
"Immersive 3D and RealView experiences",
"Cross-platform universal links",
"Low-code embeds",
"Credential-free entry points"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation",
"title": "Simulate one recoverable navigation session",
"href": "/quickstart/automotive-navigation"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation-starter",
"title": "Automotive release-manifest starter",
"href": "/starter-kits/automotive-navigation-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 6,
"journeys": 2
},
"primaryHref": "/quickstart/automotive-navigation",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=app-widgets-deep-links&platform=automotive",
"apiPath": "/api/capability-matrix?product=app-widgets-deep-links&platform=automotive",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · App Widgets & Deep Links · Widgets
- Identity: `capability-decision:app-widgets-deep-links--widgets`
- Canonical: https://developer.mappls.com/platforms/matrix?product=app-widgets-deep-links&platform=widgets
- State model: stateless
```json
{
"id": "app-widgets-deep-links--widgets",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "widgets",
"name": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateless",
"integrationLane": "browser-or-embed",
"capabilities": [
"Place and map visualization",
"Directions and navigation hand-off",
"Immersive 3D and RealView experiences",
"Cross-platform universal links",
"Low-code embeds",
"Credential-free entry points"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-web-plugins",
"title": "Mapmyindia Intouch Web Plugins",
"href": "/reference/mapmyindia-intouch-web-plugins"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-app-widgets",
"title": "Mappls App Widgets",
"href": "/reference/mappls-app-widgets"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-plugins",
"title": "Mappls Web Plugins",
"href": "/reference/mappls-web-plugins"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "web-widget-place-picker",
"title": "Embed a place picker widget",
"href": "/tutorials/web-widget-place-picker"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "widget-host-production",
"title": "Operate widgets as untrusted lifecycle surfaces",
"href": "/tutorials/widget-host-production"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "widgets-place",
"title": "Embed a place journey with an owned fallback",
"href": "/quickstart/widgets-place"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "widgets-place-starter",
"title": "Widget journey host starter",
"href": "/starter-kits/widgets-place-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"evidenceCounts": {
"sourceGuides": 3,
"sdks": 0,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 6,
"journeys": 2
},
"primaryHref": "/tutorials/web-widget-place-picker",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=app-widgets-deep-links&platform=widgets",
"apiPath": "/api/capability-matrix?product=app-widgets-deep-links&platform=widgets",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · App Widgets & Deep Links · Deep links
- Identity: `capability-decision:app-widgets-deep-links--deep-links`
- Canonical: https://developer.mappls.com/platforms/matrix?product=app-widgets-deep-links&platform=deep-links
- State model: stateless
```json
{
"id": "app-widgets-deep-links--deep-links",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "deep-links",
"name": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateless",
"integrationLane": "browser-or-embed",
"capabilities": [
"Place and map visualization",
"Directions and navigation hand-off",
"Immersive 3D and RealView experiences",
"Cross-platform universal links",
"Low-code embeds",
"Credential-free entry points"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-web-plugins",
"title": "Mapmyindia Intouch Web Plugins",
"href": "/reference/mapmyindia-intouch-web-plugins"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-app-widgets",
"title": "Mappls App Widgets",
"href": "/reference/mappls-app-widgets"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-plugins",
"title": "Mappls Web Plugins",
"href": "/reference/mappls-web-plugins"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "deep-link-campaign",
"title": "Create a zero-SDK location campaign",
"href": "/tutorials/deep-link-campaign"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "navigation-deep-link",
"title": "Hand off to navigation with a resilient deep link",
"href": "/tutorials/navigation-deep-link"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "deep-link-attribution-resilience",
"title": "Operate deep links across every hand-off",
"href": "/tutorials/deep-link-attribution-resilience"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "deep-links",
"title": "Ship one zero-SDK Mappls hand-off",
"href": "/quickstart/deep-links"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "deep-links-starter",
"title": "Deep-link handoff starter",
"href": "/starter-kits/deep-links-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"evidenceCounts": {
"sourceGuides": 3,
"sdks": 0,
"apiOperations": 0,
"tutorials": 3,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 6,
"journeys": 2
},
"primaryHref": "/tutorials/deep-link-campaign",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=app-widgets-deep-links&platform=deep-links",
"apiPath": "/api/capability-matrix?product=app-widgets-deep-links&platform=deep-links",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · App Widgets & Deep Links · MCP
- Identity: `capability-decision:app-widgets-deep-links--mcp`
- Canonical: https://developer.mappls.com/platforms/matrix?product=app-widgets-deep-links&platform=mcp
- State model: stateless
```json
{
"id": "app-widgets-deep-links--mcp",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "mcp",
"name": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateless",
"integrationLane": "ai-client",
"capabilities": [
"Place and map visualization",
"Directions and navigation hand-off",
"Immersive 3D and RealView experiences",
"Cross-platform universal links",
"Low-code embeds",
"Credential-free entry points"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "mcp-agent",
"title": "Connect a read-only Mappls agent",
"href": "/quickstart/mcp-agent"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "mcp-agent-starter",
"title": "MCP client policy starter",
"href": "/starter-kits/mcp-agent-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 6,
"journeys": 2
},
"primaryHref": "/quickstart/mcp-agent",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=app-widgets-deep-links&platform=mcp",
"apiPath": "/api/capability-matrix?product=app-widgets-deep-links&platform=mcp",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Offline & Automotive · REST
- Identity: `capability-decision:offline-automotive--rest`
- Canonical: https://developer.mappls.com/platforms/matrix?product=offline-automotive&platform=rest
- State model: stateful
```json
{
"id": "offline-automotive--rest",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "rest",
"name": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "trusted-service",
"capabilities": [
"Offline maps, search, and routing",
"Turn-by-turn guidance runtime",
"Regional data compilation",
"Voice and traffic customization",
"GPS health and dead reckoning hooks",
"Signed data and software updates"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "rest-api",
"title": "Your first trusted Mappls request",
"href": "/quickstart/rest-api"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "rest-api-starter",
"title": "Trusted REST service starter",
"href": "/starter-kits/rest-api-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 1,
"journeys": 1
},
"primaryHref": "/quickstart/rest-api",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=offline-automotive&platform=rest",
"apiPath": "/api/capability-matrix?product=offline-automotive&platform=rest",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Offline & Automotive · Web
- Identity: `capability-decision:offline-automotive--web`
- Canonical: https://developer.mappls.com/platforms/matrix?product=offline-automotive&platform=web
- State model: stateful
```json
{
"id": "offline-automotive--web",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "web",
"name": "Web",
"headline": "Build expressive browser maps without surrendering performance or control."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "browser-or-embed",
"capabilities": [
"Offline maps, search, and routing",
"Turn-by-turn guidance runtime",
"Regional data compilation",
"Voice and traffic customization",
"GPS health and dead reckoning hooks",
"Signed data and software updates"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "web-map",
"title": "Render one accessible web map",
"href": "/quickstart/web-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "web-map-starter",
"title": "Accessible web map host starter",
"href": "/starter-kits/web-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"evidenceCounts": {
"sourceGuides": 1,
"sdks": 1,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 1,
"journeys": 1
},
"primaryHref": "/sdks/mappls-insight-sdk",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=offline-automotive&platform=web",
"apiPath": "/api/capability-matrix?product=offline-automotive&platform=web",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Offline & Automotive · Android
- Identity: `capability-decision:offline-automotive--android`
- Canonical: https://developer.mappls.com/platforms/matrix?product=offline-automotive&platform=android
- State model: stateful
```json
{
"id": "offline-automotive--android",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "android",
"name": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateful",
"integrationLane": "native-client",
"capabilities": [
"Offline maps, search, and routing",
"Turn-by-turn guidance runtime",
"Regional data compilation",
"Voice and traffic customization",
"GPS health and dead reckoning hooks",
"Signed data and software updates"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/reference/mappls-camera-sdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/sdks/mappls-camera-sdk-android"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "android-native",
"title": "Create a lifecycle-safe Android map",
"href": "/quickstart/android-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "android-native-starter",
"title": "Android lifecycle adapter starter",
"href": "/starter-kits/android-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"evidenceCounts": {
"sourceGuides": 1,
"sdks": 1,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 1,
"journeys": 1
},
"primaryHref": "/sdks/mappls-camera-sdk-android",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=offline-automotive&platform=android",
"apiPath": "/api/capability-matrix?product=offline-automotive&platform=android",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Offline & Automotive · iOS
- Identity: `capability-decision:offline-automotive--ios`
- Canonical: https://developer.mappls.com/platforms/matrix?product=offline-automotive&platform=ios
- State model: stateful
```json
{
"id": "offline-automotive--ios",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "ios",
"name": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"capabilities": [
"Offline maps, search, and routing",
"Turn-by-turn guidance runtime",
"Regional data compilation",
"Voice and traffic customization",
"GPS health and dead reckoning hooks",
"Signed data and software updates"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "ios-native",
"title": "Create a lifecycle-safe iOS map",
"href": "/quickstart/ios-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "ios-native-starter",
"title": "iOS view-ownership starter",
"href": "/starter-kits/ios-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"evidenceCounts": {
"sourceGuides": 4,
"sdks": 4,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 1,
"journeys": 1
},
"primaryHref": "/tutorials/ios-sdk-production-readiness",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=offline-automotive&platform=ios",
"apiPath": "/api/capability-matrix?product=offline-automotive&platform=ios",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Offline & Automotive · React Native
- Identity: `capability-decision:offline-automotive--react-native`
- Canonical: https://developer.mappls.com/platforms/matrix?product=offline-automotive&platform=react-native
- State model: stateful
```json
{
"id": "offline-automotive--react-native",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "react-native",
"name": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"capabilities": [
"Offline maps, search, and routing",
"Turn-by-turn guidance runtime",
"Regional data compilation",
"Voice and traffic customization",
"GPS health and dead reckoning hooks",
"Signed data and software updates"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "react-native-map",
"title": "Bridge one map feature across Android and iOS",
"href": "/quickstart/react-native-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "react-native-map-starter",
"title": "React Native bridge-contract starter",
"href": "/starter-kits/react-native-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 1,
"journeys": 1
},
"primaryHref": "/quickstart/react-native-map",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=offline-automotive&platform=react-native",
"apiPath": "/api/capability-matrix?product=offline-automotive&platform=react-native",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Offline & Automotive · Flutter
- Identity: `capability-decision:offline-automotive--flutter`
- Canonical: https://developer.mappls.com/platforms/matrix?product=offline-automotive&platform=flutter
- State model: stateful
```json
{
"id": "offline-automotive--flutter",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "flutter",
"name": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"capabilities": [
"Offline maps, search, and routing",
"Turn-by-turn guidance runtime",
"Regional data compilation",
"Voice and traffic customization",
"GPS health and dead reckoning hooks",
"Signed data and software updates"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "flutter-map",
"title": "Build a native-backed Flutter place picker",
"href": "/quickstart/flutter-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "flutter-map-starter",
"title": "Flutter place-selection starter",
"href": "/starter-kits/flutter-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"evidenceCounts": {
"sourceGuides": 1,
"sdks": 1,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 1,
"journeys": 1
},
"primaryHref": "/sdks/flutter-mapmyindia-gl",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=offline-automotive&platform=flutter",
"apiPath": "/api/capability-matrix?product=offline-automotive&platform=flutter",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Offline & Automotive · Cordova
- Identity: `capability-decision:offline-automotive--cordova`
- Canonical: https://developer.mappls.com/platforms/matrix?product=offline-automotive&platform=cordova
- State model: stateful
```json
{
"id": "offline-automotive--cordova",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "cordova",
"name": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"capabilities": [
"Offline maps, search, and routing",
"Turn-by-turn guidance runtime",
"Regional data compilation",
"Voice and traffic customization",
"GPS health and dead reckoning hooks",
"Signed data and software updates"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance",
"title": "Stabilize a Cordova map before migration",
"href": "/quickstart/cordova-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance-starter",
"title": "Cordova stabilization starter",
"href": "/starter-kits/cordova-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 1,
"journeys": 1
},
"primaryHref": "/quickstart/cordova-maintenance",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=offline-automotive&platform=cordova",
"apiPath": "/api/capability-matrix?product=offline-automotive&platform=cordova",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Offline & Automotive · Xamarin
- Identity: `capability-decision:offline-automotive--xamarin`
- Canonical: https://developer.mappls.com/platforms/matrix?product=offline-automotive&platform=xamarin
- State model: stateful
```json
{
"id": "offline-automotive--xamarin",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "xamarin",
"name": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"capabilities": [
"Offline maps, search, and routing",
"Turn-by-turn guidance runtime",
"Regional data compilation",
"Voice and traffic customization",
"GPS health and dead reckoning hooks",
"Signed data and software updates"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance",
"title": "Extract a Xamarin map integration for replacement",
"href": "/quickstart/xamarin-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance-starter",
"title": "Xamarin extraction starter",
"href": "/starter-kits/xamarin-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 1,
"journeys": 1
},
"primaryHref": "/quickstart/xamarin-maintenance",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=offline-automotive&platform=xamarin",
"apiPath": "/api/capability-matrix?product=offline-automotive&platform=xamarin",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Offline & Automotive · Linux
- Identity: `capability-decision:offline-automotive--linux`
- Canonical: https://developer.mappls.com/platforms/matrix?product=offline-automotive&platform=linux
- State model: stateful
```json
{
"id": "offline-automotive--linux",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "linux",
"name": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateful",
"integrationLane": "entitled-runtime",
"capabilities": [
"Offline maps, search, and routing",
"Turn-by-turn guidance runtime",
"Regional data compilation",
"Voice and traffic customization",
"GPS health and dead reckoning hooks",
"Signed data and software updates"
],
"exactEvidence": [
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "offline-package-update",
"title": "Design an interruption-safe offline map update",
"href": "/tutorials/offline-package-update"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "linux-map-client",
"title": "Operate a Mappls client on embedded Linux",
"href": "/tutorials/linux-map-client"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "linux-embedded",
"title": "Boot a supervised embedded map client",
"href": "/quickstart/linux-embedded"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "linux-embedded-starter",
"title": "Embedded Linux supervisor starter",
"href": "/starter-kits/linux-embedded-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 1,
"journeys": 1
},
"primaryHref": "/tutorials/offline-package-update",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=offline-automotive&platform=linux",
"apiPath": "/api/capability-matrix?product=offline-automotive&platform=linux",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Offline & Automotive · Automotive
- Identity: `capability-decision:offline-automotive--automotive`
- Canonical: https://developer.mappls.com/platforms/matrix?product=offline-automotive&platform=automotive
- State model: stateful
```json
{
"id": "offline-automotive--automotive",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "automotive",
"name": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "stateful",
"integrationLane": "entitled-runtime",
"capabilities": [
"Offline maps, search, and routing",
"Turn-by-turn guidance runtime",
"Regional data compilation",
"Voice and traffic customization",
"GPS health and dead reckoning hooks",
"Signed data and software updates"
],
"exactEvidence": [
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "offline-package-update",
"title": "Design an interruption-safe offline map update",
"href": "/tutorials/offline-package-update"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "linux-map-client",
"title": "Operate a Mappls client on embedded Linux",
"href": "/tutorials/linux-map-client"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation",
"title": "Simulate one recoverable navigation session",
"href": "/quickstart/automotive-navigation"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation-starter",
"title": "Automotive release-manifest starter",
"href": "/starter-kits/automotive-navigation-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 1,
"journeys": 1
},
"primaryHref": "/tutorials/offline-package-update",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=offline-automotive&platform=automotive",
"apiPath": "/api/capability-matrix?product=offline-automotive&platform=automotive",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Offline & Automotive · Widgets
- Identity: `capability-decision:offline-automotive--widgets`
- Canonical: https://developer.mappls.com/platforms/matrix?product=offline-automotive&platform=widgets
- State model: stateful
```json
{
"id": "offline-automotive--widgets",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "widgets",
"name": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "browser-or-embed",
"capabilities": [
"Offline maps, search, and routing",
"Turn-by-turn guidance runtime",
"Regional data compilation",
"Voice and traffic customization",
"GPS health and dead reckoning hooks",
"Signed data and software updates"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "widgets-place",
"title": "Embed a place journey with an owned fallback",
"href": "/quickstart/widgets-place"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "widgets-place-starter",
"title": "Widget journey host starter",
"href": "/starter-kits/widgets-place-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 1,
"journeys": 1
},
"primaryHref": "/quickstart/widgets-place",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=offline-automotive&platform=widgets",
"apiPath": "/api/capability-matrix?product=offline-automotive&platform=widgets",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Offline & Automotive · Deep links
- Identity: `capability-decision:offline-automotive--deep-links`
- Canonical: https://developer.mappls.com/platforms/matrix?product=offline-automotive&platform=deep-links
- State model: stateful
```json
{
"id": "offline-automotive--deep-links",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "deep-links",
"name": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "browser-or-embed",
"capabilities": [
"Offline maps, search, and routing",
"Turn-by-turn guidance runtime",
"Regional data compilation",
"Voice and traffic customization",
"GPS health and dead reckoning hooks",
"Signed data and software updates"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "deep-links",
"title": "Ship one zero-SDK Mappls hand-off",
"href": "/quickstart/deep-links"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "deep-links-starter",
"title": "Deep-link handoff starter",
"href": "/starter-kits/deep-links-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 1,
"journeys": 1
},
"primaryHref": "/quickstart/deep-links",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=offline-automotive&platform=deep-links",
"apiPath": "/api/capability-matrix?product=offline-automotive&platform=deep-links",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Offline & Automotive · MCP
- Identity: `capability-decision:offline-automotive--mcp`
- Canonical: https://developer.mappls.com/platforms/matrix?product=offline-automotive&platform=mcp
- State model: stateful
```json
{
"id": "offline-automotive--mcp",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "mcp",
"name": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "stateful",
"integrationLane": "ai-client",
"capabilities": [
"Offline maps, search, and routing",
"Turn-by-turn guidance runtime",
"Regional data compilation",
"Voice and traffic customization",
"GPS health and dead reckoning hooks",
"Signed data and software updates"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "mcp-agent",
"title": "Connect a read-only Mappls agent",
"href": "/quickstart/mcp-agent"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "mcp-agent-starter",
"title": "MCP client policy starter",
"href": "/starter-kits/mcp-agent-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 1,
"journeys": 1
},
"primaryHref": "/quickstart/mcp-agent",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=offline-automotive&platform=mcp",
"apiPath": "/api/capability-matrix?product=offline-automotive&platform=mcp",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · AI & Location · REST
- Identity: `capability-decision:ai-location--rest`
- Canonical: https://developer.mappls.com/platforms/matrix?product=ai-location&platform=rest
- State model: hybrid
```json
{
"id": "ai-location--rest",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "rest",
"name": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "hybrid",
"integrationLane": "trusted-service",
"capabilities": [
"Vision and imagery analysis",
"Location-aware retrieval and ranking",
"Natural-language map operations",
"Typed tools for AI agents",
"Spatial workflow orchestration",
"Evaluation and grounding patterns"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-angular-sample-websdk-rest",
"title": "Angular Sample for MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web",
"href": "/reference/mapmyindia-angular-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-mgis-apis",
"title": "Mappls mGIS APIs",
"href": "/reference/mapmyindia-mgis-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-purejs-sample-websdk-rest",
"title": "MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web in Pure JS",
"href": "/reference/mapmyindia-purejs-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-workmate-apis",
"title": "Mappls by MapmyIndia-Workmate-Apis",
"href": "/reference/mapmyindia-workmate-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ai-apis",
"title": "MAPPLS AI / ML APIs",
"href": "/reference/mappls-ai-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-rest-apis",
"title": "Mappls Intouch REST Apis",
"href": "/reference/mappls-intouch-rest-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-rest-apis",
"title": "Mappls Map APIs (REST) !",
"href": "/reference/mappls-rest-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "skydnn-aiapi-docs",
"title": "Skydnn AI APIs",
"href": "/reference/skydnn-aiapi-docs"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-blurbox-returns-the-image-in-which-objects-of-geometry-are-blurred-as-given-by-the-client",
"title": "Returns the image in which objects of geometry are blurred as given by the client.",
"href": "/api-reference/mappls-ai-ml-post-blurbox-returns-the-image-in-which-objects-of-geometry-are-blurred-as-given-by-the-client"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-brand-detection-returns-the-brands-bounding-box-array-for-the-inputs-images",
"title": "Returns the Brands bounding box array for the inputs Images",
"href": "/api-reference/mappls-ai-ml-post-brand-detection-returns-the-brands-bounding-box-array-for-the-inputs-images"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-faceblur-returns-the-array-of-features-which-contains-objects-of-geometry-of-the-uploaded-image",
"title": "Returns the array of features which contains objects of geometry of the uploaded image.",
"href": "/api-reference/mappls-ai-ml-post-faceblur-returns-the-array-of-features-which-contains-objects-of-geometry-of-the-uploaded-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-facedetection-returns-different-output-depending-upon-the-inputs-given",
"title": "Returns different output depending upon the inputs given.",
"href": "/api-reference/mappls-ai-ml-post-facedetection-returns-different-output-depending-upon-the-inputs-given"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-faceplot-returns-the-image-which-contains-objects-of-geometry-of-the-detected-face-plotted-on-it-with-the-bounding-box",
"title": "Returns the image which contains objects of geometry of the detected face plotted on it with the bounding box.",
"href": "/api-reference/mappls-ai-ml-post-faceplot-returns-the-image-which-contains-objects-of-geometry-of-the-detected-face-plotted-on-it-with-the-bounding-box"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-face-blur-returns-the-face-blured-images-of-the-uploaded-2d-image",
"title": "Returns the face blured images of the uploaded 2D image",
"href": "/api-reference/mappls-ai-ml-post-face-blur-returns-the-face-blured-images-of-the-uploaded-2d-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-face-detection-returns-the-bounding-box-array-for-the-inputs-image",
"title": "Returns the bounding box array for the inputs Image",
"href": "/api-reference/mappls-ai-ml-post-face-detection-returns-the-bounding-box-array-for-the-inputs-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-face-draw-returns-the-box-drawn-faces-on-the-uploaded-2d-image",
"title": "Returns the box drawn faces on the uploaded 2D image",
"href": "/api-reference/mappls-ai-ml-post-face-draw-returns-the-box-drawn-faces-on-the-uploaded-2d-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-face-blur-pano-returns-the-face-blured-images-of-the-uploaded-panorama-image",
"title": "Returns the face blured images of the uploaded panorama image",
"href": "/api-reference/mappls-ai-ml-post-face-blur-pano-returns-the-face-blured-images-of-the-uploaded-panorama-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-face-detection-pano-returns-the-bounding-box-array-for-the-inputs-panorama-images",
"title": "Returns the bounding box array for the inputs panorama Images",
"href": "/api-reference/mappls-ai-ml-post-face-detection-pano-returns-the-bounding-box-array-for-the-inputs-panorama-images"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-face-draw-pano-returns-the-box-drawn-faces-on-the-uploaded-panorama-image",
"title": "Returns the box drawn faces on the uploaded panorama image",
"href": "/api-reference/mappls-ai-ml-post-face-draw-pano-returns-the-box-drawn-faces-on-the-uploaded-panorama-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-license-plate-blur-returns-the-license-plate-blured-images-of-the-uploaded-2d-image",
"title": "Returns the License Plate blured images of the uploaded 2D image",
"href": "/api-reference/mappls-ai-ml-post-license-plate-blur-returns-the-license-plate-blured-images-of-the-uploaded-2d-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-license-plate-detection-returns-the-bounding-box-array-for-the-inputs-image",
"title": "Returns the bounding box array for the inputs Image",
"href": "/api-reference/mappls-ai-ml-post-license-plate-detection-returns-the-bounding-box-array-for-the-inputs-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-license-plate-draw-returns-the-box-drawn-license-plate-on-the-uploaded-2d-image",
"title": "Returns the box drawn License Plate on the uploaded 2D image",
"href": "/api-reference/mappls-ai-ml-post-license-plate-draw-returns-the-box-drawn-license-plate-on-the-uploaded-2d-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-license-plate-blur-pano-returns-the-license-plate-blured-images-of-the-uploaded-panorama-image",
"title": "Returns the License plate blured images of the uploaded panorama image",
"href": "/api-reference/mappls-ai-ml-post-license-plate-blur-pano-returns-the-license-plate-blured-images-of-the-uploaded-panorama-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-license-plate-detection-pano-returns-the-bounding-box-array-of-license-plate-in-panorama-images",
"title": "Returns the bounding box array of License plate in panorama Images",
"href": "/api-reference/mappls-ai-ml-post-license-plate-detection-pano-returns-the-bounding-box-array-of-license-plate-in-panorama-images"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-license-plate-draw-pano-returns-the-box-drawn-license-plate-in-the-uploaded-panorama-image",
"title": "Returns the box drawn License plate in the uploaded panorama image",
"href": "/api-reference/mappls-ai-ml-post-license-plate-draw-pano-returns-the-box-drawn-license-plate-in-the-uploaded-panorama-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "skydnn-ai-get-models-returns-the-details-of-all-the-models",
"title": "Returns the details of all the models",
"href": "/api-reference/skydnn-ai-get-models-returns-the-details-of-all-the-models"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "skydnn-ai-get-models-api-model-key-returns-the-details-of-provided-model",
"title": "Returns the details of provided model",
"href": "/api-reference/skydnn-ai-get-models-api-model-key-returns-the-details-of-provided-model"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "skydnn-ai-post-predict-returns-the-prediction-as-response-in-form-of-json",
"title": "Returns the prediction as response in form of JSON",
"href": "/api-reference/skydnn-ai-post-predict-returns-the-prediction-as-response-in-form-of-json"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "skydnn-ai-get-server-whoami-returns-the-current-models-in-port",
"title": "Returns the current models in port",
"href": "/api-reference/skydnn-ai-get-server-whoami-returns-the-current-models-in-port"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "rest-api",
"title": "Your first trusted Mappls request",
"href": "/quickstart/rest-api"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "rest-api-starter",
"title": "Trusted REST service starter",
"href": "/starter-kits/rest-api-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"evidenceCounts": {
"sourceGuides": 8,
"sdks": 0,
"apiOperations": 21,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 4,
"journeys": 2
},
"primaryHref": "/api-reference/mappls-ai-ml-post-blurbox-returns-the-image-in-which-objects-of-geometry-are-blurred-as-given-by-the-client",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=ai-location&platform=rest",
"apiPath": "/api/capability-matrix?product=ai-location&platform=rest",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · AI & Location · Web
- Identity: `capability-decision:ai-location--web`
- Canonical: https://developer.mappls.com/platforms/matrix?product=ai-location&platform=web
- State model: hybrid
```json
{
"id": "ai-location--web",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "web",
"name": "Web",
"headline": "Build expressive browser maps without surrendering performance or control."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"capabilities": [
"Vision and imagery analysis",
"Location-aware retrieval and ranking",
"Natural-language map operations",
"Typed tools for AI agents",
"Spatial workflow orchestration",
"Evaluation and grounding patterns"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-angular-sample-websdk-rest",
"title": "Angular Sample for MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web",
"href": "/reference/mapmyindia-angular-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-purejs-sample-websdk-rest",
"title": "MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web in Pure JS",
"href": "/reference/mapmyindia-purejs-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-insight-sdk",
"title": "Mappls Insight Embeddable Visualizations",
"href": "/reference/mappls-insight-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-maps",
"title": "Sign up for Mappls",
"href": "/reference/mappls-web-maps"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-maps-js",
"title": "Mappls Web Maps JS",
"href": "/reference/mappls-web-maps-js"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-plugins",
"title": "Mappls Web Plugins",
"href": "/reference/mappls-web-plugins"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-insight-sdk",
"title": "Mappls Insight Embeddable Visualizations",
"href": "/sdks/mappls-insight-sdk"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "web-map",
"title": "Render one accessible web map",
"href": "/quickstart/web-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "web-map-starter",
"title": "Accessible web map host starter",
"href": "/starter-kits/web-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"evidenceCounts": {
"sourceGuides": 6,
"sdks": 1,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 4,
"journeys": 2
},
"primaryHref": "/sdks/mappls-insight-sdk",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=ai-location&platform=web",
"apiPath": "/api/capability-matrix?product=ai-location&platform=web",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · AI & Location · Android
- Identity: `capability-decision:ai-location--android`
- Canonical: https://developer.mappls.com/platforms/matrix?product=ai-location&platform=android
- State model: hybrid
```json
{
"id": "ai-location--android",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "android",
"name": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Vision and imagery analysis",
"Location-aware retrieval and ranking",
"Natural-language map operations",
"Typed tools for AI agents",
"Spatial workflow orchestration",
"Evaluation and grounding patterns"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "android-native",
"title": "Create a lifecycle-safe Android map",
"href": "/quickstart/android-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "android-native-starter",
"title": "Android lifecycle adapter starter",
"href": "/starter-kits/android-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"evidenceCounts": {
"sourceGuides": 3,
"sdks": 3,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 4,
"journeys": 2
},
"primaryHref": "/sdks/mapmyindia-intouch-android-sdk",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=ai-location&platform=android",
"apiPath": "/api/capability-matrix?product=ai-location&platform=android",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · AI & Location · iOS
- Identity: `capability-decision:ai-location--ios`
- Canonical: https://developer.mappls.com/platforms/matrix?product=ai-location&platform=ios
- State model: hybrid
```json
{
"id": "ai-location--ios",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "ios",
"name": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Vision and imagery analysis",
"Location-aware retrieval and ranking",
"Natural-language map operations",
"Typed tools for AI agents",
"Spatial workflow orchestration",
"Evaluation and grounding patterns"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "ios-native",
"title": "Create a lifecycle-safe iOS map",
"href": "/quickstart/ios-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "ios-native-starter",
"title": "iOS view-ownership starter",
"href": "/starter-kits/ios-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"evidenceCounts": {
"sourceGuides": 33,
"sdks": 33,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 4,
"journeys": 2
},
"primaryHref": "/tutorials/ios-sdk-production-readiness",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=ai-location&platform=ios",
"apiPath": "/api/capability-matrix?product=ai-location&platform=ios",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · AI & Location · React Native
- Identity: `capability-decision:ai-location--react-native`
- Canonical: https://developer.mappls.com/platforms/matrix?product=ai-location&platform=react-native
- State model: hybrid
```json
{
"id": "ai-location--react-native",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "react-native",
"name": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Vision and imagery analysis",
"Location-aware retrieval and ranking",
"Natural-language map operations",
"Typed tools for AI agents",
"Spatial workflow orchestration",
"Evaluation and grounding patterns"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "react-native-map",
"title": "Bridge one map feature across Android and iOS",
"href": "/quickstart/react-native-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "react-native-map-starter",
"title": "React Native bridge-contract starter",
"href": "/starter-kits/react-native-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"evidenceCounts": {
"sourceGuides": 4,
"sdks": 3,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 4,
"journeys": 2
},
"primaryHref": "/sdks/mapmyindia-intouch-react-native-sdk",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=ai-location&platform=react-native",
"apiPath": "/api/capability-matrix?product=ai-location&platform=react-native",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · AI & Location · Flutter
- Identity: `capability-decision:ai-location--flutter`
- Canonical: https://developer.mappls.com/platforms/matrix?product=ai-location&platform=flutter
- State model: hybrid
```json
{
"id": "ai-location--flutter",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "flutter",
"name": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Vision and imagery analysis",
"Location-aware retrieval and ranking",
"Natural-language map operations",
"Typed tools for AI agents",
"Spatial workflow orchestration",
"Evaluation and grounding patterns"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "flutter-map",
"title": "Build a native-backed Flutter place picker",
"href": "/quickstart/flutter-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "flutter-map-starter",
"title": "Flutter place-selection starter",
"href": "/starter-kits/flutter-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"evidenceCounts": {
"sourceGuides": 1,
"sdks": 1,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 4,
"journeys": 2
},
"primaryHref": "/sdks/mappls-flutter-sdk",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=ai-location&platform=flutter",
"apiPath": "/api/capability-matrix?product=ai-location&platform=flutter",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · AI & Location · Cordova
- Identity: `capability-decision:ai-location--cordova`
- Canonical: https://developer.mappls.com/platforms/matrix?product=ai-location&platform=cordova
- State model: hybrid
```json
{
"id": "ai-location--cordova",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "cordova",
"name": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Vision and imagery analysis",
"Location-aware retrieval and ranking",
"Natural-language map operations",
"Typed tools for AI agents",
"Spatial workflow orchestration",
"Evaluation and grounding patterns"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance",
"title": "Stabilize a Cordova map before migration",
"href": "/quickstart/cordova-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance-starter",
"title": "Cordova stabilization starter",
"href": "/starter-kits/cordova-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 4,
"journeys": 2
},
"primaryHref": "/quickstart/cordova-maintenance",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=ai-location&platform=cordova",
"apiPath": "/api/capability-matrix?product=ai-location&platform=cordova",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · AI & Location · Xamarin
- Identity: `capability-decision:ai-location--xamarin`
- Canonical: https://developer.mappls.com/platforms/matrix?product=ai-location&platform=xamarin
- State model: hybrid
```json
{
"id": "ai-location--xamarin",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "xamarin",
"name": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Vision and imagery analysis",
"Location-aware retrieval and ranking",
"Natural-language map operations",
"Typed tools for AI agents",
"Spatial workflow orchestration",
"Evaluation and grounding patterns"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance",
"title": "Extract a Xamarin map integration for replacement",
"href": "/quickstart/xamarin-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance-starter",
"title": "Xamarin extraction starter",
"href": "/starter-kits/xamarin-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 4,
"journeys": 2
},
"primaryHref": "/quickstart/xamarin-maintenance",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=ai-location&platform=xamarin",
"apiPath": "/api/capability-matrix?product=ai-location&platform=xamarin",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · AI & Location · Linux
- Identity: `capability-decision:ai-location--linux`
- Canonical: https://developer.mappls.com/platforms/matrix?product=ai-location&platform=linux
- State model: hybrid
```json
{
"id": "ai-location--linux",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "linux",
"name": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "entitled-runtime",
"capabilities": [
"Vision and imagery analysis",
"Location-aware retrieval and ranking",
"Natural-language map operations",
"Typed tools for AI agents",
"Spatial workflow orchestration",
"Evaluation and grounding patterns"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "linux-embedded",
"title": "Boot a supervised embedded map client",
"href": "/quickstart/linux-embedded"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "linux-embedded-starter",
"title": "Embedded Linux supervisor starter",
"href": "/starter-kits/linux-embedded-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 4,
"journeys": 2
},
"primaryHref": "/quickstart/linux-embedded",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=ai-location&platform=linux",
"apiPath": "/api/capability-matrix?product=ai-location&platform=linux",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · AI & Location · Automotive
- Identity: `capability-decision:ai-location--automotive`
- Canonical: https://developer.mappls.com/platforms/matrix?product=ai-location&platform=automotive
- State model: hybrid
```json
{
"id": "ai-location--automotive",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "automotive",
"name": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "entitled-runtime",
"capabilities": [
"Vision and imagery analysis",
"Location-aware retrieval and ranking",
"Natural-language map operations",
"Typed tools for AI agents",
"Spatial workflow orchestration",
"Evaluation and grounding patterns"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation",
"title": "Simulate one recoverable navigation session",
"href": "/quickstart/automotive-navigation"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation-starter",
"title": "Automotive release-manifest starter",
"href": "/starter-kits/automotive-navigation-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 4,
"journeys": 2
},
"primaryHref": "/quickstart/automotive-navigation",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=ai-location&platform=automotive",
"apiPath": "/api/capability-matrix?product=ai-location&platform=automotive",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · AI & Location · Widgets
- Identity: `capability-decision:ai-location--widgets`
- Canonical: https://developer.mappls.com/platforms/matrix?product=ai-location&platform=widgets
- State model: hybrid
```json
{
"id": "ai-location--widgets",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "widgets",
"name": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"capabilities": [
"Vision and imagery analysis",
"Location-aware retrieval and ranking",
"Natural-language map operations",
"Typed tools for AI agents",
"Spatial workflow orchestration",
"Evaluation and grounding patterns"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "widgets-place",
"title": "Embed a place journey with an owned fallback",
"href": "/quickstart/widgets-place"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "widgets-place-starter",
"title": "Widget journey host starter",
"href": "/starter-kits/widgets-place-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"evidenceCounts": {
"sourceGuides": 1,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 4,
"journeys": 2
},
"primaryHref": "/quickstart/widgets-place",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=ai-location&platform=widgets",
"apiPath": "/api/capability-matrix?product=ai-location&platform=widgets",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · AI & Location · Deep links
- Identity: `capability-decision:ai-location--deep-links`
- Canonical: https://developer.mappls.com/platforms/matrix?product=ai-location&platform=deep-links
- State model: hybrid
```json
{
"id": "ai-location--deep-links",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "deep-links",
"name": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"capabilities": [
"Vision and imagery analysis",
"Location-aware retrieval and ranking",
"Natural-language map operations",
"Typed tools for AI agents",
"Spatial workflow orchestration",
"Evaluation and grounding patterns"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "deep-links",
"title": "Ship one zero-SDK Mappls hand-off",
"href": "/quickstart/deep-links"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "deep-links-starter",
"title": "Deep-link handoff starter",
"href": "/starter-kits/deep-links-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"evidenceCounts": {
"sourceGuides": 1,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 4,
"journeys": 2
},
"primaryHref": "/quickstart/deep-links",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=ai-location&platform=deep-links",
"apiPath": "/api/capability-matrix?product=ai-location&platform=deep-links",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · AI & Location · MCP
- Identity: `capability-decision:ai-location--mcp`
- Canonical: https://developer.mappls.com/platforms/matrix?product=ai-location&platform=mcp
- State model: hybrid
```json
{
"id": "ai-location--mcp",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "mcp",
"name": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "hybrid",
"integrationLane": "ai-client",
"capabilities": [
"Vision and imagery analysis",
"Location-aware retrieval and ranking",
"Natural-language map operations",
"Typed tools for AI agents",
"Spatial workflow orchestration",
"Evaluation and grounding patterns"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ai-apis",
"title": "MAPPLS AI / ML APIs",
"href": "/reference/mappls-ai-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "skydnn-aiapi-docs",
"title": "Skydnn AI APIs",
"href": "/reference/skydnn-aiapi-docs"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "mappls-mcp-agent",
"title": "Give an AI agent grounded Mappls tools",
"href": "/tutorials/mappls-mcp-agent"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "a2a-solution-coordination",
"title": "Coordinate a complete Mappls A2A journey",
"href": "/tutorials/a2a-solution-coordination"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "mcp-client-identity",
"title": "Provision and validate a remote MCP client",
"href": "/tutorials/mcp-client-identity"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "mcp-agent",
"title": "Connect a read-only Mappls agent",
"href": "/quickstart/mcp-agent"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "mcp-agent-starter",
"title": "MCP client policy starter",
"href": "/starter-kits/mcp-agent-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"evidenceCounts": {
"sourceGuides": 2,
"sdks": 0,
"apiOperations": 0,
"tutorials": 3,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 4,
"journeys": 2
},
"primaryHref": "/tutorials/mappls-mcp-agent",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=ai-location&platform=mcp",
"apiPath": "/api/capability-matrix?product=ai-location&platform=mcp",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Capture & Feedback · REST
- Identity: `capability-decision:capture-feedback--rest`
- Canonical: https://developer.mappls.com/platforms/matrix?product=capture-feedback&platform=rest
- State model: hybrid
```json
{
"id": "capture-feedback--rest",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "rest",
"name": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "trusted-service",
"capabilities": [
"Single-shot and subscribed location",
"Accuracy and timeout policies",
"Camera and field evidence",
"Map issue reporting",
"Reviewable update workflows",
"Battery-aware capture"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "rest-api",
"title": "Your first trusted Mappls request",
"href": "/quickstart/rest-api"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "rest-api-starter",
"title": "Trusted REST service starter",
"href": "/starter-kits/rest-api-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"evidenceCounts": {
"sourceGuides": 6,
"sdks": 0,
"apiOperations": 0,
"tutorials": 2,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 3
},
"primaryHref": "/tutorials/reverse-geocode-check-in",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=capture-feedback&platform=rest",
"apiPath": "/api/capability-matrix?product=capture-feedback&platform=rest",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Capture & Feedback · Web
- Identity: `capability-decision:capture-feedback--web`
- Canonical: https://developer.mappls.com/platforms/matrix?product=capture-feedback&platform=web
- State model: hybrid
```json
{
"id": "capture-feedback--web",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "web",
"name": "Web",
"headline": "Build expressive browser maps without surrendering performance or control."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"capabilities": [
"Single-shot and subscribed location",
"Accuracy and timeout policies",
"Camera and field evidence",
"Map issue reporting",
"Reviewable update workflows",
"Battery-aware capture"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "web-map",
"title": "Render one accessible web map",
"href": "/quickstart/web-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "web-map-starter",
"title": "Accessible web map host starter",
"href": "/starter-kits/web-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"evidenceCounts": {
"sourceGuides": 6,
"sdks": 1,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 3
},
"primaryHref": "/sdks/mappls-insight-sdk",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=capture-feedback&platform=web",
"apiPath": "/api/capability-matrix?product=capture-feedback&platform=web",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Capture & Feedback · Android
- Identity: `capability-decision:capture-feedback--android`
- Canonical: https://developer.mappls.com/platforms/matrix?product=capture-feedback&platform=android
- State model: hybrid
```json
{
"id": "capture-feedback--android",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "android",
"name": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Single-shot and subscribed location",
"Accuracy and timeout policies",
"Camera and field evidence",
"Map issue reporting",
"Reviewable update workflows",
"Battery-aware capture"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/reference/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-compose-demo",
"title": "Mappls Vector Map Android SDK JetPack Compose",
"href": "/reference/mappls-android-compose-demo"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/reference/mappls-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/reference/mappls-camera-sdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-android-sdk",
"title": "Mappls Intouch Android SDK",
"href": "/reference/mappls-intouch-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-location-capture-android-sdk",
"title": "Mappls Location Capture SDK",
"href": "/reference/mappls-location-capture-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/sdks/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/sdks/mappls-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/sdks/mappls-camera-sdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-intouch-android-sdk",
"title": "Mappls Intouch Android SDK",
"href": "/sdks/mappls-intouch-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-location-capture-android-sdk",
"title": "Mappls Location Capture SDK",
"href": "/sdks/mappls-location-capture-android-sdk"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "workmate-proof-review",
"title": "Build proof review and rework for field jobs",
"href": "/tutorials/workmate-proof-review"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "android-native",
"title": "Create a lifecycle-safe Android map",
"href": "/quickstart/android-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "android-native-starter",
"title": "Android lifecycle adapter starter",
"href": "/starter-kits/android-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"evidenceCounts": {
"sourceGuides": 6,
"sdks": 5,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 3
},
"primaryHref": "/tutorials/workmate-proof-review",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=capture-feedback&platform=android",
"apiPath": "/api/capability-matrix?product=capture-feedback&platform=android",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Capture & Feedback · iOS
- Identity: `capability-decision:capture-feedback--ios`
- Canonical: https://developer.mappls.com/platforms/matrix?product=capture-feedback&platform=ios
- State model: hybrid
```json
{
"id": "capture-feedback--ios",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "ios",
"name": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks."
},
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Single-shot and subscribed location",
"Accuracy and timeout policies",
"Camera and field evidence",
"Map issue reporting",
"Reviewable update workflows",
"Battery-aware capture"
],
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-ios",
"title": "Mapmyindia Maps VectorSDK IOS",
"href": "/reference/mapmyindia-maps-vectorsdk-ios"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution",
"title": "Mappls Annotation Extension for iOS",
"href": "/reference/mappls-annotation-extension-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution-base",
"title": "Mappls Annotation Extension for iOS",
"href": "/reference/mappls-annotation-extension-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-core-ios-distribution",
"title": "[MapplsAPICore]()",
"href": "/reference/mappls-api-core-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/reference/mappls-api-kit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution-base",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/reference/mappls-api-kit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-ios-distribution",
"title": "MapplsCamera SDK for iOS",
"href": "/reference/mappls-camera-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-ios",
"title": "MapplsCamera SDK for iOS",
"href": "/reference/mappls-camera-sdk-ios"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution",
"title": "MapplsDirectionUI for iOS",
"href": "/reference/mappls-direction-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution-base",
"title": "MapplsDirectionUI for iOS",
"href": "/reference/mappls-direction-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/reference/mappls-drivingrange-plugin-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution-base",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/reference/mappls-drivingrange-plugin-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution",
"title": "MapplsFeedbackKit for iOS",
"href": "/reference/mappls-feedback-kit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution-base",
"title": "MapplsFeedbackKit for iOS",
"href": "/reference/mappls-feedback-kit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/reference/mappls-feedback-uikit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution-base",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/reference/mappls-feedback-uikit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/reference/mappls-geoanalytics-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution-base",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/reference/mappls-geoanalytics-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/reference/mappls-geofence-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution-base",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/reference/mappls-geofence-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-ios-sdk",
"title": "[Mappls Intouch SDK]()",
"href": "/reference/mappls-intouch-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/reference/mappls-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-location-capture-ios-sdk",
"title": "Mappls Location Capture IOS SDK",
"href": "/reference/mappls-location-capture-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-location-capture-sdk-ios-distribution",
"title": "Mappls Location Capture SDK (iOS)",
"href": "/reference/mappls-location-capture-sdk-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-move-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/reference/mappls-nearby-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution-base",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/reference/mappls-nearby-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/reference/mappls-raster-catalogue-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution-base",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/reference/mappls-raster-catalogue-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-intouch-ios-sdk",
"title": "[Mappls Intouch SDK]()",
"href": "/sdks/mappls-intouch-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-move-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-core-ios-distribution",
"title": "[MapplsAPICore]()",
"href": "/sdks/mappls-api-core-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/sdks/mappls-api-kit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution-base",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/sdks/mappls-api-kit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-ios",
"title": "Mapmyindia Maps VectorSDK IOS",
"href": "/sdks/mapmyindia-maps-vectorsdk-ios"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution",
"title": "Mappls Annotation Extension for iOS",
"href": "/sdks/mappls-annotation-extension-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution-base",
"title": "Mappls Annotation Extension for iOS",
"href": "/sdks/mappls-annotation-extension-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/sdks/mappls-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-location-capture-ios-sdk",
"title": "Mappls Location Capture IOS SDK",
"href": "/sdks/mappls-location-capture-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-location-capture-sdk-ios-distribution",
"title": "Mappls Location Capture SDK (iOS)",
"href": "/sdks/mappls-location-capture-sdk-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/sdks/mappls-nearby-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution-base",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/sdks/mappls-nearby-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-ios-distribution",
"title": "MapplsCamera SDK for iOS",
"href": "/sdks/mappls-camera-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-ios",
"title": "MapplsCamera SDK for iOS",
"href": "/sdks/mappls-camera-sdk-ios"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution",
"title": "MapplsDirectionUI for iOS",
"href": "/sdks/mappls-direction-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution-base",
"title": "MapplsDirectionUI for iOS",
"href": "/sdks/mappls-direction-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/sdks/mappls-drivingrange-plugin-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution-base",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/sdks/mappls-drivingrange-plugin-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution",
"title": "MapplsFeedbackKit for iOS",
"href": "/sdks/mappls-feedback-kit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution-base",
"title": "MapplsFeedbackKit for iOS",
"href": "/sdks/mappls-feedback-kit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/sdks/mappls-feedback-uikit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution-base",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/sdks/mappls-feedback-uikit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/sdks/mappls-geoanalytics-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution-base",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/sdks/mappls-geoanalytics-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/sdks/mappls-geofence-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution-base",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/sdks/mappls-geofence-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/sdks/mappls-raster-catalogue-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution-base",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/sdks/mappls-raster-catalogue-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "ios-sdk-production-readiness",
"title": "Qualify an iOS Mappls release",
"href": "/tutorials/ios-sdk-production-readiness"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "ios-native",
"title": "Create a lifecycle-safe iOS map",
"href": "/quickstart/ios-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "ios-native-starter",
"title": "iOS view-ownership starter",
"href": "/starter-kits/ios-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"evidenceCounts": {
"sourceGuides": 35,
"sdks": 35,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 3
},
"primaryHref": "/tutorials/ios-sdk-production-readiness",
"releaseBoundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval.",
"websitePath": "/platforms/matrix?product=capture-feedback&platform=ios",
"apiPath": "/api/capability-matrix?product=capture-feedback&platform=ios",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Capture & Feedback · React Native
- Identity: `capability-decision:capture-feedback--react-native`
- Canonical: https://developer.mappls.com/platforms/matrix?product=capture-feedback&platform=react-native
- State model: hybrid
```json
{
"id": "capture-feedback--react-native",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "react-native",
"name": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Single-shot and subscribed location",
"Accuracy and timeout policies",
"Camera and field evidence",
"Map issue reporting",
"Reviewable update workflows",
"Battery-aware capture"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "react-native-map",
"title": "Bridge one map feature across Android and iOS",
"href": "/quickstart/react-native-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "react-native-map-starter",
"title": "React Native bridge-contract starter",
"href": "/starter-kits/react-native-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"evidenceCounts": {
"sourceGuides": 3,
"sdks": 2,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 3
},
"primaryHref": "/tutorials/react-native-native-parity",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=capture-feedback&platform=react-native",
"apiPath": "/api/capability-matrix?product=capture-feedback&platform=react-native",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Capture & Feedback · Flutter
- Identity: `capability-decision:capture-feedback--flutter`
- Canonical: https://developer.mappls.com/platforms/matrix?product=capture-feedback&platform=flutter
- State model: hybrid
```json
{
"id": "capture-feedback--flutter",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "flutter",
"name": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Single-shot and subscribed location",
"Accuracy and timeout policies",
"Camera and field evidence",
"Map issue reporting",
"Reviewable update workflows",
"Battery-aware capture"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "flutter-map",
"title": "Build a native-backed Flutter place picker",
"href": "/quickstart/flutter-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "flutter-map-starter",
"title": "Flutter place-selection starter",
"href": "/starter-kits/flutter-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"evidenceCounts": {
"sourceGuides": 2,
"sdks": 2,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 3
},
"primaryHref": "/tutorials/flutter-production-lifecycle",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=capture-feedback&platform=flutter",
"apiPath": "/api/capability-matrix?product=capture-feedback&platform=flutter",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Capture & Feedback · Cordova
- Identity: `capability-decision:capture-feedback--cordova`
- Canonical: https://developer.mappls.com/platforms/matrix?product=capture-feedback&platform=cordova
- State model: hybrid
```json
{
"id": "capture-feedback--cordova",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "cordova",
"name": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Single-shot and subscribed location",
"Accuracy and timeout policies",
"Camera and field evidence",
"Map issue reporting",
"Reviewable update workflows",
"Battery-aware capture"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance",
"title": "Stabilize a Cordova map before migration",
"href": "/quickstart/cordova-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance-starter",
"title": "Cordova stabilization starter",
"href": "/starter-kits/cordova-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 3
},
"primaryHref": "/quickstart/cordova-maintenance",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=capture-feedback&platform=cordova",
"apiPath": "/api/capability-matrix?product=capture-feedback&platform=cordova",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Capture & Feedback · Xamarin
- Identity: `capability-decision:capture-feedback--xamarin`
- Canonical: https://developer.mappls.com/platforms/matrix?product=capture-feedback&platform=xamarin
- State model: hybrid
```json
{
"id": "capture-feedback--xamarin",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "xamarin",
"name": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"capabilities": [
"Single-shot and subscribed location",
"Accuracy and timeout policies",
"Camera and field evidence",
"Map issue reporting",
"Reviewable update workflows",
"Battery-aware capture"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance",
"title": "Extract a Xamarin map integration for replacement",
"href": "/quickstart/xamarin-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance-starter",
"title": "Xamarin extraction starter",
"href": "/starter-kits/xamarin-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 3
},
"primaryHref": "/quickstart/xamarin-maintenance",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=capture-feedback&platform=xamarin",
"apiPath": "/api/capability-matrix?product=capture-feedback&platform=xamarin",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Capture & Feedback · Linux
- Identity: `capability-decision:capture-feedback--linux`
- Canonical: https://developer.mappls.com/platforms/matrix?product=capture-feedback&platform=linux
- State model: hybrid
```json
{
"id": "capture-feedback--linux",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "linux",
"name": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "entitled-runtime",
"capabilities": [
"Single-shot and subscribed location",
"Accuracy and timeout policies",
"Camera and field evidence",
"Map issue reporting",
"Reviewable update workflows",
"Battery-aware capture"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "linux-embedded",
"title": "Boot a supervised embedded map client",
"href": "/quickstart/linux-embedded"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "linux-embedded-starter",
"title": "Embedded Linux supervisor starter",
"href": "/starter-kits/linux-embedded-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 3
},
"primaryHref": "/quickstart/linux-embedded",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=capture-feedback&platform=linux",
"apiPath": "/api/capability-matrix?product=capture-feedback&platform=linux",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Capture & Feedback · Automotive
- Identity: `capability-decision:capture-feedback--automotive`
- Canonical: https://developer.mappls.com/platforms/matrix?product=capture-feedback&platform=automotive
- State model: hybrid
```json
{
"id": "capture-feedback--automotive",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "automotive",
"name": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "entitled-runtime",
"capabilities": [
"Single-shot and subscribed location",
"Accuracy and timeout policies",
"Camera and field evidence",
"Map issue reporting",
"Reviewable update workflows",
"Battery-aware capture"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation",
"title": "Simulate one recoverable navigation session",
"href": "/quickstart/automotive-navigation"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation-starter",
"title": "Automotive release-manifest starter",
"href": "/starter-kits/automotive-navigation-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"evidenceCounts": {
"sourceGuides": 0,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 3
},
"primaryHref": "/quickstart/automotive-navigation",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=capture-feedback&platform=automotive",
"apiPath": "/api/capability-matrix?product=capture-feedback&platform=automotive",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Capture & Feedback · Widgets
- Identity: `capability-decision:capture-feedback--widgets`
- Canonical: https://developer.mappls.com/platforms/matrix?product=capture-feedback&platform=widgets
- State model: hybrid
```json
{
"id": "capture-feedback--widgets",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "widgets",
"name": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"capabilities": [
"Single-shot and subscribed location",
"Accuracy and timeout policies",
"Camera and field evidence",
"Map issue reporting",
"Reviewable update workflows",
"Battery-aware capture"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "widgets-place",
"title": "Embed a place journey with an owned fallback",
"href": "/quickstart/widgets-place"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "widgets-place-starter",
"title": "Widget journey host starter",
"href": "/starter-kits/widgets-place-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"evidenceCounts": {
"sourceGuides": 2,
"sdks": 0,
"apiOperations": 0,
"tutorials": 1,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 3
},
"primaryHref": "/tutorials/widget-host-production",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=capture-feedback&platform=widgets",
"apiPath": "/api/capability-matrix?product=capture-feedback&platform=widgets",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Capture & Feedback · Deep links
- Identity: `capability-decision:capture-feedback--deep-links`
- Canonical: https://developer.mappls.com/platforms/matrix?product=capture-feedback&platform=deep-links
- State model: hybrid
```json
{
"id": "capture-feedback--deep-links",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "deep-links",
"name": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"capabilities": [
"Single-shot and subscribed location",
"Accuracy and timeout policies",
"Camera and field evidence",
"Map issue reporting",
"Reviewable update workflows",
"Battery-aware capture"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "deep-links",
"title": "Ship one zero-SDK Mappls hand-off",
"href": "/quickstart/deep-links"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "deep-links-starter",
"title": "Deep-link handoff starter",
"href": "/starter-kits/deep-links-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"evidenceCounts": {
"sourceGuides": 2,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 3
},
"primaryHref": "/quickstart/deep-links",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=capture-feedback&platform=deep-links",
"apiPath": "/api/capability-matrix?product=capture-feedback&platform=deep-links",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-decision · Capture & Feedback · MCP
- Identity: `capability-decision:capture-feedback--mcp`
- Canonical: https://developer.mappls.com/platforms/matrix?product=capture-feedback&platform=mcp
- State model: hybrid
```json
{
"id": "capture-feedback--mcp",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "mcp",
"name": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control."
},
"availability": "not-listed",
"evidenceStatus": "not-listed",
"stateModel": "hybrid",
"integrationLane": "ai-client",
"capabilities": [
"Single-shot and subscribed location",
"Accuracy and timeout policies",
"Camera and field evidence",
"Map issue reporting",
"Reviewable update workflows",
"Battery-aware capture"
],
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "mcp-agent",
"title": "Connect a read-only Mappls agent",
"href": "/quickstart/mcp-agent"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "mcp-agent-starter",
"title": "MCP client policy starter",
"href": "/starter-kits/mcp-agent-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"evidenceCounts": {
"sourceGuides": 2,
"sdks": 0,
"apiOperations": 0,
"tutorials": 0,
"quickstarts": 1,
"starterKits": 1,
"sampleApps": 8,
"journeys": 3
},
"primaryHref": "/quickstart/mcp-agent",
"releaseBoundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability.",
"websitePath": "/platforms/matrix?product=capture-feedback&platform=mcp",
"apiPath": "/api/capability-matrix?product=capture-feedback&platform=mcp",
"providerCalls": 0,
"credentialsAccepted": false
}
```
## capability-qualification · Maps · REST qualification
- Identity: `capability-qualification:maps--rest--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=maps&platform=rest
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "maps--rest--qualification",
"matrixCellId": "maps--rest",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "rest",
"name": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack."
},
"status": "ready-to-qualify",
"stateModel": "stateless",
"integrationLane": "trusted-service",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-angular-sample-websdk-rest",
"title": "Angular Sample for MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web",
"href": "/reference/mapmyindia-angular-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/reference/mapmyindia-interactive-map-js-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-mgis-apis",
"title": "Mappls mGIS APIs",
"href": "/reference/mapmyindia-mgis-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-purejs-sample-websdk-rest",
"title": "MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web in Pure JS",
"href": "/reference/mapmyindia-purejs-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-rest-api",
"title": "Mapmyindia REST API",
"href": "/reference/mapmyindia-rest-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-workmate-apis",
"title": "Mappls by MapmyIndia-Workmate-Apis",
"href": "/reference/mapmyindia-workmate-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ai-apis",
"title": "MAPPLS AI / ML APIs",
"href": "/reference/mappls-ai-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-rest-apis",
"title": "Mappls Map APIs (REST) !",
"href": "/reference/mappls-rest-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "skydnn-aiapi-docs",
"title": "Skydnn AI APIs",
"href": "/reference/skydnn-aiapi-docs"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/sdks/mapmyindia-interactive-map-js-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-woodpecker-address-standardization-api",
"title": "Address Standardization API",
"href": "/api-reference/core-location-get-api-places-woodpecker-address-standardization-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-search-json-autosuggest-api",
"title": "AutoSuggest API",
"href": "/api-reference/core-location-get-api-places-search-json-autosuggest-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-distance-matrix-api",
"title": "Distance Matrix API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-distance-matrix-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-distance-matrix-predictive-driving-coordinates-distance-matrix-predictive-eta-api",
"title": "Distance Matrix Predictive ETA API",
"href": "/api-reference/core-location-get-rest-key-distance-matrix-predictive-driving-coordinates-distance-matrix-predictive-eta-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-elevation-elevation-api",
"title": "Elevation API",
"href": "/api-reference/core-location-get-rest-key-elevation-elevation-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-geocode-geocode-api",
"title": "Geocode API",
"href": "/api-reference/core-location-get-api-places-geocode-geocode-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-nearby-json-nearby-api",
"title": "Nearby API",
"href": "/api-reference/core-location-get-api-places-nearby-json-nearby-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-api-places-along-route-poi-along-the-route-api",
"title": "POI Along the Route API",
"href": "/api-reference/core-location-post-api-places-along-route-poi-along-the-route-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-apis-o2o-entity-eloc-place-detail-api",
"title": "Place Detail API",
"href": "/api-reference/core-location-get-apis-o2o-entity-eloc-place-detail-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-rev-geocode-reverse-geocode-api",
"title": "Reverse Geocode API",
"href": "/api-reference/core-location-get-rest-key-rev-geocode-reverse-geocode-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-route-optimization-api",
"title": "Route Optimization API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-route-optimization-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-routing-api",
"title": "Routing API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-routing-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-biking-geopositions-routing-api-with-biking-profile",
"title": "Routing API with biking profile",
"href": "/api-reference/core-location-get-rest-key-resources-biking-geopositions-routing-api-with-biking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-driving-geopositions-routing-api-with-driving-profile",
"title": "Routing API with driving profile",
"href": "/api-reference/core-location-get-rest-key-resources-driving-geopositions-routing-api-with-driving-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-trucking-geopositions-routing-api-with-trucking-profile",
"title": "Routing API with trucking profile",
"href": "/api-reference/core-location-get-rest-key-resources-trucking-geopositions-routing-api-with-trucking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-walking-geopositions-routing-api-with-walking-profile",
"title": "Routing API with walking profile",
"href": "/api-reference/core-location-get-rest-key-resources-walking-geopositions-routing-api-with-walking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-rest-key-snaptoroad-snap-to-road-api",
"title": "Snap to Road API",
"href": "/api-reference/core-location-post-rest-key-snaptoroad-snap-to-road-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-still-image-still-map-image-api",
"title": "Still Map Image API",
"href": "/api-reference/core-location-get-rest-key-still-image-still-map-image-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-textsearch-json-text-search-api",
"title": "Text Search API",
"href": "/api-reference/core-location-get-api-places-textsearch-json-text-search-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-security-oauth-token-token-generation-api",
"title": "Token Generation API",
"href": "/api-reference/core-location-post-security-oauth-token-token-generation-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-rest-key-still-image-polyline-traveled-route-image-api",
"title": "Traveled Route Image API",
"href": "/api-reference/core-location-post-rest-key-still-image-polyline-traveled-route-image-api"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "route-preview",
"title": "Build a route preview with alternatives",
"href": "/tutorials/route-preview"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "fleet-geofences",
"title": "Build fleet geofence operations",
"href": "/tutorials/fleet-geofences"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "static-map-receipt",
"title": "Generate static maps for receipts and notifications",
"href": "/tutorials/static-map-receipt"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "traffic-aware-commute",
"title": "Build a traffic-aware commute assistant",
"href": "/tutorials/traffic-aware-commute"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "rest-api",
"title": "Your first trusted Mappls request",
"href": "/quickstart/rest-api"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "rest-api-starter",
"title": "Trusted REST service starter",
"href": "/starter-kits/rest-api-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "core-rest-current-static-key",
"title": "Current core REST from a trusted server",
"runtime": "trusted-server",
"generation": "Current core REST",
"visibility": "secret",
"evidenceBoundary": "The normalized current-source operations do not themselves declare a security scheme; static-query behavior is separately implemented and tested in the trusted-server SDK. The issued account remains authoritative.",
"href": "/authentication#core-rest-current-static-key"
},
{
"slug": "core-rest-legacy-oauth",
"title": "Legacy core REST OAuth generation",
"runtime": "trusted-server",
"generation": "Legacy core REST",
"visibility": "secret",
"evidenceBoundary": "These normalized operations preserve public OAuth bearer evidence; they do not prove that an issued account, host, path, or product still uses this generation.",
"href": "/authentication#core-rest-legacy-oauth"
},
{
"slug": "mcp-gateway-and-provider",
"title": "MCP and AI-native clients",
"runtime": "mcp",
"generation": "MCP offline or live-read profile",
"visibility": "selection-required",
"evidenceBoundary": "MCP documentation tools need no provider credential. Live-read tools delegate to exact product contracts; the MCP server is not an authorization server and exposes no writes.",
"href": "/authentication#mcp-gateway-and-provider"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Approved host/path and API generation",
"Server workload and egress identity",
"Secret-provider key version—not its value",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=maps&platform=rest",
"apiPath": "/api/capability-qualifications?product=maps&platform=rest",
"downloadPath": "/api/capability-qualifications?product=maps&platform=rest&download=1",
"matrixPath": "/platforms/matrix?product=maps&platform=rest",
"productPath": "/docs/maps",
"platformPath": "/platforms/rest"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Maps · Web qualification
- Identity: `capability-qualification:maps--web--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=maps&platform=web
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "maps--web--qualification",
"matrixCellId": "maps--web",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "web",
"name": "Web",
"headline": "Build expressive browser maps without surrendering performance or control."
},
"status": "ready-to-qualify",
"stateModel": "stateless",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-angular-sample-websdk-rest",
"title": "Angular Sample for MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web",
"href": "/reference/mapmyindia-angular-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-geoanalytics-api-web",
"title": "MapmyIndia Geo-Analytics APIs !",
"href": "/reference/mapmyindia-geoanalytics-api-web"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/reference/mapmyindia-interactive-map-js-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-nearby-covid-places",
"title": "Mapmyindia Nearby Covid Places",
"href": "/reference/mapmyindia-nearby-covid-places"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-purejs-sample-websdk-rest",
"title": "MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web in Pure JS",
"href": "/reference/mapmyindia-purejs-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-vector-maps-js-web-sdk",
"title": "Mapmyindia Vector Maps JS Web SDK",
"href": "/reference/mapmyindia-vector-maps-js-web-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-maps",
"title": "Sign up for Mappls",
"href": "/reference/mappls-web-maps"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-maps-js",
"title": "Mappls Web Maps JS",
"href": "/reference/mappls-web-maps-js"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-plugins",
"title": "Mappls Web Plugins",
"href": "/reference/mappls-web-plugins"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-vector-maps-js-web-sdk",
"title": "Mapmyindia Vector Maps JS Web SDK",
"href": "/sdks/mapmyindia-vector-maps-js-web-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/sdks/mapmyindia-interactive-map-js-api"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "first-web-map",
"title": "Put your first Mappls map on the web",
"href": "/tutorials/first-web-map"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "route-preview",
"title": "Build a route preview with alternatives",
"href": "/tutorials/route-preview"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "nearby-discovery",
"title": "Create a nearby discovery experience",
"href": "/tutorials/nearby-discovery"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "fleet-geofences",
"title": "Build fleet geofence operations",
"href": "/tutorials/fleet-geofences"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "traffic-aware-commute",
"title": "Build a traffic-aware commute assistant",
"href": "/tutorials/traffic-aware-commute"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "geojson-operations-layer",
"title": "Render a governed GeoJSON operations layer",
"href": "/tutorials/geojson-operations-layer"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "web-map",
"title": "Render one accessible web map",
"href": "/quickstart/web-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "web-map-starter",
"title": "Accessible web map host starter",
"href": "/starter-kits/web-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "web-public-key",
"title": "Browser Web Maps and Places",
"runtime": "browser",
"generation": "Selected Web SDK generation",
"visibility": "public-restricted",
"evidenceBoundary": "Web SDK repository evidence identifies the client surface; the issued key configuration, supported script/package line, origins, and entitlements remain authoritative.",
"href": "/authentication#web-public-key"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=maps&platform=web",
"apiPath": "/api/capability-qualifications?product=maps&platform=web",
"downloadPath": "/api/capability-qualifications?product=maps&platform=web&download=1",
"matrixPath": "/platforms/matrix?product=maps&platform=web",
"productPath": "/docs/maps",
"platformPath": "/platforms/web"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Maps · Android qualification
- Identity: `capability-qualification:maps--android--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=maps&platform=android
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "maps--android--qualification",
"matrixCellId": "maps--android",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "android",
"name": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline."
},
"status": "ready-to-qualify",
"stateModel": "stateless",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/reference/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-compose-demo",
"title": "Mappls Vector Map Android SDK JetPack Compose",
"href": "/reference/mappls-android-compose-demo"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/reference/mappls-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/reference/mappls-camera-sdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/sdks/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/sdks/mappls-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/sdks/mappls-camera-sdk-android"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "android-map",
"title": "Add Mappls to an Android app",
"href": "/tutorials/android-map"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "android-native",
"title": "Create a lifecycle-safe Android map",
"href": "/quickstart/android-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "android-native-starter",
"title": "Android lifecycle adapter starter",
"href": "/starter-kits/android-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "android-public-key",
"title": "Android native application",
"runtime": "android",
"generation": "Selected Android SDK generation",
"visibility": "public-restricted",
"evidenceBoundary": "Android source repositories provide SDK/sample evidence, not a universal credential field, compatibility matrix, or entitlement promise.",
"href": "/authentication#android-public-key"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=maps&platform=android",
"apiPath": "/api/capability-qualifications?product=maps&platform=android",
"downloadPath": "/api/capability-qualifications?product=maps&platform=android&download=1",
"matrixPath": "/platforms/matrix?product=maps&platform=android",
"productPath": "/docs/maps",
"platformPath": "/platforms/android"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Maps · iOS qualification
- Identity: `capability-qualification:maps--ios--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=maps&platform=ios
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "maps--ios--qualification",
"matrixCellId": "maps--ios",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "ios",
"name": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks."
},
"status": "ready-to-qualify",
"stateModel": "stateless",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-ios-sdk",
"title": "MapmyIndia Intouch iOS SDK",
"href": "/reference/mapmyindia-intouch-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-ios",
"title": "Mapmyindia Maps VectorSDK IOS",
"href": "/reference/mapmyindia-maps-vectorsdk-ios"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution",
"title": "Mappls Annotation Extension for iOS",
"href": "/reference/mappls-annotation-extension-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution-base",
"title": "Mappls Annotation Extension for iOS",
"href": "/reference/mappls-annotation-extension-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/reference/mappls-api-kit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution-base",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/reference/mappls-api-kit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-ios-distribution",
"title": "MapplsCamera SDK for iOS",
"href": "/reference/mappls-camera-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-ios",
"title": "MapplsCamera SDK for iOS",
"href": "/reference/mappls-camera-sdk-ios"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution",
"title": "MapplsDirectionUI for iOS",
"href": "/reference/mappls-direction-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution-base",
"title": "MapplsDirectionUI for iOS",
"href": "/reference/mappls-direction-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/reference/mappls-drivingrange-plugin-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution-base",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/reference/mappls-drivingrange-plugin-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/reference/mappls-feedback-uikit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution-base",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/reference/mappls-feedback-uikit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/reference/mappls-geoanalytics-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution-base",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/reference/mappls-geoanalytics-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/reference/mappls-geofence-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution-base",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/reference/mappls-geofence-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/reference/mappls-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-move-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/reference/mappls-nearby-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution-base",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/reference/mappls-nearby-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/reference/mappls-raster-catalogue-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution-base",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/reference/mappls-raster-catalogue-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-move-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/sdks/mappls-api-kit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution-base",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/sdks/mappls-api-kit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-ios-sdk",
"title": "MapmyIndia Intouch iOS SDK",
"href": "/sdks/mapmyindia-intouch-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-ios",
"title": "Mapmyindia Maps VectorSDK IOS",
"href": "/sdks/mapmyindia-maps-vectorsdk-ios"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution",
"title": "Mappls Annotation Extension for iOS",
"href": "/sdks/mappls-annotation-extension-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution-base",
"title": "Mappls Annotation Extension for iOS",
"href": "/sdks/mappls-annotation-extension-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/sdks/mappls-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/sdks/mappls-nearby-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution-base",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/sdks/mappls-nearby-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-ios-distribution",
"title": "MapplsCamera SDK for iOS",
"href": "/sdks/mappls-camera-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-ios",
"title": "MapplsCamera SDK for iOS",
"href": "/sdks/mappls-camera-sdk-ios"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution",
"title": "MapplsDirectionUI for iOS",
"href": "/sdks/mappls-direction-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution-base",
"title": "MapplsDirectionUI for iOS",
"href": "/sdks/mappls-direction-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/sdks/mappls-drivingrange-plugin-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution-base",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/sdks/mappls-drivingrange-plugin-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/sdks/mappls-feedback-uikit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution-base",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/sdks/mappls-feedback-uikit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/sdks/mappls-geoanalytics-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution-base",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/sdks/mappls-geoanalytics-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/sdks/mappls-geofence-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution-base",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/sdks/mappls-geofence-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/sdks/mappls-raster-catalogue-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution-base",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/sdks/mappls-raster-catalogue-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "ios-map",
"title": "Add Mappls to an iOS app with Swift Package Manager",
"href": "/tutorials/ios-map"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "ios-sdk-production-readiness",
"title": "Qualify an iOS Mappls release",
"href": "/tutorials/ios-sdk-production-readiness"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "ios-native",
"title": "Create a lifecycle-safe iOS map",
"href": "/quickstart/ios-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "ios-native-starter",
"title": "iOS view-ownership starter",
"href": "/starter-kits/ios-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "ios-public-key",
"title": "iOS native application",
"runtime": "ios",
"generation": "Selected iOS SDK generation",
"visibility": "public-restricted",
"evidenceBoundary": "iOS source and distribution repositories identify candidate SDK lines; account credentials, checksums, target compatibility, and entitlement require confirmation.",
"href": "/authentication#ios-public-key"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=maps&platform=ios",
"apiPath": "/api/capability-qualifications?product=maps&platform=ios",
"downloadPath": "/api/capability-qualifications?product=maps&platform=ios&download=1",
"matrixPath": "/platforms/matrix?product=maps&platform=ios",
"productPath": "/docs/maps",
"platformPath": "/platforms/ios"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Maps · React Native qualification
- Identity: `capability-qualification:maps--react-native--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=maps&platform=react-native
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "maps--react-native--qualification",
"matrixCellId": "maps--react-native",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "react-native",
"name": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms."
},
"status": "ready-to-qualify",
"stateModel": "stateless",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-map-react-native-beta",
"title": "Mapmyindia Maps SDK for React Native beta",
"href": "/reference/mapmyindia-map-react-native-beta"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-restapi-react-native-beta",
"title": "Mapmyindia REST API SDK for React Native - beta",
"href": "/reference/mapmyindia-restapi-react-native-beta"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-react-native-sdk",
"title": "Mappls React Native SDK",
"href": "/reference/mappls-react-native-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-restapi-react-native-beta",
"title": "Mapmyindia REST API SDK for React Native - beta",
"href": "/sdks/mapmyindia-restapi-react-native-beta"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-react-native-sdk",
"title": "Mappls React Native SDK",
"href": "/sdks/mappls-react-native-sdk"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "react-native-map",
"title": "Build a cross-platform React Native map",
"href": "/tutorials/react-native-map"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "react-native-native-parity",
"title": "Qualify React Native native parity",
"href": "/tutorials/react-native-native-parity"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "react-native-map",
"title": "Bridge one map feature across Android and iOS",
"href": "/quickstart/react-native-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "react-native-map-starter",
"title": "React Native bridge-contract starter",
"href": "/starter-kits/react-native-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "cross-platform-native-keys",
"title": "React Native, Flutter, Cordova, or Xamarin",
"runtime": "cross-platform",
"generation": "Wrapper plus underlying native SDK generations",
"visibility": "selection-required",
"evidenceBoundary": "Wrapper repositories are integration evidence only. The exact wrapper/native credential methods, compatibility matrix, and supported architecture require confirmation.",
"href": "/authentication#cross-platform-native-keys"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=maps&platform=react-native",
"apiPath": "/api/capability-qualifications?product=maps&platform=react-native",
"downloadPath": "/api/capability-qualifications?product=maps&platform=react-native&download=1",
"matrixPath": "/platforms/matrix?product=maps&platform=react-native",
"productPath": "/docs/maps",
"platformPath": "/platforms/react-native"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Maps · Flutter qualification
- Identity: `capability-qualification:maps--flutter--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=maps&platform=flutter
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "maps--flutter--qualification",
"matrixCellId": "maps--flutter",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "flutter",
"name": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath."
},
"status": "ready-to-qualify",
"stateModel": "stateless",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "flutter-mapmyindia-gl",
"title": "Flutter MapmyIndia GL",
"href": "/reference/flutter-mapmyindia-gl"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-flutter-sdk",
"title": "Mappls Flutter SDK",
"href": "/reference/mappls-flutter-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "flutter-mapmyindia-gl",
"title": "Flutter MapmyIndia GL",
"href": "/sdks/flutter-mapmyindia-gl"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-flutter-sdk",
"title": "Mappls Flutter SDK",
"href": "/sdks/mappls-flutter-sdk"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "flutter-map",
"title": "Build a Flutter map and place picker",
"href": "/tutorials/flutter-map"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "flutter-production-lifecycle",
"title": "Production-harden a Flutter location feature",
"href": "/tutorials/flutter-production-lifecycle"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "flutter-map",
"title": "Build a native-backed Flutter place picker",
"href": "/quickstart/flutter-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "flutter-map-starter",
"title": "Flutter place-selection starter",
"href": "/starter-kits/flutter-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "cross-platform-native-keys",
"title": "React Native, Flutter, Cordova, or Xamarin",
"runtime": "cross-platform",
"generation": "Wrapper plus underlying native SDK generations",
"visibility": "selection-required",
"evidenceBoundary": "Wrapper repositories are integration evidence only. The exact wrapper/native credential methods, compatibility matrix, and supported architecture require confirmation.",
"href": "/authentication#cross-platform-native-keys"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=maps&platform=flutter",
"apiPath": "/api/capability-qualifications?product=maps&platform=flutter",
"downloadPath": "/api/capability-qualifications?product=maps&platform=flutter&download=1",
"matrixPath": "/platforms/matrix?product=maps&platform=flutter",
"productPath": "/docs/maps",
"platformPath": "/platforms/flutter"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Maps · Cordova qualification
- Identity: `capability-qualification:maps--cordova--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=maps&platform=cordova
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "maps--cordova--qualification",
"matrixCellId": "maps--cordova",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "cordova",
"name": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path."
},
"status": "ready-to-qualify",
"stateModel": "stateless",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-map-cordova-ionic-beta",
"title": "MapmyIndia Map SDK for Cordova/Ionic - Beta 1",
"href": "/reference/mapmyindia-map-cordova-ionic-beta"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "cordova-map",
"title": "Ship a Mappls map in Cordova and Ionic",
"href": "/tutorials/cordova-map"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "cordova-release-hardening",
"title": "Qualify a Cordova location release",
"href": "/tutorials/cordova-release-hardening"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance",
"title": "Stabilize a Cordova map before migration",
"href": "/quickstart/cordova-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance-starter",
"title": "Cordova stabilization starter",
"href": "/starter-kits/cordova-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "cross-platform-native-keys",
"title": "React Native, Flutter, Cordova, or Xamarin",
"runtime": "cross-platform",
"generation": "Wrapper plus underlying native SDK generations",
"visibility": "selection-required",
"evidenceBoundary": "Wrapper repositories are integration evidence only. The exact wrapper/native credential methods, compatibility matrix, and supported architecture require confirmation.",
"href": "/authentication#cross-platform-native-keys"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=maps&platform=cordova",
"apiPath": "/api/capability-qualifications?product=maps&platform=cordova",
"downloadPath": "/api/capability-qualifications?product=maps&platform=cordova&download=1",
"matrixPath": "/platforms/matrix?product=maps&platform=cordova",
"productPath": "/docs/maps",
"platformPath": "/platforms/cordova"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Maps · Xamarin qualification
- Identity: `capability-qualification:maps--xamarin--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=maps&platform=xamarin
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "maps--xamarin--qualification",
"matrixCellId": "maps--xamarin",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "xamarin",
"name": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior."
},
"status": "ready-to-qualify",
"stateModel": "stateless",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "xamarin-map",
"title": "Integrate Mappls into a Xamarin application",
"href": "/tutorials/xamarin-map"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "xamarin-maintenance-migration",
"title": "Harden and migrate a Xamarin location feature",
"href": "/tutorials/xamarin-maintenance-migration"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance",
"title": "Extract a Xamarin map integration for replacement",
"href": "/quickstart/xamarin-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance-starter",
"title": "Xamarin extraction starter",
"href": "/starter-kits/xamarin-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "cross-platform-native-keys",
"title": "React Native, Flutter, Cordova, or Xamarin",
"runtime": "cross-platform",
"generation": "Wrapper plus underlying native SDK generations",
"visibility": "selection-required",
"evidenceBoundary": "Wrapper repositories are integration evidence only. The exact wrapper/native credential methods, compatibility matrix, and supported architecture require confirmation.",
"href": "/authentication#cross-platform-native-keys"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=maps&platform=xamarin",
"apiPath": "/api/capability-qualifications?product=maps&platform=xamarin",
"downloadPath": "/api/capability-qualifications?product=maps&platform=xamarin&download=1",
"matrixPath": "/platforms/matrix?product=maps&platform=xamarin",
"productPath": "/docs/maps",
"platformPath": "/platforms/xamarin"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Maps · Linux qualification
- Identity: `capability-qualification:maps--linux--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=maps&platform=linux
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "maps--linux--qualification",
"matrixCellId": "maps--linux",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "linux",
"name": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems."
},
"status": "not-listed",
"stateModel": "stateless",
"integrationLane": "entitled-runtime",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "linux-embedded",
"title": "Boot a supervised embedded map client",
"href": "/quickstart/linux-embedded"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "linux-embedded-starter",
"title": "Embedded Linux supervisor starter",
"href": "/starter-kits/linux-embedded-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Hardware/OS/runtime and protected distribution identity",
"License or entitlement reference—not its contents",
"Artifact checksum, update channel, and rollback owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=maps&platform=linux",
"apiPath": "/api/capability-qualifications?product=maps&platform=linux",
"downloadPath": "/api/capability-qualifications?product=maps&platform=linux&download=1",
"matrixPath": "/platforms/matrix?product=maps&platform=linux",
"productPath": "/docs/maps",
"platformPath": "/platforms/linux"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Maps · Automotive qualification
- Identity: `capability-qualification:maps--automotive--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=maps&platform=automotive
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "maps--automotive--qualification",
"matrixCellId": "maps--automotive",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "automotive",
"name": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen."
},
"status": "not-listed",
"stateModel": "stateless",
"integrationLane": "entitled-runtime",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation",
"title": "Simulate one recoverable navigation session",
"href": "/quickstart/automotive-navigation"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation-starter",
"title": "Automotive release-manifest starter",
"href": "/starter-kits/automotive-navigation-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Hardware/OS/runtime and protected distribution identity",
"License or entitlement reference—not its contents",
"Artifact checksum, update channel, and rollback owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=maps&platform=automotive",
"apiPath": "/api/capability-qualifications?product=maps&platform=automotive",
"downloadPath": "/api/capability-qualifications?product=maps&platform=automotive&download=1",
"matrixPath": "/platforms/matrix?product=maps&platform=automotive",
"productPath": "/docs/maps",
"platformPath": "/platforms/automotive"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Maps · Widgets qualification
- Identity: `capability-qualification:maps--widgets--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=maps&platform=widgets
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "maps--widgets--qualification",
"matrixCellId": "maps--widgets",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "widgets",
"name": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate."
},
"status": "not-listed",
"stateModel": "stateless",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "widgets-place",
"title": "Embed a place journey with an owned fallback",
"href": "/quickstart/widgets-place"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "widgets-place-starter",
"title": "Widget journey host starter",
"href": "/starter-kits/widgets-place-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=maps&platform=widgets",
"apiPath": "/api/capability-qualifications?product=maps&platform=widgets",
"downloadPath": "/api/capability-qualifications?product=maps&platform=widgets&download=1",
"matrixPath": "/platforms/matrix?product=maps&platform=widgets",
"productPath": "/docs/maps",
"platformPath": "/platforms/widgets"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Maps · Deep links qualification
- Identity: `capability-qualification:maps--deep-links--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=maps&platform=deep-links
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "maps--deep-links--qualification",
"matrixCellId": "maps--deep-links",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "deep-links",
"name": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement."
},
"status": "not-listed",
"stateModel": "stateless",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "deep-links",
"title": "Ship one zero-SDK Mappls hand-off",
"href": "/quickstart/deep-links"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "deep-links-starter",
"title": "Deep-link handoff starter",
"href": "/starter-kits/deep-links-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=maps&platform=deep-links",
"apiPath": "/api/capability-qualifications?product=maps&platform=deep-links",
"downloadPath": "/api/capability-qualifications?product=maps&platform=deep-links&download=1",
"matrixPath": "/platforms/matrix?product=maps&platform=deep-links",
"productPath": "/docs/maps",
"platformPath": "/platforms/deep-links"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Maps · MCP qualification
- Identity: `capability-qualification:maps--mcp--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=maps&platform=mcp
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "maps--mcp--qualification",
"matrixCellId": "maps--mcp",
"product": {
"slug": "maps",
"name": "Maps",
"summary": "Fast, expressive vector and raster maps across web, mobile, hybrid, and embedded apps.",
"category": "Core location",
"accent": "#7c5cff"
},
"platform": {
"slug": "mcp",
"name": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control."
},
"status": "not-listed",
"stateModel": "stateless",
"integrationLane": "ai-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "mcp-agent",
"title": "Connect a read-only Mappls agent",
"href": "/quickstart/mcp-agent"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "mcp-agent-starter",
"title": "MCP client policy starter",
"href": "/starter-kits/mcp-agent-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"MCP deployment and transport identity",
"OAuth resource, issuer, audience, client, and profile",
"Exact tool allowlist, human boundary, and durable-state owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=maps&platform=mcp",
"apiPath": "/api/capability-qualifications?product=maps&platform=mcp",
"downloadPath": "/api/capability-qualifications?product=maps&platform=mcp&download=1",
"matrixPath": "/platforms/matrix?product=maps&platform=mcp",
"productPath": "/docs/maps",
"platformPath": "/platforms/mcp"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Search & Places · REST qualification
- Identity: `capability-qualification:search-places--rest--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=search-places&platform=rest
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "search-places--rest--qualification",
"matrixCellId": "search-places--rest",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "rest",
"name": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack."
},
"status": "ready-to-qualify",
"stateModel": "stateless",
"integrationLane": "trusted-service",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-angular-sample-websdk-rest",
"title": "Angular Sample for MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web",
"href": "/reference/mapmyindia-angular-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/reference/mapmyindia-interactive-map-js-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-mgis-apis",
"title": "Mappls mGIS APIs",
"href": "/reference/mapmyindia-mgis-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-purejs-sample-websdk-rest",
"title": "MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web in Pure JS",
"href": "/reference/mapmyindia-purejs-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-rest-api",
"title": "Mapmyindia REST API",
"href": "/reference/mapmyindia-rest-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ai-apis",
"title": "MAPPLS AI / ML APIs",
"href": "/reference/mappls-ai-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-rest-apis",
"title": "Mappls Map APIs (REST) !",
"href": "/reference/mappls-rest-apis"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/sdks/mapmyindia-interactive-map-js-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-woodpecker-address-standardization-api",
"title": "Address Standardization API",
"href": "/api-reference/core-location-get-api-places-woodpecker-address-standardization-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-search-json-autosuggest-api",
"title": "AutoSuggest API",
"href": "/api-reference/core-location-get-api-places-search-json-autosuggest-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-distance-matrix-api",
"title": "Distance Matrix API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-distance-matrix-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-distance-matrix-predictive-driving-coordinates-distance-matrix-predictive-eta-api",
"title": "Distance Matrix Predictive ETA API",
"href": "/api-reference/core-location-get-rest-key-distance-matrix-predictive-driving-coordinates-distance-matrix-predictive-eta-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-elevation-elevation-api",
"title": "Elevation API",
"href": "/api-reference/core-location-get-rest-key-elevation-elevation-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-geocode-geocode-api",
"title": "Geocode API",
"href": "/api-reference/core-location-get-api-places-geocode-geocode-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-nearby-json-nearby-api",
"title": "Nearby API",
"href": "/api-reference/core-location-get-api-places-nearby-json-nearby-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-api-places-along-route-poi-along-the-route-api",
"title": "POI Along the Route API",
"href": "/api-reference/core-location-post-api-places-along-route-poi-along-the-route-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-apis-o2o-entity-eloc-place-detail-api",
"title": "Place Detail API",
"href": "/api-reference/core-location-get-apis-o2o-entity-eloc-place-detail-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-rev-geocode-reverse-geocode-api",
"title": "Reverse Geocode API",
"href": "/api-reference/core-location-get-rest-key-rev-geocode-reverse-geocode-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-route-optimization-api",
"title": "Route Optimization API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-route-optimization-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-routing-api",
"title": "Routing API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-routing-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-biking-geopositions-routing-api-with-biking-profile",
"title": "Routing API with biking profile",
"href": "/api-reference/core-location-get-rest-key-resources-biking-geopositions-routing-api-with-biking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-driving-geopositions-routing-api-with-driving-profile",
"title": "Routing API with driving profile",
"href": "/api-reference/core-location-get-rest-key-resources-driving-geopositions-routing-api-with-driving-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-trucking-geopositions-routing-api-with-trucking-profile",
"title": "Routing API with trucking profile",
"href": "/api-reference/core-location-get-rest-key-resources-trucking-geopositions-routing-api-with-trucking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-walking-geopositions-routing-api-with-walking-profile",
"title": "Routing API with walking profile",
"href": "/api-reference/core-location-get-rest-key-resources-walking-geopositions-routing-api-with-walking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-rest-key-snaptoroad-snap-to-road-api",
"title": "Snap to Road API",
"href": "/api-reference/core-location-post-rest-key-snaptoroad-snap-to-road-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-still-image-still-map-image-api",
"title": "Still Map Image API",
"href": "/api-reference/core-location-get-rest-key-still-image-still-map-image-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-textsearch-json-text-search-api",
"title": "Text Search API",
"href": "/api-reference/core-location-get-api-places-textsearch-json-text-search-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-security-oauth-token-token-generation-api",
"title": "Token Generation API",
"href": "/api-reference/core-location-post-security-oauth-token-token-generation-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-rest-key-still-image-polyline-traveled-route-image-api",
"title": "Traveled Route Image API",
"href": "/api-reference/core-location-post-rest-key-still-image-polyline-traveled-route-image-api"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "address-autocomplete",
"title": "Build address autocomplete that users trust",
"href": "/tutorials/address-autocomplete"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "oauth-server-integration",
"title": "Call Mappls safely from a trusted server",
"href": "/tutorials/oauth-server-integration"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "rest-geocode-service",
"title": "Build a server-side geocoding boundary",
"href": "/tutorials/rest-geocode-service"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "reverse-geocode-check-in",
"title": "Turn a device fix into a trustworthy check-in",
"href": "/tutorials/reverse-geocode-check-in"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "distance-matrix-dispatch",
"title": "Rank responders with a distance matrix",
"href": "/tutorials/distance-matrix-dispatch"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "rest-api",
"title": "Your first trusted Mappls request",
"href": "/quickstart/rest-api"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "rest-api-starter",
"title": "Trusted REST service starter",
"href": "/starter-kits/rest-api-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "core-rest-current-static-key",
"title": "Current core REST from a trusted server",
"runtime": "trusted-server",
"generation": "Current core REST",
"visibility": "secret",
"evidenceBoundary": "The normalized current-source operations do not themselves declare a security scheme; static-query behavior is separately implemented and tested in the trusted-server SDK. The issued account remains authoritative.",
"href": "/authentication#core-rest-current-static-key"
},
{
"slug": "core-rest-legacy-oauth",
"title": "Legacy core REST OAuth generation",
"runtime": "trusted-server",
"generation": "Legacy core REST",
"visibility": "secret",
"evidenceBoundary": "These normalized operations preserve public OAuth bearer evidence; they do not prove that an issued account, host, path, or product still uses this generation.",
"href": "/authentication#core-rest-legacy-oauth"
},
{
"slug": "mcp-gateway-and-provider",
"title": "MCP and AI-native clients",
"runtime": "mcp",
"generation": "MCP offline or live-read profile",
"visibility": "selection-required",
"evidenceBoundary": "MCP documentation tools need no provider credential. Live-read tools delegate to exact product contracts; the MCP server is not an authorization server and exposes no writes.",
"href": "/authentication#mcp-gateway-and-provider"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Approved host/path and API generation",
"Server workload and egress identity",
"Secret-provider key version—not its value",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=search-places&platform=rest",
"apiPath": "/api/capability-qualifications?product=search-places&platform=rest",
"downloadPath": "/api/capability-qualifications?product=search-places&platform=rest&download=1",
"matrixPath": "/platforms/matrix?product=search-places&platform=rest",
"productPath": "/docs/search-places",
"platformPath": "/platforms/rest"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Search & Places · Web qualification
- Identity: `capability-qualification:search-places--web--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=search-places&platform=web
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "search-places--web--qualification",
"matrixCellId": "search-places--web",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "web",
"name": "Web",
"headline": "Build expressive browser maps without surrendering performance or control."
},
"status": "ready-to-qualify",
"stateModel": "stateless",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-angular-sample-websdk-rest",
"title": "Angular Sample for MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web",
"href": "/reference/mapmyindia-angular-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/reference/mapmyindia-interactive-map-js-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-nearby-covid-places",
"title": "Mapmyindia Nearby Covid Places",
"href": "/reference/mapmyindia-nearby-covid-places"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-purejs-sample-websdk-rest",
"title": "MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web in Pure JS",
"href": "/reference/mapmyindia-purejs-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-vector-maps-js-web-sdk",
"title": "Mapmyindia Vector Maps JS Web SDK",
"href": "/reference/mapmyindia-vector-maps-js-web-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-maps",
"title": "Sign up for Mappls",
"href": "/reference/mappls-web-maps"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-maps-js",
"title": "Mappls Web Maps JS",
"href": "/reference/mappls-web-maps-js"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-plugins",
"title": "Mappls Web Plugins",
"href": "/reference/mappls-web-plugins"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-vector-maps-js-web-sdk",
"title": "Mapmyindia Vector Maps JS Web SDK",
"href": "/sdks/mapmyindia-vector-maps-js-web-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/sdks/mapmyindia-interactive-map-js-api"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "address-autocomplete",
"title": "Build address autocomplete that users trust",
"href": "/tutorials/address-autocomplete"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "nearby-discovery",
"title": "Create a nearby discovery experience",
"href": "/tutorials/nearby-discovery"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "web-widget-place-picker",
"title": "Embed a place picker widget",
"href": "/tutorials/web-widget-place-picker"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "web-map",
"title": "Render one accessible web map",
"href": "/quickstart/web-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "web-map-starter",
"title": "Accessible web map host starter",
"href": "/starter-kits/web-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "web-public-key",
"title": "Browser Web Maps and Places",
"runtime": "browser",
"generation": "Selected Web SDK generation",
"visibility": "public-restricted",
"evidenceBoundary": "Web SDK repository evidence identifies the client surface; the issued key configuration, supported script/package line, origins, and entitlements remain authoritative.",
"href": "/authentication#web-public-key"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=search-places&platform=web",
"apiPath": "/api/capability-qualifications?product=search-places&platform=web",
"downloadPath": "/api/capability-qualifications?product=search-places&platform=web&download=1",
"matrixPath": "/platforms/matrix?product=search-places&platform=web",
"productPath": "/docs/search-places",
"platformPath": "/platforms/web"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Search & Places · Android qualification
- Identity: `capability-qualification:search-places--android--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=search-places&platform=android
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "search-places--android--qualification",
"matrixCellId": "search-places--android",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "android",
"name": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline."
},
"status": "ready-to-qualify",
"stateModel": "stateless",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/reference/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-compose-demo",
"title": "Mappls Vector Map Android SDK JetPack Compose",
"href": "/reference/mappls-android-compose-demo"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/reference/mappls-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/reference/mappls-camera-sdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-location-capture-android-sdk",
"title": "Mappls Location Capture SDK",
"href": "/reference/mappls-location-capture-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/sdks/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/sdks/mappls-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/sdks/mappls-camera-sdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-location-capture-android-sdk",
"title": "Mappls Location Capture SDK",
"href": "/sdks/mappls-location-capture-android-sdk"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "android-native",
"title": "Create a lifecycle-safe Android map",
"href": "/quickstart/android-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "android-native-starter",
"title": "Android lifecycle adapter starter",
"href": "/starter-kits/android-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "android-public-key",
"title": "Android native application",
"runtime": "android",
"generation": "Selected Android SDK generation",
"visibility": "public-restricted",
"evidenceBoundary": "Android source repositories provide SDK/sample evidence, not a universal credential field, compatibility matrix, or entitlement promise.",
"href": "/authentication#android-public-key"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=search-places&platform=android",
"apiPath": "/api/capability-qualifications?product=search-places&platform=android",
"downloadPath": "/api/capability-qualifications?product=search-places&platform=android&download=1",
"matrixPath": "/platforms/matrix?product=search-places&platform=android",
"productPath": "/docs/search-places",
"platformPath": "/platforms/android"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Search & Places · iOS qualification
- Identity: `capability-qualification:search-places--ios--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=search-places&platform=ios
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "search-places--ios--qualification",
"matrixCellId": "search-places--ios",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "ios",
"name": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks."
},
"status": "ready-to-qualify",
"stateModel": "stateless",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-ios",
"title": "Mapmyindia Maps VectorSDK IOS",
"href": "/reference/mapmyindia-maps-vectorsdk-ios"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution",
"title": "Mappls Annotation Extension for iOS",
"href": "/reference/mappls-annotation-extension-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution-base",
"title": "Mappls Annotation Extension for iOS",
"href": "/reference/mappls-annotation-extension-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/reference/mappls-api-kit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution-base",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/reference/mappls-api-kit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-ios-distribution",
"title": "MapplsCamera SDK for iOS",
"href": "/reference/mappls-camera-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-ios",
"title": "MapplsCamera SDK for iOS",
"href": "/reference/mappls-camera-sdk-ios"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution",
"title": "MapplsDirectionUI for iOS",
"href": "/reference/mappls-direction-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution-base",
"title": "MapplsDirectionUI for iOS",
"href": "/reference/mappls-direction-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution",
"title": "MapplsFeedbackKit for iOS",
"href": "/reference/mappls-feedback-kit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution-base",
"title": "MapplsFeedbackKit for iOS",
"href": "/reference/mappls-feedback-kit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/reference/mappls-geoanalytics-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution-base",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/reference/mappls-geoanalytics-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/reference/mappls-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-move-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/reference/mappls-nearby-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution-base",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/reference/mappls-nearby-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-move-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/sdks/mappls-api-kit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution-base",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/sdks/mappls-api-kit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-ios",
"title": "Mapmyindia Maps VectorSDK IOS",
"href": "/sdks/mapmyindia-maps-vectorsdk-ios"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution",
"title": "Mappls Annotation Extension for iOS",
"href": "/sdks/mappls-annotation-extension-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution-base",
"title": "Mappls Annotation Extension for iOS",
"href": "/sdks/mappls-annotation-extension-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/sdks/mappls-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/sdks/mappls-nearby-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution-base",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/sdks/mappls-nearby-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-ios-distribution",
"title": "MapplsCamera SDK for iOS",
"href": "/sdks/mappls-camera-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-ios",
"title": "MapplsCamera SDK for iOS",
"href": "/sdks/mappls-camera-sdk-ios"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution",
"title": "MapplsDirectionUI for iOS",
"href": "/sdks/mappls-direction-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution-base",
"title": "MapplsDirectionUI for iOS",
"href": "/sdks/mappls-direction-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution",
"title": "MapplsFeedbackKit for iOS",
"href": "/sdks/mappls-feedback-kit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution-base",
"title": "MapplsFeedbackKit for iOS",
"href": "/sdks/mappls-feedback-kit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/sdks/mappls-geoanalytics-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution-base",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/sdks/mappls-geoanalytics-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "ios-sdk-production-readiness",
"title": "Qualify an iOS Mappls release",
"href": "/tutorials/ios-sdk-production-readiness"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "ios-native",
"title": "Create a lifecycle-safe iOS map",
"href": "/quickstart/ios-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "ios-native-starter",
"title": "iOS view-ownership starter",
"href": "/starter-kits/ios-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "ios-public-key",
"title": "iOS native application",
"runtime": "ios",
"generation": "Selected iOS SDK generation",
"visibility": "public-restricted",
"evidenceBoundary": "iOS source and distribution repositories identify candidate SDK lines; account credentials, checksums, target compatibility, and entitlement require confirmation.",
"href": "/authentication#ios-public-key"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=search-places&platform=ios",
"apiPath": "/api/capability-qualifications?product=search-places&platform=ios",
"downloadPath": "/api/capability-qualifications?product=search-places&platform=ios&download=1",
"matrixPath": "/platforms/matrix?product=search-places&platform=ios",
"productPath": "/docs/search-places",
"platformPath": "/platforms/ios"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Search & Places · React Native qualification
- Identity: `capability-qualification:search-places--react-native--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=search-places&platform=react-native
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "search-places--react-native--qualification",
"matrixCellId": "search-places--react-native",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "react-native",
"name": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms."
},
"status": "ready-to-qualify",
"stateModel": "stateless",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-map-react-native-beta",
"title": "Mapmyindia Maps SDK for React Native beta",
"href": "/reference/mapmyindia-map-react-native-beta"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-restapi-react-native-beta",
"title": "Mapmyindia REST API SDK for React Native - beta",
"href": "/reference/mapmyindia-restapi-react-native-beta"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-react-native-sdk",
"title": "Mappls React Native SDK",
"href": "/reference/mappls-react-native-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-restapi-react-native-beta",
"title": "Mapmyindia REST API SDK for React Native - beta",
"href": "/sdks/mapmyindia-restapi-react-native-beta"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-react-native-sdk",
"title": "Mappls React Native SDK",
"href": "/sdks/mappls-react-native-sdk"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "react-native-native-parity",
"title": "Qualify React Native native parity",
"href": "/tutorials/react-native-native-parity"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "react-native-map",
"title": "Bridge one map feature across Android and iOS",
"href": "/quickstart/react-native-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "react-native-map-starter",
"title": "React Native bridge-contract starter",
"href": "/starter-kits/react-native-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "cross-platform-native-keys",
"title": "React Native, Flutter, Cordova, or Xamarin",
"runtime": "cross-platform",
"generation": "Wrapper plus underlying native SDK generations",
"visibility": "selection-required",
"evidenceBoundary": "Wrapper repositories are integration evidence only. The exact wrapper/native credential methods, compatibility matrix, and supported architecture require confirmation.",
"href": "/authentication#cross-platform-native-keys"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=search-places&platform=react-native",
"apiPath": "/api/capability-qualifications?product=search-places&platform=react-native",
"downloadPath": "/api/capability-qualifications?product=search-places&platform=react-native&download=1",
"matrixPath": "/platforms/matrix?product=search-places&platform=react-native",
"productPath": "/docs/search-places",
"platformPath": "/platforms/react-native"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Search & Places · Flutter qualification
- Identity: `capability-qualification:search-places--flutter--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=search-places&platform=flutter
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "search-places--flutter--qualification",
"matrixCellId": "search-places--flutter",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "flutter",
"name": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath."
},
"status": "ready-to-qualify",
"stateModel": "stateless",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "flutter-mapmyindia-gl",
"title": "Flutter MapmyIndia GL",
"href": "/reference/flutter-mapmyindia-gl"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-flutter-sdk",
"title": "Mappls Flutter SDK",
"href": "/reference/mappls-flutter-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "flutter-mapmyindia-gl",
"title": "Flutter MapmyIndia GL",
"href": "/sdks/flutter-mapmyindia-gl"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-flutter-sdk",
"title": "Mappls Flutter SDK",
"href": "/sdks/mappls-flutter-sdk"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "flutter-map",
"title": "Build a Flutter map and place picker",
"href": "/tutorials/flutter-map"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "flutter-production-lifecycle",
"title": "Production-harden a Flutter location feature",
"href": "/tutorials/flutter-production-lifecycle"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "flutter-map",
"title": "Build a native-backed Flutter place picker",
"href": "/quickstart/flutter-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "flutter-map-starter",
"title": "Flutter place-selection starter",
"href": "/starter-kits/flutter-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "cross-platform-native-keys",
"title": "React Native, Flutter, Cordova, or Xamarin",
"runtime": "cross-platform",
"generation": "Wrapper plus underlying native SDK generations",
"visibility": "selection-required",
"evidenceBoundary": "Wrapper repositories are integration evidence only. The exact wrapper/native credential methods, compatibility matrix, and supported architecture require confirmation.",
"href": "/authentication#cross-platform-native-keys"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=search-places&platform=flutter",
"apiPath": "/api/capability-qualifications?product=search-places&platform=flutter",
"downloadPath": "/api/capability-qualifications?product=search-places&platform=flutter&download=1",
"matrixPath": "/platforms/matrix?product=search-places&platform=flutter",
"productPath": "/docs/search-places",
"platformPath": "/platforms/flutter"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Search & Places · Cordova qualification
- Identity: `capability-qualification:search-places--cordova--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=search-places&platform=cordova
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "search-places--cordova--qualification",
"matrixCellId": "search-places--cordova",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "cordova",
"name": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path."
},
"status": "not-listed",
"stateModel": "stateless",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance",
"title": "Stabilize a Cordova map before migration",
"href": "/quickstart/cordova-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance-starter",
"title": "Cordova stabilization starter",
"href": "/starter-kits/cordova-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=search-places&platform=cordova",
"apiPath": "/api/capability-qualifications?product=search-places&platform=cordova",
"downloadPath": "/api/capability-qualifications?product=search-places&platform=cordova&download=1",
"matrixPath": "/platforms/matrix?product=search-places&platform=cordova",
"productPath": "/docs/search-places",
"platformPath": "/platforms/cordova"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Search & Places · Xamarin qualification
- Identity: `capability-qualification:search-places--xamarin--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=search-places&platform=xamarin
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "search-places--xamarin--qualification",
"matrixCellId": "search-places--xamarin",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "xamarin",
"name": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior."
},
"status": "not-listed",
"stateModel": "stateless",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance",
"title": "Extract a Xamarin map integration for replacement",
"href": "/quickstart/xamarin-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance-starter",
"title": "Xamarin extraction starter",
"href": "/starter-kits/xamarin-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=search-places&platform=xamarin",
"apiPath": "/api/capability-qualifications?product=search-places&platform=xamarin",
"downloadPath": "/api/capability-qualifications?product=search-places&platform=xamarin&download=1",
"matrixPath": "/platforms/matrix?product=search-places&platform=xamarin",
"productPath": "/docs/search-places",
"platformPath": "/platforms/xamarin"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Search & Places · Linux qualification
- Identity: `capability-qualification:search-places--linux--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=search-places&platform=linux
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "search-places--linux--qualification",
"matrixCellId": "search-places--linux",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "linux",
"name": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems."
},
"status": "not-listed",
"stateModel": "stateless",
"integrationLane": "entitled-runtime",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "linux-embedded",
"title": "Boot a supervised embedded map client",
"href": "/quickstart/linux-embedded"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "linux-embedded-starter",
"title": "Embedded Linux supervisor starter",
"href": "/starter-kits/linux-embedded-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Hardware/OS/runtime and protected distribution identity",
"License or entitlement reference—not its contents",
"Artifact checksum, update channel, and rollback owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=search-places&platform=linux",
"apiPath": "/api/capability-qualifications?product=search-places&platform=linux",
"downloadPath": "/api/capability-qualifications?product=search-places&platform=linux&download=1",
"matrixPath": "/platforms/matrix?product=search-places&platform=linux",
"productPath": "/docs/search-places",
"platformPath": "/platforms/linux"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Search & Places · Automotive qualification
- Identity: `capability-qualification:search-places--automotive--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=search-places&platform=automotive
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "search-places--automotive--qualification",
"matrixCellId": "search-places--automotive",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "automotive",
"name": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen."
},
"status": "not-listed",
"stateModel": "stateless",
"integrationLane": "entitled-runtime",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation",
"title": "Simulate one recoverable navigation session",
"href": "/quickstart/automotive-navigation"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation-starter",
"title": "Automotive release-manifest starter",
"href": "/starter-kits/automotive-navigation-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Hardware/OS/runtime and protected distribution identity",
"License or entitlement reference—not its contents",
"Artifact checksum, update channel, and rollback owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=search-places&platform=automotive",
"apiPath": "/api/capability-qualifications?product=search-places&platform=automotive",
"downloadPath": "/api/capability-qualifications?product=search-places&platform=automotive&download=1",
"matrixPath": "/platforms/matrix?product=search-places&platform=automotive",
"productPath": "/docs/search-places",
"platformPath": "/platforms/automotive"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Search & Places · Widgets qualification
- Identity: `capability-qualification:search-places--widgets--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=search-places&platform=widgets
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "search-places--widgets--qualification",
"matrixCellId": "search-places--widgets",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "widgets",
"name": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate."
},
"status": "ready-to-qualify",
"stateModel": "stateless",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-app-widgets",
"title": "Mappls App Widgets",
"href": "/reference/mappls-app-widgets"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-plugins",
"title": "Mappls Web Plugins",
"href": "/reference/mappls-web-plugins"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "web-widget-place-picker",
"title": "Embed a place picker widget",
"href": "/tutorials/web-widget-place-picker"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "widget-host-production",
"title": "Operate widgets as untrusted lifecycle surfaces",
"href": "/tutorials/widget-host-production"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "widgets-place",
"title": "Embed a place journey with an owned fallback",
"href": "/quickstart/widgets-place"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "widgets-place-starter",
"title": "Widget journey host starter",
"href": "/starter-kits/widgets-place-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"No exact authentication candidate is cataloged for this pairing."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=search-places&platform=widgets",
"apiPath": "/api/capability-qualifications?product=search-places&platform=widgets",
"downloadPath": "/api/capability-qualifications?product=search-places&platform=widgets&download=1",
"matrixPath": "/platforms/matrix?product=search-places&platform=widgets",
"productPath": "/docs/search-places",
"platformPath": "/platforms/widgets"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Search & Places · Deep links qualification
- Identity: `capability-qualification:search-places--deep-links--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=search-places&platform=deep-links
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "search-places--deep-links--qualification",
"matrixCellId": "search-places--deep-links",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "deep-links",
"name": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement."
},
"status": "not-listed",
"stateModel": "stateless",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "deep-links",
"title": "Ship one zero-SDK Mappls hand-off",
"href": "/quickstart/deep-links"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "deep-links-starter",
"title": "Deep-link handoff starter",
"href": "/starter-kits/deep-links-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=search-places&platform=deep-links",
"apiPath": "/api/capability-qualifications?product=search-places&platform=deep-links",
"downloadPath": "/api/capability-qualifications?product=search-places&platform=deep-links&download=1",
"matrixPath": "/platforms/matrix?product=search-places&platform=deep-links",
"productPath": "/docs/search-places",
"platformPath": "/platforms/deep-links"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Search & Places · MCP qualification
- Identity: `capability-qualification:search-places--mcp--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=search-places&platform=mcp
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "search-places--mcp--qualification",
"matrixCellId": "search-places--mcp",
"product": {
"slug": "search-places",
"name": "Search & Places",
"summary": "Autosuggest, geocoding, nearby discovery, place details, and Mappls Pin addressing.",
"category": "Core location",
"accent": "#00a88f"
},
"platform": {
"slug": "mcp",
"name": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control."
},
"status": "not-listed",
"stateModel": "stateless",
"integrationLane": "ai-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "mcp-agent",
"title": "Connect a read-only Mappls agent",
"href": "/quickstart/mcp-agent"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "mcp-agent-starter",
"title": "MCP client policy starter",
"href": "/starter-kits/mcp-agent-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "consented-address-verification",
"title": "Consented address verification",
"href": "/journeys/consented-address-verification"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"MCP deployment and transport identity",
"OAuth resource, issuer, audience, client, and profile",
"Exact tool allowlist, human boundary, and durable-state owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=search-places&platform=mcp",
"apiPath": "/api/capability-qualifications?product=search-places&platform=mcp",
"downloadPath": "/api/capability-qualifications?product=search-places&platform=mcp&download=1",
"matrixPath": "/platforms/matrix?product=search-places&platform=mcp",
"productPath": "/docs/search-places",
"platformPath": "/platforms/mcp"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Routes & Navigation · REST qualification
- Identity: `capability-qualification:routes-navigation--rest--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=routes-navigation&platform=rest
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "routes-navigation--rest--qualification",
"matrixCellId": "routes-navigation--rest",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "rest",
"name": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack."
},
"status": "ready-to-qualify",
"stateModel": "hybrid",
"integrationLane": "trusted-service",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/reference/mapmyindia-interactive-map-js-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-mgis-apis",
"title": "Mappls mGIS APIs",
"href": "/reference/mapmyindia-mgis-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-purejs-sample-websdk-rest",
"title": "MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web in Pure JS",
"href": "/reference/mapmyindia-purejs-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-rest-api",
"title": "Mapmyindia REST API",
"href": "/reference/mapmyindia-rest-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-rest-apis",
"title": "Mappls Intouch REST Apis",
"href": "/reference/mappls-intouch-rest-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-rest-apis",
"title": "Mappls Map APIs (REST) !",
"href": "/reference/mappls-rest-apis"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/sdks/mapmyindia-interactive-map-js-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-woodpecker-address-standardization-api",
"title": "Address Standardization API",
"href": "/api-reference/core-location-get-api-places-woodpecker-address-standardization-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-search-json-autosuggest-api",
"title": "AutoSuggest API",
"href": "/api-reference/core-location-get-api-places-search-json-autosuggest-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-distance-matrix-api",
"title": "Distance Matrix API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-distance-matrix-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-distance-matrix-predictive-driving-coordinates-distance-matrix-predictive-eta-api",
"title": "Distance Matrix Predictive ETA API",
"href": "/api-reference/core-location-get-rest-key-distance-matrix-predictive-driving-coordinates-distance-matrix-predictive-eta-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-elevation-elevation-api",
"title": "Elevation API",
"href": "/api-reference/core-location-get-rest-key-elevation-elevation-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-geocode-geocode-api",
"title": "Geocode API",
"href": "/api-reference/core-location-get-api-places-geocode-geocode-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-nearby-json-nearby-api",
"title": "Nearby API",
"href": "/api-reference/core-location-get-api-places-nearby-json-nearby-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-api-places-along-route-poi-along-the-route-api",
"title": "POI Along the Route API",
"href": "/api-reference/core-location-post-api-places-along-route-poi-along-the-route-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-apis-o2o-entity-eloc-place-detail-api",
"title": "Place Detail API",
"href": "/api-reference/core-location-get-apis-o2o-entity-eloc-place-detail-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-rev-geocode-reverse-geocode-api",
"title": "Reverse Geocode API",
"href": "/api-reference/core-location-get-rest-key-rev-geocode-reverse-geocode-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-route-optimization-api",
"title": "Route Optimization API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-route-optimization-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-routing-api",
"title": "Routing API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-routing-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-biking-geopositions-routing-api-with-biking-profile",
"title": "Routing API with biking profile",
"href": "/api-reference/core-location-get-rest-key-resources-biking-geopositions-routing-api-with-biking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-driving-geopositions-routing-api-with-driving-profile",
"title": "Routing API with driving profile",
"href": "/api-reference/core-location-get-rest-key-resources-driving-geopositions-routing-api-with-driving-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-trucking-geopositions-routing-api-with-trucking-profile",
"title": "Routing API with trucking profile",
"href": "/api-reference/core-location-get-rest-key-resources-trucking-geopositions-routing-api-with-trucking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-walking-geopositions-routing-api-with-walking-profile",
"title": "Routing API with walking profile",
"href": "/api-reference/core-location-get-rest-key-resources-walking-geopositions-routing-api-with-walking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-rest-key-snaptoroad-snap-to-road-api",
"title": "Snap to Road API",
"href": "/api-reference/core-location-post-rest-key-snaptoroad-snap-to-road-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-still-image-still-map-image-api",
"title": "Still Map Image API",
"href": "/api-reference/core-location-get-rest-key-still-image-still-map-image-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-textsearch-json-text-search-api",
"title": "Text Search API",
"href": "/api-reference/core-location-get-api-places-textsearch-json-text-search-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-security-oauth-token-token-generation-api",
"title": "Token Generation API",
"href": "/api-reference/core-location-post-security-oauth-token-token-generation-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-rest-key-still-image-polyline-traveled-route-image-api",
"title": "Traveled Route Image API",
"href": "/api-reference/core-location-post-rest-key-still-image-polyline-traveled-route-image-api"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "route-preview",
"title": "Build a route preview with alternatives",
"href": "/tutorials/route-preview"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "delivery-eta",
"title": "Track a delivery with a trustworthy ETA",
"href": "/tutorials/delivery-eta"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "oauth-server-integration",
"title": "Call Mappls safely from a trusted server",
"href": "/tutorials/oauth-server-integration"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "distance-matrix-dispatch",
"title": "Rank responders with a distance matrix",
"href": "/tutorials/distance-matrix-dispatch"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "traffic-aware-commute",
"title": "Build a traffic-aware commute assistant",
"href": "/tutorials/traffic-aware-commute"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "intouch-trip-lifecycle",
"title": "Reconcile a complete InTouch trip lifecycle",
"href": "/tutorials/intouch-trip-lifecycle"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "rest-api",
"title": "Your first trusted Mappls request",
"href": "/quickstart/rest-api"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "rest-api-starter",
"title": "Trusted REST service starter",
"href": "/starter-kits/rest-api-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "core-rest-current-static-key",
"title": "Current core REST from a trusted server",
"runtime": "trusted-server",
"generation": "Current core REST",
"visibility": "secret",
"evidenceBoundary": "The normalized current-source operations do not themselves declare a security scheme; static-query behavior is separately implemented and tested in the trusted-server SDK. The issued account remains authoritative.",
"href": "/authentication#core-rest-current-static-key"
},
{
"slug": "core-rest-legacy-oauth",
"title": "Legacy core REST OAuth generation",
"runtime": "trusted-server",
"generation": "Legacy core REST",
"visibility": "secret",
"evidenceBoundary": "These normalized operations preserve public OAuth bearer evidence; they do not prove that an issued account, host, path, or product still uses this generation.",
"href": "/authentication#core-rest-legacy-oauth"
},
{
"slug": "mcp-gateway-and-provider",
"title": "MCP and AI-native clients",
"runtime": "mcp",
"generation": "MCP offline or live-read profile",
"visibility": "selection-required",
"evidenceBoundary": "MCP documentation tools need no provider credential. Live-read tools delegate to exact product contracts; the MCP server is not an authorization server and exposes no writes.",
"href": "/authentication#mcp-gateway-and-provider"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Approved host/path and API generation",
"Server workload and egress identity",
"Secret-provider key version—not its value",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=routes-navigation&platform=rest",
"apiPath": "/api/capability-qualifications?product=routes-navigation&platform=rest",
"downloadPath": "/api/capability-qualifications?product=routes-navigation&platform=rest&download=1",
"matrixPath": "/platforms/matrix?product=routes-navigation&platform=rest",
"productPath": "/docs/routes-navigation",
"platformPath": "/platforms/rest"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Routes & Navigation · Web qualification
- Identity: `capability-qualification:routes-navigation--web--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=routes-navigation&platform=web
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "routes-navigation--web--qualification",
"matrixCellId": "routes-navigation--web",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "web",
"name": "Web",
"headline": "Build expressive browser maps without surrendering performance or control."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "web-map",
"title": "Render one accessible web map",
"href": "/quickstart/web-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "web-map-starter",
"title": "Accessible web map host starter",
"href": "/starter-kits/web-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=routes-navigation&platform=web",
"apiPath": "/api/capability-qualifications?product=routes-navigation&platform=web",
"downloadPath": "/api/capability-qualifications?product=routes-navigation&platform=web&download=1",
"matrixPath": "/platforms/matrix?product=routes-navigation&platform=web",
"productPath": "/docs/routes-navigation",
"platformPath": "/platforms/web"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Routes & Navigation · Android qualification
- Identity: `capability-qualification:routes-navigation--android--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=routes-navigation&platform=android
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "routes-navigation--android--qualification",
"matrixCellId": "routes-navigation--android",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "android",
"name": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline."
},
"status": "ready-to-qualify",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/reference/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-compose-demo",
"title": "Mappls Vector Map Android SDK JetPack Compose",
"href": "/reference/mappls-android-compose-demo"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/reference/mappls-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/sdks/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/sdks/mappls-android-sdk"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "android-native",
"title": "Create a lifecycle-safe Android map",
"href": "/quickstart/android-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "android-native-starter",
"title": "Android lifecycle adapter starter",
"href": "/starter-kits/android-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "android-public-key",
"title": "Android native application",
"runtime": "android",
"generation": "Selected Android SDK generation",
"visibility": "public-restricted",
"evidenceBoundary": "Android source repositories provide SDK/sample evidence, not a universal credential field, compatibility matrix, or entitlement promise.",
"href": "/authentication#android-public-key"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=routes-navigation&platform=android",
"apiPath": "/api/capability-qualifications?product=routes-navigation&platform=android",
"downloadPath": "/api/capability-qualifications?product=routes-navigation&platform=android&download=1",
"matrixPath": "/platforms/matrix?product=routes-navigation&platform=android",
"productPath": "/docs/routes-navigation",
"platformPath": "/platforms/android"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Routes & Navigation · iOS qualification
- Identity: `capability-qualification:routes-navigation--ios--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=routes-navigation&platform=ios
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "routes-navigation--ios--qualification",
"matrixCellId": "routes-navigation--ios",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "ios",
"name": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks."
},
"status": "ready-to-qualify",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-ios",
"title": "Mapmyindia Maps VectorSDK IOS",
"href": "/reference/mapmyindia-maps-vectorsdk-ios"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-core-ios-distribution",
"title": "[MapplsAPICore]()",
"href": "/reference/mappls-api-core-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/reference/mappls-api-kit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution-base",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/reference/mappls-api-kit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution",
"title": "MapplsDirectionUI for iOS",
"href": "/reference/mappls-direction-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution-base",
"title": "MapplsDirectionUI for iOS",
"href": "/reference/mappls-direction-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/reference/mappls-drivingrange-plugin-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution-base",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/reference/mappls-drivingrange-plugin-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/reference/mappls-feedback-uikit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution-base",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/reference/mappls-feedback-uikit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/reference/mappls-geofence-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution-base",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/reference/mappls-geofence-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/reference/mappls-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-move-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-move-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-core-ios-distribution",
"title": "[MapplsAPICore]()",
"href": "/sdks/mappls-api-core-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/sdks/mappls-api-kit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution-base",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/sdks/mappls-api-kit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-ios",
"title": "Mapmyindia Maps VectorSDK IOS",
"href": "/sdks/mapmyindia-maps-vectorsdk-ios"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/sdks/mappls-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution",
"title": "MapplsDirectionUI for iOS",
"href": "/sdks/mappls-direction-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution-base",
"title": "MapplsDirectionUI for iOS",
"href": "/sdks/mappls-direction-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/sdks/mappls-drivingrange-plugin-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution-base",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/sdks/mappls-drivingrange-plugin-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/sdks/mappls-feedback-uikit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution-base",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/sdks/mappls-feedback-uikit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/sdks/mappls-geofence-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution-base",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/sdks/mappls-geofence-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "ios-sdk-production-readiness",
"title": "Qualify an iOS Mappls release",
"href": "/tutorials/ios-sdk-production-readiness"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "ios-direction-geofence-handoffs",
"title": "Build restart-safe iOS direction and geofence handoffs",
"href": "/tutorials/ios-direction-geofence-handoffs"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "ios-native",
"title": "Create a lifecycle-safe iOS map",
"href": "/quickstart/ios-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "ios-native-starter",
"title": "iOS view-ownership starter",
"href": "/starter-kits/ios-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "ios-public-key",
"title": "iOS native application",
"runtime": "ios",
"generation": "Selected iOS SDK generation",
"visibility": "public-restricted",
"evidenceBoundary": "iOS source and distribution repositories identify candidate SDK lines; account credentials, checksums, target compatibility, and entitlement require confirmation.",
"href": "/authentication#ios-public-key"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=routes-navigation&platform=ios",
"apiPath": "/api/capability-qualifications?product=routes-navigation&platform=ios",
"downloadPath": "/api/capability-qualifications?product=routes-navigation&platform=ios&download=1",
"matrixPath": "/platforms/matrix?product=routes-navigation&platform=ios",
"productPath": "/docs/routes-navigation",
"platformPath": "/platforms/ios"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Routes & Navigation · React Native qualification
- Identity: `capability-qualification:routes-navigation--react-native--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=routes-navigation&platform=react-native
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "routes-navigation--react-native--qualification",
"matrixCellId": "routes-navigation--react-native",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "react-native",
"name": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms."
},
"status": "ready-to-qualify",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-map-react-native-beta",
"title": "Mapmyindia Maps SDK for React Native beta",
"href": "/reference/mapmyindia-map-react-native-beta"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-restapi-react-native-beta",
"title": "Mapmyindia REST API SDK for React Native - beta",
"href": "/reference/mapmyindia-restapi-react-native-beta"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-react-native-sdk",
"title": "Mappls React Native SDK",
"href": "/reference/mappls-react-native-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-restapi-react-native-beta",
"title": "Mapmyindia REST API SDK for React Native - beta",
"href": "/sdks/mapmyindia-restapi-react-native-beta"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-react-native-sdk",
"title": "Mappls React Native SDK",
"href": "/sdks/mappls-react-native-sdk"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "react-native-native-parity",
"title": "Qualify React Native native parity",
"href": "/tutorials/react-native-native-parity"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "react-native-map",
"title": "Bridge one map feature across Android and iOS",
"href": "/quickstart/react-native-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "react-native-map-starter",
"title": "React Native bridge-contract starter",
"href": "/starter-kits/react-native-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "cross-platform-native-keys",
"title": "React Native, Flutter, Cordova, or Xamarin",
"runtime": "cross-platform",
"generation": "Wrapper plus underlying native SDK generations",
"visibility": "selection-required",
"evidenceBoundary": "Wrapper repositories are integration evidence only. The exact wrapper/native credential methods, compatibility matrix, and supported architecture require confirmation.",
"href": "/authentication#cross-platform-native-keys"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=routes-navigation&platform=react-native",
"apiPath": "/api/capability-qualifications?product=routes-navigation&platform=react-native",
"downloadPath": "/api/capability-qualifications?product=routes-navigation&platform=react-native&download=1",
"matrixPath": "/platforms/matrix?product=routes-navigation&platform=react-native",
"productPath": "/docs/routes-navigation",
"platformPath": "/platforms/react-native"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Routes & Navigation · Flutter qualification
- Identity: `capability-qualification:routes-navigation--flutter--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=routes-navigation&platform=flutter
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "routes-navigation--flutter--qualification",
"matrixCellId": "routes-navigation--flutter",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "flutter",
"name": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "flutter-map",
"title": "Build a native-backed Flutter place picker",
"href": "/quickstart/flutter-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "flutter-map-starter",
"title": "Flutter place-selection starter",
"href": "/starter-kits/flutter-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=routes-navigation&platform=flutter",
"apiPath": "/api/capability-qualifications?product=routes-navigation&platform=flutter",
"downloadPath": "/api/capability-qualifications?product=routes-navigation&platform=flutter&download=1",
"matrixPath": "/platforms/matrix?product=routes-navigation&platform=flutter",
"productPath": "/docs/routes-navigation",
"platformPath": "/platforms/flutter"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Routes & Navigation · Cordova qualification
- Identity: `capability-qualification:routes-navigation--cordova--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=routes-navigation&platform=cordova
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "routes-navigation--cordova--qualification",
"matrixCellId": "routes-navigation--cordova",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "cordova",
"name": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance",
"title": "Stabilize a Cordova map before migration",
"href": "/quickstart/cordova-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance-starter",
"title": "Cordova stabilization starter",
"href": "/starter-kits/cordova-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=routes-navigation&platform=cordova",
"apiPath": "/api/capability-qualifications?product=routes-navigation&platform=cordova",
"downloadPath": "/api/capability-qualifications?product=routes-navigation&platform=cordova&download=1",
"matrixPath": "/platforms/matrix?product=routes-navigation&platform=cordova",
"productPath": "/docs/routes-navigation",
"platformPath": "/platforms/cordova"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Routes & Navigation · Xamarin qualification
- Identity: `capability-qualification:routes-navigation--xamarin--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=routes-navigation&platform=xamarin
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "routes-navigation--xamarin--qualification",
"matrixCellId": "routes-navigation--xamarin",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "xamarin",
"name": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance",
"title": "Extract a Xamarin map integration for replacement",
"href": "/quickstart/xamarin-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance-starter",
"title": "Xamarin extraction starter",
"href": "/starter-kits/xamarin-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=routes-navigation&platform=xamarin",
"apiPath": "/api/capability-qualifications?product=routes-navigation&platform=xamarin",
"downloadPath": "/api/capability-qualifications?product=routes-navigation&platform=xamarin&download=1",
"matrixPath": "/platforms/matrix?product=routes-navigation&platform=xamarin",
"productPath": "/docs/routes-navigation",
"platformPath": "/platforms/xamarin"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Routes & Navigation · Linux qualification
- Identity: `capability-qualification:routes-navigation--linux--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=routes-navigation&platform=linux
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "routes-navigation--linux--qualification",
"matrixCellId": "routes-navigation--linux",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "linux",
"name": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems."
},
"status": "selection-required",
"stateModel": "hybrid",
"integrationLane": "entitled-runtime",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-selection-required",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "linux-embedded",
"title": "Boot a supervised embedded map client",
"href": "/quickstart/linux-embedded"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "linux-embedded-starter",
"title": "Embedded Linux supervisor starter",
"href": "/starter-kits/linux-embedded-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Hardware/OS/runtime and protected distribution identity",
"License or entitlement reference—not its contents",
"Artifact checksum, update channel, and rollback owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=routes-navigation&platform=linux",
"apiPath": "/api/capability-qualifications?product=routes-navigation&platform=linux",
"downloadPath": "/api/capability-qualifications?product=routes-navigation&platform=linux&download=1",
"matrixPath": "/platforms/matrix?product=routes-navigation&platform=linux",
"productPath": "/docs/routes-navigation",
"platformPath": "/platforms/linux"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Routes & Navigation · Automotive qualification
- Identity: `capability-qualification:routes-navigation--automotive--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=routes-navigation&platform=automotive
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "routes-navigation--automotive--qualification",
"matrixCellId": "routes-navigation--automotive",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "automotive",
"name": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen."
},
"status": "selection-required",
"stateModel": "hybrid",
"integrationLane": "entitled-runtime",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-selection-required",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation",
"title": "Simulate one recoverable navigation session",
"href": "/quickstart/automotive-navigation"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation-starter",
"title": "Automotive release-manifest starter",
"href": "/starter-kits/automotive-navigation-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Hardware/OS/runtime and protected distribution identity",
"License or entitlement reference—not its contents",
"Artifact checksum, update channel, and rollback owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=routes-navigation&platform=automotive",
"apiPath": "/api/capability-qualifications?product=routes-navigation&platform=automotive",
"downloadPath": "/api/capability-qualifications?product=routes-navigation&platform=automotive&download=1",
"matrixPath": "/platforms/matrix?product=routes-navigation&platform=automotive",
"productPath": "/docs/routes-navigation",
"platformPath": "/platforms/automotive"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Routes & Navigation · Widgets qualification
- Identity: `capability-qualification:routes-navigation--widgets--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=routes-navigation&platform=widgets
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "routes-navigation--widgets--qualification",
"matrixCellId": "routes-navigation--widgets",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "widgets",
"name": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "widgets-place",
"title": "Embed a place journey with an owned fallback",
"href": "/quickstart/widgets-place"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "widgets-place-starter",
"title": "Widget journey host starter",
"href": "/starter-kits/widgets-place-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=routes-navigation&platform=widgets",
"apiPath": "/api/capability-qualifications?product=routes-navigation&platform=widgets",
"downloadPath": "/api/capability-qualifications?product=routes-navigation&platform=widgets&download=1",
"matrixPath": "/platforms/matrix?product=routes-navigation&platform=widgets",
"productPath": "/docs/routes-navigation",
"platformPath": "/platforms/widgets"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Routes & Navigation · Deep links qualification
- Identity: `capability-qualification:routes-navigation--deep-links--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=routes-navigation&platform=deep-links
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "routes-navigation--deep-links--qualification",
"matrixCellId": "routes-navigation--deep-links",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "deep-links",
"name": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "deep-links",
"title": "Ship one zero-SDK Mappls hand-off",
"href": "/quickstart/deep-links"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "deep-links-starter",
"title": "Deep-link handoff starter",
"href": "/starter-kits/deep-links-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=routes-navigation&platform=deep-links",
"apiPath": "/api/capability-qualifications?product=routes-navigation&platform=deep-links",
"downloadPath": "/api/capability-qualifications?product=routes-navigation&platform=deep-links&download=1",
"matrixPath": "/platforms/matrix?product=routes-navigation&platform=deep-links",
"productPath": "/docs/routes-navigation",
"platformPath": "/platforms/deep-links"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Routes & Navigation · MCP qualification
- Identity: `capability-qualification:routes-navigation--mcp--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=routes-navigation&platform=mcp
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "routes-navigation--mcp--qualification",
"matrixCellId": "routes-navigation--mcp",
"product": {
"slug": "routes-navigation",
"name": "Routes & Navigation",
"summary": "Routes, matrices, optimization, map matching, predictive ETAs, and turn-by-turn navigation.",
"category": "Mobility",
"accent": "#ff7a45"
},
"platform": {
"slug": "mcp",
"name": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "ai-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "mcp-agent",
"title": "Connect a read-only Mappls agent",
"href": "/quickstart/mcp-agent"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "mcp-agent-starter",
"title": "MCP client policy starter",
"href": "/starter-kits/mcp-agent-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "emergency-incident-response",
"title": "Coordinated incident response",
"href": "/journeys/emergency-incident-response"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "navigation-session",
"title": "Recoverable navigation session",
"href": "/journeys/navigation-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "durable-weekend-itinerary",
"title": "Durable multi-stop itinerary",
"href": "/journeys/durable-weekend-itinerary"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-direction-planning-handoff",
"title": "iOS direction planning and navigation handoff",
"href": "/journeys/ios-direction-planning-handoff"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"MCP deployment and transport identity",
"OAuth resource, issuer, audience, client, and profile",
"Exact tool allowlist, human boundary, and durable-state owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=routes-navigation&platform=mcp",
"apiPath": "/api/capability-qualifications?product=routes-navigation&platform=mcp",
"downloadPath": "/api/capability-qualifications?product=routes-navigation&platform=mcp&download=1",
"matrixPath": "/platforms/matrix?product=routes-navigation&platform=mcp",
"productPath": "/docs/routes-navigation",
"platformPath": "/platforms/mcp"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · InTouch Telematics · REST qualification
- Identity: `capability-qualification:intouch-telematics--rest--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=intouch-telematics&platform=rest
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "intouch-telematics--rest--qualification",
"matrixCellId": "intouch-telematics--rest",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "rest",
"name": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack."
},
"status": "ready-to-qualify",
"stateModel": "stateful",
"integrationLane": "trusted-service",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-rest-apis",
"title": "Mapmyindia Intouch REST Apis",
"href": "/reference/mapmyindia-intouch-rest-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-purejs-sample-websdk-rest",
"title": "MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web in Pure JS",
"href": "/reference/mapmyindia-purejs-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-rest-apis",
"title": "Mappls Intouch REST Apis",
"href": "/reference/mappls-intouch-rest-apis"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-alarm-this-api-will-get-all-the-alarm-configurations-for-a-user-v1-0-0",
"title": "This API will get all the alarm configurations for a user.",
"href": "/api-reference/intouch-get-alarm-this-api-will-get-all-the-alarm-configurations-for-a-user-v1-0-0"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-alarm-this-api-will-get-all-the-alarm-configurations-for-a-user",
"title": "This API will get all the alarm configurations for a user.",
"href": "/api-reference/intouch-get-alarm-this-api-will-get-all-the-alarm-configurations-for-a-user"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-alarm-this-api-will-create-an-alarm-v1-0-0",
"title": "This API will create an alarm.",
"href": "/api-reference/intouch-post-alarm-this-api-will-create-an-alarm-v1-0-0"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-alarm-this-api-will-create-an-alarm",
"title": "This API will create an alarm.",
"href": "/api-reference/intouch-post-alarm-this-api-will-create-an-alarm"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-alarm-alarmlog-gets-the-list-of-alarm-config-s-v1-0-0",
"title": "Gets The List Of Alarm Config(s)",
"href": "/api-reference/intouch-get-alarm-alarmlog-gets-the-list-of-alarm-config-s-v1-0-0"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-alarm-alarmlog-gets-the-list-of-alarm-config-s",
"title": "Gets The List Of Alarm Config(s)",
"href": "/api-reference/intouch-get-alarm-alarmlog-gets-the-list-of-alarm-config-s"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-delete-alarm-id-deletes-an-alarm-config-v1-0-0",
"title": "Deletes An Alarm Config",
"href": "/api-reference/intouch-delete-alarm-id-deletes-an-alarm-config-v1-0-0"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-delete-alarm-id-deletes-an-alarm-config",
"title": "Deletes An Alarm Config",
"href": "/api-reference/intouch-delete-alarm-id-deletes-an-alarm-config"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-alarm-id-updates-an-alarm-config-v1-0-0",
"title": "Updates An Alarm Config",
"href": "/api-reference/intouch-post-alarm-id-updates-an-alarm-config-v1-0-0"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-alarm-id-updates-an-alarm-config",
"title": "Updates An Alarm Config",
"href": "/api-reference/intouch-post-alarm-id-updates-an-alarm-config"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-alarms-this-api-will-get-all-the-alarm-configurations-for-a-user",
"title": "This API will get all the alarm configurations for a user.",
"href": "/api-reference/intouch-get-alarms-this-api-will-get-all-the-alarm-configurations-for-a-user"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-alarms-this-api-will-create-an-alarm",
"title": "This API will create an alarm.",
"href": "/api-reference/intouch-post-alarms-this-api-will-create-an-alarm"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-alarms-alarmlogs-gets-the-list-of-alarm-config-s",
"title": "Gets The List Of Alarm Config(s)",
"href": "/api-reference/intouch-get-alarms-alarmlogs-gets-the-list-of-alarm-config-s"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-delete-alarms-id-deletes-an-alarm-config",
"title": "Deletes An Alarm Config",
"href": "/api-reference/intouch-delete-alarms-id-deletes-an-alarm-config"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-alarms-id-updates-an-alarm-config",
"title": "Updates An Alarm Config",
"href": "/api-reference/intouch-post-alarms-id-updates-an-alarm-config"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-devices-info-gets-the-basic-info-of-devices",
"title": "Gets the basic info of devices.",
"href": "/api-reference/intouch-get-devices-info-gets-the-basic-info-of-devices"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-devices-hardwareinfo-gets-the-hardware-info-of-devices",
"title": "Gets the hardware info of devices.",
"href": "/api-reference/intouch-get-devices-hardwareinfo-gets-the-hardware-info-of-devices"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-devices-gets-the-live-data-of-devices",
"title": "Gets the live data of devices.",
"href": "/api-reference/intouch-get-devices-gets-the-live-data-of-devices"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-device-gets-the-live-data-of-devices",
"title": "Gets the live data of devices.",
"href": "/api-reference/intouch-get-device-gets-the-live-data-of-devices"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-device-drive-gets-drive-details-of-a-device",
"title": "Gets drive details of a device.",
"href": "/api-reference/intouch-get-device-drive-gets-drive-details-of-a-device"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-devices-drives-gets-drive-details-of-a-device",
"title": "Gets drive details of a device.",
"href": "/api-reference/intouch-get-devices-drives-gets-drive-details-of-a-device"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-device-deviceid-events-gets-the-historical-location-events-of-a-device",
"title": "Gets the historical location events of a device.",
"href": "/api-reference/intouch-get-device-deviceid-events-gets-the-historical-location-events-of-a-device"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-devices-deviceid-events-gets-the-historical-location-events-of-a-device",
"title": "Gets the historical location events of a device.",
"href": "/api-reference/intouch-get-devices-deviceid-events-gets-the-historical-location-events-of-a-device"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-geofence-gets-all-the-configured-geofence-s-v1-0-0",
"title": "Gets All The Configured Geofence(s)",
"href": "/api-reference/intouch-get-geofence-gets-all-the-configured-geofence-s-v1-0-0"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-geofence-gets-all-the-configured-geofence-s",
"title": "Gets All The Configured Geofence(s)",
"href": "/api-reference/intouch-get-geofence-gets-all-the-configured-geofence-s"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-geofence-create-a-new-geofence-v1-0-0",
"title": "Create A New Geofence",
"href": "/api-reference/intouch-post-geofence-create-a-new-geofence-v1-0-0"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-geofence-create-a-new-geofence",
"title": "Create A New Geofence",
"href": "/api-reference/intouch-post-geofence-create-a-new-geofence"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-geofence-activity-get-all-the-activities-done-by-devices-w-r-t-various-geofences",
"title": "Get all the activities done by devices w.r.t various geofences",
"href": "/api-reference/intouch-get-geofence-activity-get-all-the-activities-done-by-devices-w-r-t-various-geofences"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-delete-geofence-id-delete-a-geofence-v1-0-0",
"title": "Delete A Geofence.",
"href": "/api-reference/intouch-delete-geofence-id-delete-a-geofence-v1-0-0"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-delete-geofence-id-delete-a-geofence",
"title": "Delete A Geofence.",
"href": "/api-reference/intouch-delete-geofence-id-delete-a-geofence"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-geofence-id-get-a-single-or-multiple-geofence-s-v1-0-0",
"title": "Get A Single Or Multiple Geofence(s).",
"href": "/api-reference/intouch-get-geofence-id-get-a-single-or-multiple-geofence-s-v1-0-0"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-geofence-id-get-a-single-or-multiple-geofence-s",
"title": "Get A Single Or Multiple Geofence(s).",
"href": "/api-reference/intouch-get-geofence-id-get-a-single-or-multiple-geofence-s"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-geofence-id-update-a-geofence-v1-0-0",
"title": "Update A Geofence.",
"href": "/api-reference/intouch-post-geofence-id-update-a-geofence-v1-0-0"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-geofence-id-update-a-geofence",
"title": "Update A Geofence.",
"href": "/api-reference/intouch-post-geofence-id-update-a-geofence"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-geofences-gets-all-the-configured-geofence-s",
"title": "Gets All The Configured Geofence(s)",
"href": "/api-reference/intouch-get-geofences-gets-all-the-configured-geofence-s"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-geofences-create-a-new-geofence",
"title": "Create A New Geofence",
"href": "/api-reference/intouch-post-geofences-create-a-new-geofence"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-geofences-activities-get-all-the-activities-done-by-devices-w-r-t-various-geofences",
"title": "Get all the activities done by devices w.r.t various geofences",
"href": "/api-reference/intouch-get-geofences-activities-get-all-the-activities-done-by-devices-w-r-t-various-geofences"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-delete-geofences-id-delete-a-geofence",
"title": "Delete A Geofence.",
"href": "/api-reference/intouch-delete-geofences-id-delete-a-geofence"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-geofences-id-get-a-single-or-multiple-geofence-s",
"title": "Get A Single Or Multiple Geofence(s).",
"href": "/api-reference/intouch-get-geofences-id-get-a-single-or-multiple-geofence-s"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-geofences-id-update-a-geofence",
"title": "Update A Geofence.",
"href": "/api-reference/intouch-post-geofences-id-update-a-geofence"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-group-this-api-will-get-all-the-groups-for-a-user",
"title": "This API will get all the groups for a user.",
"href": "/api-reference/intouch-get-group-this-api-will-get-all-the-groups-for-a-user"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-group-this-api-will-create-a-group",
"title": "This API will create a group.",
"href": "/api-reference/intouch-post-group-this-api-will-create-a-group"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-delete-group-id-deletes-a-group",
"title": "Deletes a group",
"href": "/api-reference/intouch-delete-group-id-deletes-a-group"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-group-id-updates-a-group",
"title": "Updates a group",
"href": "/api-reference/intouch-post-group-id-updates-a-group"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-groups-this-api-will-get-all-the-groups-for-a-user",
"title": "This API will get all the groups for a user.",
"href": "/api-reference/intouch-get-groups-this-api-will-get-all-the-groups-for-a-user"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-groups-this-api-will-create-a-group",
"title": "This API will create a group.",
"href": "/api-reference/intouch-post-groups-this-api-will-create-a-group"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-delete-groups-id-deletes-a-group",
"title": "Deletes a group",
"href": "/api-reference/intouch-delete-groups-id-deletes-a-group"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-groups-id-updates-a-group",
"title": "Updates a group",
"href": "/api-reference/intouch-post-groups-id-updates-a-group"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-devices-nearby-gets-the-list-of-all-the-nearby-devices",
"title": "Gets the list of all the nearby devices.",
"href": "/api-reference/intouch-get-devices-nearby-gets-the-list-of-all-the-nearby-devices"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-trips-this-api-will-get-all-the-trips-for-a-user",
"title": "This API will get all the trips for a user.",
"href": "/api-reference/intouch-get-trips-this-api-will-get-all-the-trips-for-a-user"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-trips-this-api-will-create-a-trip",
"title": "This API will create a trip.",
"href": "/api-reference/intouch-post-trips-this-api-will-create-a-trip"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-get-trips-id-gets-the-details-of-a-single-trip",
"title": "Gets the details of a single trip",
"href": "/api-reference/intouch-get-trips-id-gets-the-details-of-a-single-trip"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "intouch-post-trips-id-close-post-api-to-close-a-trip",
"title": "POST API to close a trip.",
"href": "/api-reference/intouch-post-trips-id-close-post-api-to-close-a-trip"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "delivery-eta",
"title": "Track a delivery with a trustworthy ETA",
"href": "/tutorials/delivery-eta"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "fleet-geofences",
"title": "Build fleet geofence operations",
"href": "/tutorials/fleet-geofences"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "webhook-reliability",
"title": "Consume Mappls events exactly once in effect",
"href": "/tutorials/webhook-reliability"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "oauth-server-integration",
"title": "Call Mappls safely from a trusted server",
"href": "/tutorials/oauth-server-integration"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "intouch-trip-lifecycle",
"title": "Reconcile a complete InTouch trip lifecycle",
"href": "/tutorials/intouch-trip-lifecycle"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "rest-api",
"title": "Your first trusted Mappls request",
"href": "/quickstart/rest-api"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "rest-api-starter",
"title": "Trusted REST service starter",
"href": "/starter-kits/rest-api-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "intouch-rest-bearer",
"title": "InTouch telematics data plane",
"runtime": "trusted-server",
"generation": "InTouch REST",
"visibility": "secret",
"evidenceBoundary": "The normalized repository contract declares bearer transport for these InTouch operations; entitlement, token issuance, permitted assets, and production retention remain account-specific.",
"href": "/authentication#intouch-rest-bearer"
},
{
"slug": "mcp-gateway-and-provider",
"title": "MCP and AI-native clients",
"runtime": "mcp",
"generation": "MCP offline or live-read profile",
"visibility": "selection-required",
"evidenceBoundary": "MCP documentation tools need no provider credential. Live-read tools delegate to exact product contracts; the MCP server is not an authorization server and exposes no writes.",
"href": "/authentication#mcp-gateway-and-provider"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Approved host/path and API generation",
"Server workload and egress identity",
"Secret-provider key version—not its value",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=intouch-telematics&platform=rest",
"apiPath": "/api/capability-qualifications?product=intouch-telematics&platform=rest",
"downloadPath": "/api/capability-qualifications?product=intouch-telematics&platform=rest&download=1",
"matrixPath": "/platforms/matrix?product=intouch-telematics&platform=rest",
"productPath": "/docs/intouch-telematics",
"platformPath": "/platforms/rest"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · InTouch Telematics · Web qualification
- Identity: `capability-qualification:intouch-telematics--web--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=intouch-telematics&platform=web
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "intouch-telematics--web--qualification",
"matrixCellId": "intouch-telematics--web",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "web",
"name": "Web",
"headline": "Build expressive browser maps without surrendering performance or control."
},
"status": "ready-to-qualify",
"stateModel": "stateful",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-web-plugins",
"title": "Mapmyindia Intouch Web Plugins",
"href": "/reference/mapmyindia-intouch-web-plugins"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-purejs-sample-websdk-rest",
"title": "MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web in Pure JS",
"href": "/reference/mapmyindia-purejs-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-plugins",
"title": "Mappls Web Plugins",
"href": "/reference/mappls-web-plugins"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "delivery-eta",
"title": "Track a delivery with a trustworthy ETA",
"href": "/tutorials/delivery-eta"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "fleet-geofences",
"title": "Build fleet geofence operations",
"href": "/tutorials/fleet-geofences"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "intouch-trip-lifecycle",
"title": "Reconcile a complete InTouch trip lifecycle",
"href": "/tutorials/intouch-trip-lifecycle"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "web-map",
"title": "Render one accessible web map",
"href": "/quickstart/web-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "web-map-starter",
"title": "Accessible web map host starter",
"href": "/starter-kits/web-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "intouch-rest-bearer",
"title": "InTouch telematics data plane",
"runtime": "trusted-server",
"generation": "InTouch REST",
"visibility": "secret",
"evidenceBoundary": "The normalized repository contract declares bearer transport for these InTouch operations; entitlement, token issuance, permitted assets, and production retention remain account-specific.",
"href": "/authentication#intouch-rest-bearer"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=intouch-telematics&platform=web",
"apiPath": "/api/capability-qualifications?product=intouch-telematics&platform=web",
"downloadPath": "/api/capability-qualifications?product=intouch-telematics&platform=web&download=1",
"matrixPath": "/platforms/matrix?product=intouch-telematics&platform=web",
"productPath": "/docs/intouch-telematics",
"platformPath": "/platforms/web"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · InTouch Telematics · Android qualification
- Identity: `capability-qualification:intouch-telematics--android--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=intouch-telematics&platform=android
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "intouch-telematics--android--qualification",
"matrixCellId": "intouch-telematics--android",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "android",
"name": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline."
},
"status": "ready-to-qualify",
"stateModel": "stateful",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-android-sdk",
"title": "Mapmyindia Intouch Android SDK",
"href": "/reference/mapmyindia-intouch-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/reference/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/reference/mappls-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/reference/mappls-camera-sdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-android-sdk",
"title": "Mappls Intouch Android SDK",
"href": "/reference/mappls-intouch-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-location-capture-android-sdk",
"title": "Mappls Location Capture SDK",
"href": "/reference/mappls-location-capture-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-workmate-android-sdk",
"title": "Workmate SDK - Android",
"href": "/reference/mappls-workmate-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-android-sdk",
"title": "Mapmyindia Intouch Android SDK",
"href": "/sdks/mapmyindia-intouch-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/sdks/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/sdks/mappls-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/sdks/mappls-camera-sdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-intouch-android-sdk",
"title": "Mappls Intouch Android SDK",
"href": "/sdks/mappls-intouch-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-location-capture-android-sdk",
"title": "Mappls Location Capture SDK",
"href": "/sdks/mappls-location-capture-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-workmate-android-sdk",
"title": "Workmate SDK - Android",
"href": "/sdks/mappls-workmate-android-sdk"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "android-native",
"title": "Create a lifecycle-safe Android map",
"href": "/quickstart/android-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "android-native-starter",
"title": "Android lifecycle adapter starter",
"href": "/starter-kits/android-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "intouch-rest-bearer",
"title": "InTouch telematics data plane",
"runtime": "trusted-server",
"generation": "InTouch REST",
"visibility": "secret",
"evidenceBoundary": "The normalized repository contract declares bearer transport for these InTouch operations; entitlement, token issuance, permitted assets, and production retention remain account-specific.",
"href": "/authentication#intouch-rest-bearer"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=intouch-telematics&platform=android",
"apiPath": "/api/capability-qualifications?product=intouch-telematics&platform=android",
"downloadPath": "/api/capability-qualifications?product=intouch-telematics&platform=android&download=1",
"matrixPath": "/platforms/matrix?product=intouch-telematics&platform=android",
"productPath": "/docs/intouch-telematics",
"platformPath": "/platforms/android"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · InTouch Telematics · iOS qualification
- Identity: `capability-qualification:intouch-telematics--ios--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=intouch-telematics&platform=ios
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "intouch-telematics--ios--qualification",
"matrixCellId": "intouch-telematics--ios",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "ios",
"name": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks."
},
"status": "ready-to-qualify",
"stateModel": "stateful",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-ios-sdk",
"title": "MapmyIndia Intouch iOS SDK",
"href": "/reference/mapmyindia-intouch-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution",
"title": "Mappls Annotation Extension for iOS",
"href": "/reference/mappls-annotation-extension-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution-base",
"title": "Mappls Annotation Extension for iOS",
"href": "/reference/mappls-annotation-extension-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-core-ios-distribution",
"title": "[MapplsAPICore]()",
"href": "/reference/mappls-api-core-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/reference/mappls-api-kit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution-base",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/reference/mappls-api-kit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-ios-distribution",
"title": "MapplsCamera SDK for iOS",
"href": "/reference/mappls-camera-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-ios",
"title": "MapplsCamera SDK for iOS",
"href": "/reference/mappls-camera-sdk-ios"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution",
"title": "MapplsDirectionUI for iOS",
"href": "/reference/mappls-direction-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution-base",
"title": "MapplsDirectionUI for iOS",
"href": "/reference/mappls-direction-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/reference/mappls-drivingrange-plugin-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution-base",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/reference/mappls-drivingrange-plugin-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution",
"title": "MapplsFeedbackKit for iOS",
"href": "/reference/mappls-feedback-kit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution-base",
"title": "MapplsFeedbackKit for iOS",
"href": "/reference/mappls-feedback-kit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/reference/mappls-feedback-uikit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution-base",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/reference/mappls-feedback-uikit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/reference/mappls-geoanalytics-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution-base",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/reference/mappls-geoanalytics-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/reference/mappls-geofence-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution-base",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/reference/mappls-geofence-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-ios-distribution",
"title": "Mappls Intouch IOS Distribution",
"href": "/reference/mappls-intouch-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-ios-distribution-base",
"title": "Mappls Intouch IOS Distribution Base",
"href": "/reference/mappls-intouch-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-ios-sdk",
"title": "[Mappls Intouch SDK]()",
"href": "/reference/mappls-intouch-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/reference/mappls-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-location-capture-sdk-ios-distribution",
"title": "Mappls Location Capture SDK (iOS)",
"href": "/reference/mappls-location-capture-sdk-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-move-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/reference/mappls-nearby-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution-base",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/reference/mappls-nearby-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/reference/mappls-raster-catalogue-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution-base",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/reference/mappls-raster-catalogue-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-intouch-ios-sdk",
"title": "[Mappls Intouch SDK]()",
"href": "/sdks/mappls-intouch-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-move-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-core-ios-distribution",
"title": "[MapplsAPICore]()",
"href": "/sdks/mappls-api-core-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/sdks/mappls-api-kit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution-base",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/sdks/mappls-api-kit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-ios-sdk",
"title": "MapmyIndia Intouch iOS SDK",
"href": "/sdks/mapmyindia-intouch-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution",
"title": "Mappls Annotation Extension for iOS",
"href": "/sdks/mappls-annotation-extension-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution-base",
"title": "Mappls Annotation Extension for iOS",
"href": "/sdks/mappls-annotation-extension-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-intouch-ios-distribution",
"title": "Mappls Intouch IOS Distribution",
"href": "/sdks/mappls-intouch-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-intouch-ios-distribution-base",
"title": "Mappls Intouch IOS Distribution Base",
"href": "/sdks/mappls-intouch-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/sdks/mappls-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-location-capture-sdk-ios-distribution",
"title": "Mappls Location Capture SDK (iOS)",
"href": "/sdks/mappls-location-capture-sdk-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/sdks/mappls-nearby-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution-base",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/sdks/mappls-nearby-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-ios-distribution",
"title": "MapplsCamera SDK for iOS",
"href": "/sdks/mappls-camera-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-ios",
"title": "MapplsCamera SDK for iOS",
"href": "/sdks/mappls-camera-sdk-ios"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution",
"title": "MapplsDirectionUI for iOS",
"href": "/sdks/mappls-direction-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution-base",
"title": "MapplsDirectionUI for iOS",
"href": "/sdks/mappls-direction-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/sdks/mappls-drivingrange-plugin-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution-base",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/sdks/mappls-drivingrange-plugin-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution",
"title": "MapplsFeedbackKit for iOS",
"href": "/sdks/mappls-feedback-kit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution-base",
"title": "MapplsFeedbackKit for iOS",
"href": "/sdks/mappls-feedback-kit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/sdks/mappls-feedback-uikit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution-base",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/sdks/mappls-feedback-uikit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/sdks/mappls-geoanalytics-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution-base",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/sdks/mappls-geoanalytics-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/sdks/mappls-geofence-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution-base",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/sdks/mappls-geofence-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/sdks/mappls-raster-catalogue-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution-base",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/sdks/mappls-raster-catalogue-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "ios-sdk-production-readiness",
"title": "Qualify an iOS Mappls release",
"href": "/tutorials/ios-sdk-production-readiness"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "ios-direction-geofence-handoffs",
"title": "Build restart-safe iOS direction and geofence handoffs",
"href": "/tutorials/ios-direction-geofence-handoffs"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "ios-native",
"title": "Create a lifecycle-safe iOS map",
"href": "/quickstart/ios-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "ios-native-starter",
"title": "iOS view-ownership starter",
"href": "/starter-kits/ios-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "intouch-rest-bearer",
"title": "InTouch telematics data plane",
"runtime": "trusted-server",
"generation": "InTouch REST",
"visibility": "secret",
"evidenceBoundary": "The normalized repository contract declares bearer transport for these InTouch operations; entitlement, token issuance, permitted assets, and production retention remain account-specific.",
"href": "/authentication#intouch-rest-bearer"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=intouch-telematics&platform=ios",
"apiPath": "/api/capability-qualifications?product=intouch-telematics&platform=ios",
"downloadPath": "/api/capability-qualifications?product=intouch-telematics&platform=ios&download=1",
"matrixPath": "/platforms/matrix?product=intouch-telematics&platform=ios",
"productPath": "/docs/intouch-telematics",
"platformPath": "/platforms/ios"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · InTouch Telematics · React Native qualification
- Identity: `capability-qualification:intouch-telematics--react-native--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=intouch-telematics&platform=react-native
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "intouch-telematics--react-native--qualification",
"matrixCellId": "intouch-telematics--react-native",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "react-native",
"name": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms."
},
"status": "ready-to-qualify",
"stateModel": "stateful",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-react-native-sdk",
"title": "Mapmyindia Intouch React Native SDK",
"href": "/reference/mapmyindia-intouch-react-native-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-react-native-intouch-sdk",
"title": "Mappls Intouch React Native SDK",
"href": "/reference/mappls-react-native-intouch-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-react-native-sdk",
"title": "Mappls React Native SDK",
"href": "/reference/mappls-react-native-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-react-native-sdk",
"title": "Mapmyindia Intouch React Native SDK",
"href": "/sdks/mapmyindia-intouch-react-native-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-react-native-intouch-sdk",
"title": "Mappls Intouch React Native SDK",
"href": "/sdks/mappls-react-native-intouch-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-react-native-sdk",
"title": "Mappls React Native SDK",
"href": "/sdks/mappls-react-native-sdk"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "react-native-native-parity",
"title": "Qualify React Native native parity",
"href": "/tutorials/react-native-native-parity"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "react-native-map",
"title": "Bridge one map feature across Android and iOS",
"href": "/quickstart/react-native-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "react-native-map-starter",
"title": "React Native bridge-contract starter",
"href": "/starter-kits/react-native-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "intouch-rest-bearer",
"title": "InTouch telematics data plane",
"runtime": "trusted-server",
"generation": "InTouch REST",
"visibility": "secret",
"evidenceBoundary": "The normalized repository contract declares bearer transport for these InTouch operations; entitlement, token issuance, permitted assets, and production retention remain account-specific.",
"href": "/authentication#intouch-rest-bearer"
},
{
"slug": "cross-platform-native-keys",
"title": "React Native, Flutter, Cordova, or Xamarin",
"runtime": "cross-platform",
"generation": "Wrapper plus underlying native SDK generations",
"visibility": "selection-required",
"evidenceBoundary": "Wrapper repositories are integration evidence only. The exact wrapper/native credential methods, compatibility matrix, and supported architecture require confirmation.",
"href": "/authentication#cross-platform-native-keys"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=intouch-telematics&platform=react-native",
"apiPath": "/api/capability-qualifications?product=intouch-telematics&platform=react-native",
"downloadPath": "/api/capability-qualifications?product=intouch-telematics&platform=react-native&download=1",
"matrixPath": "/platforms/matrix?product=intouch-telematics&platform=react-native",
"productPath": "/docs/intouch-telematics",
"platformPath": "/platforms/react-native"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · InTouch Telematics · Flutter qualification
- Identity: `capability-qualification:intouch-telematics--flutter--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=intouch-telematics&platform=flutter
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "intouch-telematics--flutter--qualification",
"matrixCellId": "intouch-telematics--flutter",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "flutter",
"name": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "flutter-map",
"title": "Build a native-backed Flutter place picker",
"href": "/quickstart/flutter-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "flutter-map-starter",
"title": "Flutter place-selection starter",
"href": "/starter-kits/flutter-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=intouch-telematics&platform=flutter",
"apiPath": "/api/capability-qualifications?product=intouch-telematics&platform=flutter",
"downloadPath": "/api/capability-qualifications?product=intouch-telematics&platform=flutter&download=1",
"matrixPath": "/platforms/matrix?product=intouch-telematics&platform=flutter",
"productPath": "/docs/intouch-telematics",
"platformPath": "/platforms/flutter"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · InTouch Telematics · Cordova qualification
- Identity: `capability-qualification:intouch-telematics--cordova--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=intouch-telematics&platform=cordova
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "intouch-telematics--cordova--qualification",
"matrixCellId": "intouch-telematics--cordova",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "cordova",
"name": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance",
"title": "Stabilize a Cordova map before migration",
"href": "/quickstart/cordova-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance-starter",
"title": "Cordova stabilization starter",
"href": "/starter-kits/cordova-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=intouch-telematics&platform=cordova",
"apiPath": "/api/capability-qualifications?product=intouch-telematics&platform=cordova",
"downloadPath": "/api/capability-qualifications?product=intouch-telematics&platform=cordova&download=1",
"matrixPath": "/platforms/matrix?product=intouch-telematics&platform=cordova",
"productPath": "/docs/intouch-telematics",
"platformPath": "/platforms/cordova"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · InTouch Telematics · Xamarin qualification
- Identity: `capability-qualification:intouch-telematics--xamarin--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=intouch-telematics&platform=xamarin
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "intouch-telematics--xamarin--qualification",
"matrixCellId": "intouch-telematics--xamarin",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "xamarin",
"name": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance",
"title": "Extract a Xamarin map integration for replacement",
"href": "/quickstart/xamarin-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance-starter",
"title": "Xamarin extraction starter",
"href": "/starter-kits/xamarin-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=intouch-telematics&platform=xamarin",
"apiPath": "/api/capability-qualifications?product=intouch-telematics&platform=xamarin",
"downloadPath": "/api/capability-qualifications?product=intouch-telematics&platform=xamarin&download=1",
"matrixPath": "/platforms/matrix?product=intouch-telematics&platform=xamarin",
"productPath": "/docs/intouch-telematics",
"platformPath": "/platforms/xamarin"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · InTouch Telematics · Linux qualification
- Identity: `capability-qualification:intouch-telematics--linux--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=intouch-telematics&platform=linux
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "intouch-telematics--linux--qualification",
"matrixCellId": "intouch-telematics--linux",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "linux",
"name": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "entitled-runtime",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "linux-embedded",
"title": "Boot a supervised embedded map client",
"href": "/quickstart/linux-embedded"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "linux-embedded-starter",
"title": "Embedded Linux supervisor starter",
"href": "/starter-kits/linux-embedded-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Hardware/OS/runtime and protected distribution identity",
"License or entitlement reference—not its contents",
"Artifact checksum, update channel, and rollback owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=intouch-telematics&platform=linux",
"apiPath": "/api/capability-qualifications?product=intouch-telematics&platform=linux",
"downloadPath": "/api/capability-qualifications?product=intouch-telematics&platform=linux&download=1",
"matrixPath": "/platforms/matrix?product=intouch-telematics&platform=linux",
"productPath": "/docs/intouch-telematics",
"platformPath": "/platforms/linux"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · InTouch Telematics · Automotive qualification
- Identity: `capability-qualification:intouch-telematics--automotive--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=intouch-telematics&platform=automotive
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "intouch-telematics--automotive--qualification",
"matrixCellId": "intouch-telematics--automotive",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "automotive",
"name": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "entitled-runtime",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation",
"title": "Simulate one recoverable navigation session",
"href": "/quickstart/automotive-navigation"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation-starter",
"title": "Automotive release-manifest starter",
"href": "/starter-kits/automotive-navigation-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Hardware/OS/runtime and protected distribution identity",
"License or entitlement reference—not its contents",
"Artifact checksum, update channel, and rollback owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=intouch-telematics&platform=automotive",
"apiPath": "/api/capability-qualifications?product=intouch-telematics&platform=automotive",
"downloadPath": "/api/capability-qualifications?product=intouch-telematics&platform=automotive&download=1",
"matrixPath": "/platforms/matrix?product=intouch-telematics&platform=automotive",
"productPath": "/docs/intouch-telematics",
"platformPath": "/platforms/automotive"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · InTouch Telematics · Widgets qualification
- Identity: `capability-qualification:intouch-telematics--widgets--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=intouch-telematics&platform=widgets
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "intouch-telematics--widgets--qualification",
"matrixCellId": "intouch-telematics--widgets",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "widgets",
"name": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate."
},
"status": "ready-to-qualify",
"stateModel": "stateful",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-web-plugins",
"title": "Mapmyindia Intouch Web Plugins",
"href": "/reference/mapmyindia-intouch-web-plugins"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-plugins",
"title": "Mappls Web Plugins",
"href": "/reference/mappls-web-plugins"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "widget-host-production",
"title": "Operate widgets as untrusted lifecycle surfaces",
"href": "/tutorials/widget-host-production"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "widgets-place",
"title": "Embed a place journey with an owned fallback",
"href": "/quickstart/widgets-place"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "widgets-place-starter",
"title": "Widget journey host starter",
"href": "/starter-kits/widgets-place-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"No exact authentication candidate is cataloged for this pairing."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=intouch-telematics&platform=widgets",
"apiPath": "/api/capability-qualifications?product=intouch-telematics&platform=widgets",
"downloadPath": "/api/capability-qualifications?product=intouch-telematics&platform=widgets&download=1",
"matrixPath": "/platforms/matrix?product=intouch-telematics&platform=widgets",
"productPath": "/docs/intouch-telematics",
"platformPath": "/platforms/widgets"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · InTouch Telematics · Deep links qualification
- Identity: `capability-qualification:intouch-telematics--deep-links--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=intouch-telematics&platform=deep-links
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "intouch-telematics--deep-links--qualification",
"matrixCellId": "intouch-telematics--deep-links",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "deep-links",
"name": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "deep-links",
"title": "Ship one zero-SDK Mappls hand-off",
"href": "/quickstart/deep-links"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "deep-links-starter",
"title": "Deep-link handoff starter",
"href": "/starter-kits/deep-links-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=intouch-telematics&platform=deep-links",
"apiPath": "/api/capability-qualifications?product=intouch-telematics&platform=deep-links",
"downloadPath": "/api/capability-qualifications?product=intouch-telematics&platform=deep-links&download=1",
"matrixPath": "/platforms/matrix?product=intouch-telematics&platform=deep-links",
"productPath": "/docs/intouch-telematics",
"platformPath": "/platforms/deep-links"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · InTouch Telematics · MCP qualification
- Identity: `capability-qualification:intouch-telematics--mcp--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=intouch-telematics&platform=mcp
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "intouch-telematics--mcp--qualification",
"matrixCellId": "intouch-telematics--mcp",
"product": {
"slug": "intouch-telematics",
"name": "InTouch Telematics",
"summary": "Live tracking, trips, devices, vehicles, events, geofences, and fleet intelligence.",
"category": "Operations",
"accent": "#e052a0"
},
"platform": {
"slug": "mcp",
"name": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "ai-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "mcp-agent",
"title": "Connect a read-only Mappls agent",
"href": "/quickstart/mcp-agent"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "mcp-agent-starter",
"title": "MCP client policy starter",
"href": "/starter-kits/mcp-agent-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "delivery-control-tower",
"title": "Delivery Control Tower",
"href": "/samples/delivery-control-tower"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "fleet-geofence",
"title": "Fleet Geofence Monitor",
"href": "/samples/fleet-geofence"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "connected-fleet-trip",
"title": "Connected fleet trip",
"href": "/journeys/connected-fleet-trip"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "fleet-geofence-exception",
"title": "Fleet geofence exception",
"href": "/journeys/fleet-geofence-exception"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-geofence-draft",
"title": "iOS geofence draft and publication boundary",
"href": "/journeys/ios-geofence-draft"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"MCP deployment and transport identity",
"OAuth resource, issuer, audience, client, and profile",
"Exact tool allowlist, human boundary, and durable-state owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=intouch-telematics&platform=mcp",
"apiPath": "/api/capability-qualifications?product=intouch-telematics&platform=mcp",
"downloadPath": "/api/capability-qualifications?product=intouch-telematics&platform=mcp&download=1",
"matrixPath": "/platforms/matrix?product=intouch-telematics&platform=mcp",
"productPath": "/docs/intouch-telematics",
"platformPath": "/platforms/mcp"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Workmate · REST qualification
- Identity: `capability-qualification:workmate--rest--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=workmate&platform=rest
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "workmate--rest--qualification",
"matrixCellId": "workmate--rest",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "rest",
"name": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack."
},
"status": "ready-to-qualify",
"stateModel": "stateful",
"integrationLane": "trusted-service",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-workmate-apis",
"title": "Mappls by MapmyIndia-Workmate-Apis",
"href": "/reference/mapmyindia-workmate-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ai-apis",
"title": "MAPPLS AI / ML APIs",
"href": "/reference/mappls-ai-apis"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-get-clients-to-get-all-your-client-details",
"title": "To get all your client details",
"href": "/api-reference/workmate-get-clients-to-get-all-your-client-details"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-post-clients-to-create-new-client",
"title": "To create new client",
"href": "/api-reference/workmate-post-clients-to-create-new-client"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-get-configurations-categories-to-get-the-list-of-client-category-in-an-account",
"title": "To get the list of client category in an account",
"href": "/api-reference/workmate-get-configurations-categories-to-get-the-list-of-client-category-in-an-account"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-get-configurations-forms-to-get-the-form-s-id-and-their-details-from-your-account",
"title": "To get the form's Id and their details from your account.",
"href": "/api-reference/workmate-get-configurations-forms-to-get-the-form-s-id-and-their-details-from-your-account"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-get-reports-attendances-get-users-attendance-details-with-travelled-distance",
"title": "Get users attendance details with travelled distance.",
"href": "/api-reference/workmate-get-reports-attendances-get-users-attendance-details-with-travelled-distance"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-get-reports-forms-formid-to-get-form-based-check-in-out-details",
"title": "To get form based check in/out details",
"href": "/api-reference/workmate-get-reports-forms-formid-to-get-form-based-check-in-out-details"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-get-reports-movements-userid-get-users-movement-details",
"title": "Get users movement details",
"href": "/api-reference/workmate-get-reports-movements-userid-get-users-movement-details"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-get-tasklists-to-get-the-task-list-details",
"title": "To get the task list details.",
"href": "/api-reference/workmate-get-tasklists-to-get-the-task-list-details"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-get-tasks-to-get-the-list-of-tasks-and-their-details",
"title": "To get the list of tasks and their details",
"href": "/api-reference/workmate-get-tasks-to-get-the-list-of-tasks-and-their-details"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-post-tasks-to-create-new-task",
"title": "To create new Task",
"href": "/api-reference/workmate-post-tasks-to-create-new-task"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-get-tasks-taskid-to-get-the-task-details-for-the-given-task-id",
"title": "To get the task details for the given task id.",
"href": "/api-reference/workmate-get-tasks-taskid-to-get-the-task-details-for-the-given-task-id"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-put-tasks-taskid-to-update-the-task-description-status",
"title": "To update the task description & status.",
"href": "/api-reference/workmate-put-tasks-taskid-to-update-the-task-description-status"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "workmate-get-users-to-get-all-the-user-details-which-belongs-to-your-organization",
"title": "To get all the user details which belongs to your organization.",
"href": "/api-reference/workmate-get-users-to-get-all-the-user-details-which-belongs-to-your-organization"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "workmate-task-lifecycle",
"title": "Automate a complete Workmate task lifecycle",
"href": "/tutorials/workmate-task-lifecycle"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "webhook-reliability",
"title": "Consume Mappls events exactly once in effect",
"href": "/tutorials/webhook-reliability"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "workmate-proof-review",
"title": "Build proof review and rework for field jobs",
"href": "/tutorials/workmate-proof-review"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "rest-api",
"title": "Your first trusted Mappls request",
"href": "/quickstart/rest-api"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "rest-api-starter",
"title": "Trusted REST service starter",
"href": "/starter-kits/rest-api-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "workmate-oauth",
"title": "Workmate workforce APIs",
"runtime": "trusted-server",
"generation": "Workmate source generation",
"visibility": "selection-required",
"evidenceBoundary": "The public Workmate contracts preserve OAuth bearer evidence, but the company-issued organization, user, host, scope, and lifecycle contract is authoritative.",
"href": "/authentication#workmate-oauth"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Approved host/path and API generation",
"Server workload and egress identity",
"Secret-provider key version—not its value",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=workmate&platform=rest",
"apiPath": "/api/capability-qualifications?product=workmate&platform=rest",
"downloadPath": "/api/capability-qualifications?product=workmate&platform=rest&download=1",
"matrixPath": "/platforms/matrix?product=workmate&platform=rest",
"productPath": "/docs/workmate",
"platformPath": "/platforms/rest"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Workmate · Web qualification
- Identity: `capability-qualification:workmate--web--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=workmate&platform=web
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "workmate--web--qualification",
"matrixCellId": "workmate--web",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "web",
"name": "Web",
"headline": "Build expressive browser maps without surrendering performance or control."
},
"status": "selection-required",
"stateModel": "stateful",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-selection-required",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "web-map",
"title": "Render one accessible web map",
"href": "/quickstart/web-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "web-map-starter",
"title": "Accessible web map host starter",
"href": "/starter-kits/web-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "workmate-oauth",
"title": "Workmate workforce APIs",
"runtime": "trusted-server",
"generation": "Workmate source generation",
"visibility": "selection-required",
"evidenceBoundary": "The public Workmate contracts preserve OAuth bearer evidence, but the company-issued organization, user, host, scope, and lifecycle contract is authoritative.",
"href": "/authentication#workmate-oauth"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=workmate&platform=web",
"apiPath": "/api/capability-qualifications?product=workmate&platform=web",
"downloadPath": "/api/capability-qualifications?product=workmate&platform=web&download=1",
"matrixPath": "/platforms/matrix?product=workmate&platform=web",
"productPath": "/docs/workmate",
"platformPath": "/platforms/web"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Workmate · Android qualification
- Identity: `capability-qualification:workmate--android--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=workmate&platform=android
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "workmate--android--qualification",
"matrixCellId": "workmate--android",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "android",
"name": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline."
},
"status": "ready-to-qualify",
"stateModel": "stateful",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-android-sdk",
"title": "Mapmyindia Intouch Android SDK",
"href": "/reference/mapmyindia-intouch-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/reference/mappls-camera-sdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-android-sdk",
"title": "Mappls Intouch Android SDK",
"href": "/reference/mappls-intouch-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-location-capture-android-sdk",
"title": "Mappls Location Capture SDK",
"href": "/reference/mappls-location-capture-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-workmate-android-sdk",
"title": "Workmate SDK - Android",
"href": "/reference/mappls-workmate-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-android-sdk",
"title": "Mapmyindia Intouch Android SDK",
"href": "/sdks/mapmyindia-intouch-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/sdks/mappls-camera-sdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-intouch-android-sdk",
"title": "Mappls Intouch Android SDK",
"href": "/sdks/mappls-intouch-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-location-capture-android-sdk",
"title": "Mappls Location Capture SDK",
"href": "/sdks/mappls-location-capture-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-workmate-android-sdk",
"title": "Workmate SDK - Android",
"href": "/sdks/mappls-workmate-android-sdk"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "workmate-task-lifecycle",
"title": "Automate a complete Workmate task lifecycle",
"href": "/tutorials/workmate-task-lifecycle"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "workmate-proof-review",
"title": "Build proof review and rework for field jobs",
"href": "/tutorials/workmate-proof-review"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "android-native",
"title": "Create a lifecycle-safe Android map",
"href": "/quickstart/android-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "android-native-starter",
"title": "Android lifecycle adapter starter",
"href": "/starter-kits/android-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "workmate-oauth",
"title": "Workmate workforce APIs",
"runtime": "trusted-server",
"generation": "Workmate source generation",
"visibility": "selection-required",
"evidenceBoundary": "The public Workmate contracts preserve OAuth bearer evidence, but the company-issued organization, user, host, scope, and lifecycle contract is authoritative.",
"href": "/authentication#workmate-oauth"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=workmate&platform=android",
"apiPath": "/api/capability-qualifications?product=workmate&platform=android",
"downloadPath": "/api/capability-qualifications?product=workmate&platform=android&download=1",
"matrixPath": "/platforms/matrix?product=workmate&platform=android",
"productPath": "/docs/workmate",
"platformPath": "/platforms/android"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Workmate · iOS qualification
- Identity: `capability-qualification:workmate--ios--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=workmate&platform=ios
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "workmate--ios--qualification",
"matrixCellId": "workmate--ios",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "ios",
"name": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "ios-native",
"title": "Create a lifecycle-safe iOS map",
"href": "/quickstart/ios-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "ios-native-starter",
"title": "iOS view-ownership starter",
"href": "/starter-kits/ios-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=workmate&platform=ios",
"apiPath": "/api/capability-qualifications?product=workmate&platform=ios",
"downloadPath": "/api/capability-qualifications?product=workmate&platform=ios&download=1",
"matrixPath": "/platforms/matrix?product=workmate&platform=ios",
"productPath": "/docs/workmate",
"platformPath": "/platforms/ios"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Workmate · React Native qualification
- Identity: `capability-qualification:workmate--react-native--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=workmate&platform=react-native
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "workmate--react-native--qualification",
"matrixCellId": "workmate--react-native",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "react-native",
"name": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "react-native-map",
"title": "Bridge one map feature across Android and iOS",
"href": "/quickstart/react-native-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "react-native-map-starter",
"title": "React Native bridge-contract starter",
"href": "/starter-kits/react-native-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=workmate&platform=react-native",
"apiPath": "/api/capability-qualifications?product=workmate&platform=react-native",
"downloadPath": "/api/capability-qualifications?product=workmate&platform=react-native&download=1",
"matrixPath": "/platforms/matrix?product=workmate&platform=react-native",
"productPath": "/docs/workmate",
"platformPath": "/platforms/react-native"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Workmate · Flutter qualification
- Identity: `capability-qualification:workmate--flutter--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=workmate&platform=flutter
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "workmate--flutter--qualification",
"matrixCellId": "workmate--flutter",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "flutter",
"name": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "flutter-map",
"title": "Build a native-backed Flutter place picker",
"href": "/quickstart/flutter-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "flutter-map-starter",
"title": "Flutter place-selection starter",
"href": "/starter-kits/flutter-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=workmate&platform=flutter",
"apiPath": "/api/capability-qualifications?product=workmate&platform=flutter",
"downloadPath": "/api/capability-qualifications?product=workmate&platform=flutter&download=1",
"matrixPath": "/platforms/matrix?product=workmate&platform=flutter",
"productPath": "/docs/workmate",
"platformPath": "/platforms/flutter"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Workmate · Cordova qualification
- Identity: `capability-qualification:workmate--cordova--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=workmate&platform=cordova
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "workmate--cordova--qualification",
"matrixCellId": "workmate--cordova",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "cordova",
"name": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance",
"title": "Stabilize a Cordova map before migration",
"href": "/quickstart/cordova-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance-starter",
"title": "Cordova stabilization starter",
"href": "/starter-kits/cordova-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=workmate&platform=cordova",
"apiPath": "/api/capability-qualifications?product=workmate&platform=cordova",
"downloadPath": "/api/capability-qualifications?product=workmate&platform=cordova&download=1",
"matrixPath": "/platforms/matrix?product=workmate&platform=cordova",
"productPath": "/docs/workmate",
"platformPath": "/platforms/cordova"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Workmate · Xamarin qualification
- Identity: `capability-qualification:workmate--xamarin--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=workmate&platform=xamarin
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "workmate--xamarin--qualification",
"matrixCellId": "workmate--xamarin",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "xamarin",
"name": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance",
"title": "Extract a Xamarin map integration for replacement",
"href": "/quickstart/xamarin-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance-starter",
"title": "Xamarin extraction starter",
"href": "/starter-kits/xamarin-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=workmate&platform=xamarin",
"apiPath": "/api/capability-qualifications?product=workmate&platform=xamarin",
"downloadPath": "/api/capability-qualifications?product=workmate&platform=xamarin&download=1",
"matrixPath": "/platforms/matrix?product=workmate&platform=xamarin",
"productPath": "/docs/workmate",
"platformPath": "/platforms/xamarin"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Workmate · Linux qualification
- Identity: `capability-qualification:workmate--linux--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=workmate&platform=linux
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "workmate--linux--qualification",
"matrixCellId": "workmate--linux",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "linux",
"name": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "entitled-runtime",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "linux-embedded",
"title": "Boot a supervised embedded map client",
"href": "/quickstart/linux-embedded"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "linux-embedded-starter",
"title": "Embedded Linux supervisor starter",
"href": "/starter-kits/linux-embedded-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Hardware/OS/runtime and protected distribution identity",
"License or entitlement reference—not its contents",
"Artifact checksum, update channel, and rollback owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=workmate&platform=linux",
"apiPath": "/api/capability-qualifications?product=workmate&platform=linux",
"downloadPath": "/api/capability-qualifications?product=workmate&platform=linux&download=1",
"matrixPath": "/platforms/matrix?product=workmate&platform=linux",
"productPath": "/docs/workmate",
"platformPath": "/platforms/linux"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Workmate · Automotive qualification
- Identity: `capability-qualification:workmate--automotive--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=workmate&platform=automotive
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "workmate--automotive--qualification",
"matrixCellId": "workmate--automotive",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "automotive",
"name": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "entitled-runtime",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation",
"title": "Simulate one recoverable navigation session",
"href": "/quickstart/automotive-navigation"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation-starter",
"title": "Automotive release-manifest starter",
"href": "/starter-kits/automotive-navigation-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Hardware/OS/runtime and protected distribution identity",
"License or entitlement reference—not its contents",
"Artifact checksum, update channel, and rollback owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=workmate&platform=automotive",
"apiPath": "/api/capability-qualifications?product=workmate&platform=automotive",
"downloadPath": "/api/capability-qualifications?product=workmate&platform=automotive&download=1",
"matrixPath": "/platforms/matrix?product=workmate&platform=automotive",
"productPath": "/docs/workmate",
"platformPath": "/platforms/automotive"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Workmate · Widgets qualification
- Identity: `capability-qualification:workmate--widgets--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=workmate&platform=widgets
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "workmate--widgets--qualification",
"matrixCellId": "workmate--widgets",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "widgets",
"name": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "widgets-place",
"title": "Embed a place journey with an owned fallback",
"href": "/quickstart/widgets-place"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "widgets-place-starter",
"title": "Widget journey host starter",
"href": "/starter-kits/widgets-place-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=workmate&platform=widgets",
"apiPath": "/api/capability-qualifications?product=workmate&platform=widgets",
"downloadPath": "/api/capability-qualifications?product=workmate&platform=widgets&download=1",
"matrixPath": "/platforms/matrix?product=workmate&platform=widgets",
"productPath": "/docs/workmate",
"platformPath": "/platforms/widgets"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Workmate · Deep links qualification
- Identity: `capability-qualification:workmate--deep-links--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=workmate&platform=deep-links
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "workmate--deep-links--qualification",
"matrixCellId": "workmate--deep-links",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "deep-links",
"name": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "deep-links",
"title": "Ship one zero-SDK Mappls hand-off",
"href": "/quickstart/deep-links"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "deep-links-starter",
"title": "Deep-link handoff starter",
"href": "/starter-kits/deep-links-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=workmate&platform=deep-links",
"apiPath": "/api/capability-qualifications?product=workmate&platform=deep-links",
"downloadPath": "/api/capability-qualifications?product=workmate&platform=deep-links&download=1",
"matrixPath": "/platforms/matrix?product=workmate&platform=deep-links",
"productPath": "/docs/workmate",
"platformPath": "/platforms/deep-links"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Workmate · MCP qualification
- Identity: `capability-qualification:workmate--mcp--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=workmate&platform=mcp
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "workmate--mcp--qualification",
"matrixCellId": "workmate--mcp",
"product": {
"slug": "workmate",
"name": "Workmate",
"summary": "Workforce automation for people, clients, tasks, attendance, proof, and live operations.",
"category": "Operations",
"accent": "#3478f6"
},
"platform": {
"slug": "mcp",
"name": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "ai-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "mcp-agent",
"title": "Connect a read-only Mappls agent",
"href": "/quickstart/mcp-agent"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "mcp-agent-starter",
"title": "MCP client policy starter",
"href": "/starter-kits/mcp-agent-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "field-service-task",
"title": "Field-service task lifecycle",
"href": "/journeys/field-service-task"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"MCP deployment and transport identity",
"OAuth resource, issuer, audience, client, and profile",
"Exact tool allowlist, human boundary, and durable-state owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=workmate&platform=mcp",
"apiPath": "/api/capability-qualifications?product=workmate&platform=mcp",
"downloadPath": "/api/capability-qualifications?product=workmate&platform=mcp&download=1",
"matrixPath": "/platforms/matrix?product=workmate&platform=mcp",
"productPath": "/docs/workmate",
"platformPath": "/platforms/mcp"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · GIS & Analytics · REST qualification
- Identity: `capability-qualification:gis-analytics--rest--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=gis-analytics&platform=rest
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "gis-analytics--rest--qualification",
"matrixCellId": "gis-analytics--rest",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "rest",
"name": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack."
},
"status": "ready-to-qualify",
"stateModel": "hybrid",
"integrationLane": "trusted-service",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/reference/mapmyindia-interactive-map-js-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-mgis-apis",
"title": "Mappls mGIS APIs",
"href": "/reference/mapmyindia-mgis-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-rest-api",
"title": "Mapmyindia REST API",
"href": "/reference/mapmyindia-rest-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ai-apis",
"title": "MAPPLS AI / ML APIs",
"href": "/reference/mappls-ai-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-rest-apis",
"title": "Mappls Map APIs (REST) !",
"href": "/reference/mappls-rest-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "skydnn-aiapi-docs",
"title": "Skydnn AI APIs",
"href": "/reference/skydnn-aiapi-docs"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/sdks/mapmyindia-interactive-map-js-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-woodpecker-address-standardization-api",
"title": "Address Standardization API",
"href": "/api-reference/core-location-get-api-places-woodpecker-address-standardization-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-search-json-autosuggest-api",
"title": "AutoSuggest API",
"href": "/api-reference/core-location-get-api-places-search-json-autosuggest-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-distance-matrix-api",
"title": "Distance Matrix API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-distance-matrix-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-distance-matrix-predictive-driving-coordinates-distance-matrix-predictive-eta-api",
"title": "Distance Matrix Predictive ETA API",
"href": "/api-reference/core-location-get-rest-key-distance-matrix-predictive-driving-coordinates-distance-matrix-predictive-eta-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-elevation-elevation-api",
"title": "Elevation API",
"href": "/api-reference/core-location-get-rest-key-elevation-elevation-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-geocode-geocode-api",
"title": "Geocode API",
"href": "/api-reference/core-location-get-api-places-geocode-geocode-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-nearby-json-nearby-api",
"title": "Nearby API",
"href": "/api-reference/core-location-get-api-places-nearby-json-nearby-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-api-places-along-route-poi-along-the-route-api",
"title": "POI Along the Route API",
"href": "/api-reference/core-location-post-api-places-along-route-poi-along-the-route-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-apis-o2o-entity-eloc-place-detail-api",
"title": "Place Detail API",
"href": "/api-reference/core-location-get-apis-o2o-entity-eloc-place-detail-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-rev-geocode-reverse-geocode-api",
"title": "Reverse Geocode API",
"href": "/api-reference/core-location-get-rest-key-rev-geocode-reverse-geocode-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-route-optimization-api",
"title": "Route Optimization API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-route-optimization-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-profile-geopositions-routing-api",
"title": "Routing API",
"href": "/api-reference/core-location-get-rest-key-resources-profile-geopositions-routing-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-biking-geopositions-routing-api-with-biking-profile",
"title": "Routing API with biking profile",
"href": "/api-reference/core-location-get-rest-key-resources-biking-geopositions-routing-api-with-biking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-driving-geopositions-routing-api-with-driving-profile",
"title": "Routing API with driving profile",
"href": "/api-reference/core-location-get-rest-key-resources-driving-geopositions-routing-api-with-driving-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-trucking-geopositions-routing-api-with-trucking-profile",
"title": "Routing API with trucking profile",
"href": "/api-reference/core-location-get-rest-key-resources-trucking-geopositions-routing-api-with-trucking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-resources-walking-geopositions-routing-api-with-walking-profile",
"title": "Routing API with walking profile",
"href": "/api-reference/core-location-get-rest-key-resources-walking-geopositions-routing-api-with-walking-profile"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-rest-key-snaptoroad-snap-to-road-api",
"title": "Snap to Road API",
"href": "/api-reference/core-location-post-rest-key-snaptoroad-snap-to-road-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-rest-key-still-image-still-map-image-api",
"title": "Still Map Image API",
"href": "/api-reference/core-location-get-rest-key-still-image-still-map-image-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-get-api-places-textsearch-json-text-search-api",
"title": "Text Search API",
"href": "/api-reference/core-location-get-api-places-textsearch-json-text-search-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-security-oauth-token-token-generation-api",
"title": "Token Generation API",
"href": "/api-reference/core-location-post-security-oauth-token-token-generation-api"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "core-location-post-rest-key-still-image-polyline-traveled-route-image-api",
"title": "Traveled Route Image API",
"href": "/api-reference/core-location-post-rest-key-still-image-polyline-traveled-route-image-api"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "gis-site-selection",
"title": "Build a reproducible site-selection model",
"href": "/tutorials/gis-site-selection"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "webhook-reliability",
"title": "Consume Mappls events exactly once in effect",
"href": "/tutorials/webhook-reliability"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "rest-api",
"title": "Your first trusted Mappls request",
"href": "/quickstart/rest-api"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "rest-api-starter",
"title": "Trusted REST service starter",
"href": "/starter-kits/rest-api-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "mgis-entitled-browser",
"title": "mGIS browser surfaces",
"runtime": "enterprise",
"generation": "Selected mGIS or MIGIST surface",
"visibility": "entitlement-specific",
"evidenceBoundary": "mGIS evidence spans browser methods, durable workspace descriptions, and a separate sovereign distribution. It does not establish one universal authentication contract.",
"href": "/authentication#mgis-entitled-browser"
},
{
"slug": "mcp-gateway-and-provider",
"title": "MCP and AI-native clients",
"runtime": "mcp",
"generation": "MCP offline or live-read profile",
"visibility": "selection-required",
"evidenceBoundary": "MCP documentation tools need no provider credential. Live-read tools delegate to exact product contracts; the MCP server is not an authorization server and exposes no writes.",
"href": "/authentication#mcp-gateway-and-provider"
},
{
"slug": "contract-selection-required",
"title": "Entitled or source-ambiguous product",
"runtime": "enterprise",
"generation": "Account-specific",
"visibility": "selection-required",
"evidenceBoundary": "This path exists specifically to prevent public source signals from being promoted into an invented authentication contract.",
"href": "/authentication#contract-selection-required"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Approved host/path and API generation",
"Server workload and egress identity",
"Secret-provider key version—not its value",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=gis-analytics&platform=rest",
"apiPath": "/api/capability-qualifications?product=gis-analytics&platform=rest",
"downloadPath": "/api/capability-qualifications?product=gis-analytics&platform=rest&download=1",
"matrixPath": "/platforms/matrix?product=gis-analytics&platform=rest",
"productPath": "/docs/gis-analytics",
"platformPath": "/platforms/rest"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · GIS & Analytics · Web qualification
- Identity: `capability-qualification:gis-analytics--web--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=gis-analytics&platform=web
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "gis-analytics--web--qualification",
"matrixCellId": "gis-analytics--web",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "web",
"name": "Web",
"headline": "Build expressive browser maps without surrendering performance or control."
},
"status": "ready-to-qualify",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-geoanalytics-api-web",
"title": "MapmyIndia Geo-Analytics APIs !",
"href": "/reference/mapmyindia-geoanalytics-api-web"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/reference/mapmyindia-interactive-map-js-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-vector-maps-js-web-sdk",
"title": "Mapmyindia Vector Maps JS Web SDK",
"href": "/reference/mapmyindia-vector-maps-js-web-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-insight-sdk",
"title": "Mappls Insight Embeddable Visualizations",
"href": "/reference/mappls-insight-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-maps",
"title": "Sign up for Mappls",
"href": "/reference/mappls-web-maps"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-maps-js",
"title": "Mappls Web Maps JS",
"href": "/reference/mappls-web-maps-js"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-vector-maps-js-web-sdk",
"title": "Mapmyindia Vector Maps JS Web SDK",
"href": "/sdks/mapmyindia-vector-maps-js-web-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-insight-sdk",
"title": "Mappls Insight Embeddable Visualizations",
"href": "/sdks/mappls-insight-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/sdks/mapmyindia-interactive-map-js-api"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "gis-site-selection",
"title": "Build a reproducible site-selection model",
"href": "/tutorials/gis-site-selection"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "geojson-operations-layer",
"title": "Render a governed GeoJSON operations layer",
"href": "/tutorials/geojson-operations-layer"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "web-map",
"title": "Render one accessible web map",
"href": "/quickstart/web-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "web-map-starter",
"title": "Accessible web map host starter",
"href": "/starter-kits/web-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "iframe-and-app-widgets",
"title": "App widgets and iframe embeds",
"runtime": "widget",
"generation": "Selected widget contract",
"visibility": "entitlement-specific",
"evidenceBoundary": "Widget evidence varies by family and generation. The widget builder emits placeholders only and does not accept, persist, or validate credentials.",
"href": "/authentication#iframe-and-app-widgets"
},
{
"slug": "mgis-entitled-browser",
"title": "mGIS browser surfaces",
"runtime": "enterprise",
"generation": "Selected mGIS or MIGIST surface",
"visibility": "entitlement-specific",
"evidenceBoundary": "mGIS evidence spans browser methods, durable workspace descriptions, and a separate sovereign distribution. It does not establish one universal authentication contract.",
"href": "/authentication#mgis-entitled-browser"
},
{
"slug": "contract-selection-required",
"title": "Entitled or source-ambiguous product",
"runtime": "enterprise",
"generation": "Account-specific",
"visibility": "selection-required",
"evidenceBoundary": "This path exists specifically to prevent public source signals from being promoted into an invented authentication contract.",
"href": "/authentication#contract-selection-required"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=gis-analytics&platform=web",
"apiPath": "/api/capability-qualifications?product=gis-analytics&platform=web",
"downloadPath": "/api/capability-qualifications?product=gis-analytics&platform=web&download=1",
"matrixPath": "/platforms/matrix?product=gis-analytics&platform=web",
"productPath": "/docs/gis-analytics",
"platformPath": "/platforms/web"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · GIS & Analytics · Android qualification
- Identity: `capability-qualification:gis-analytics--android--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=gis-analytics&platform=android
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "gis-analytics--android--qualification",
"matrixCellId": "gis-analytics--android",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "android",
"name": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "android-native",
"title": "Create a lifecycle-safe Android map",
"href": "/quickstart/android-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "android-native-starter",
"title": "Android lifecycle adapter starter",
"href": "/starter-kits/android-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=gis-analytics&platform=android",
"apiPath": "/api/capability-qualifications?product=gis-analytics&platform=android",
"downloadPath": "/api/capability-qualifications?product=gis-analytics&platform=android&download=1",
"matrixPath": "/platforms/matrix?product=gis-analytics&platform=android",
"productPath": "/docs/gis-analytics",
"platformPath": "/platforms/android"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · GIS & Analytics · iOS qualification
- Identity: `capability-qualification:gis-analytics--ios--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=gis-analytics&platform=ios
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "gis-analytics--ios--qualification",
"matrixCellId": "gis-analytics--ios",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "ios",
"name": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "ios-native",
"title": "Create a lifecycle-safe iOS map",
"href": "/quickstart/ios-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "ios-native-starter",
"title": "iOS view-ownership starter",
"href": "/starter-kits/ios-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=gis-analytics&platform=ios",
"apiPath": "/api/capability-qualifications?product=gis-analytics&platform=ios",
"downloadPath": "/api/capability-qualifications?product=gis-analytics&platform=ios&download=1",
"matrixPath": "/platforms/matrix?product=gis-analytics&platform=ios",
"productPath": "/docs/gis-analytics",
"platformPath": "/platforms/ios"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · GIS & Analytics · React Native qualification
- Identity: `capability-qualification:gis-analytics--react-native--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=gis-analytics&platform=react-native
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "gis-analytics--react-native--qualification",
"matrixCellId": "gis-analytics--react-native",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "react-native",
"name": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "react-native-map",
"title": "Bridge one map feature across Android and iOS",
"href": "/quickstart/react-native-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "react-native-map-starter",
"title": "React Native bridge-contract starter",
"href": "/starter-kits/react-native-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=gis-analytics&platform=react-native",
"apiPath": "/api/capability-qualifications?product=gis-analytics&platform=react-native",
"downloadPath": "/api/capability-qualifications?product=gis-analytics&platform=react-native&download=1",
"matrixPath": "/platforms/matrix?product=gis-analytics&platform=react-native",
"productPath": "/docs/gis-analytics",
"platformPath": "/platforms/react-native"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · GIS & Analytics · Flutter qualification
- Identity: `capability-qualification:gis-analytics--flutter--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=gis-analytics&platform=flutter
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "gis-analytics--flutter--qualification",
"matrixCellId": "gis-analytics--flutter",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "flutter",
"name": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "flutter-map",
"title": "Build a native-backed Flutter place picker",
"href": "/quickstart/flutter-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "flutter-map-starter",
"title": "Flutter place-selection starter",
"href": "/starter-kits/flutter-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=gis-analytics&platform=flutter",
"apiPath": "/api/capability-qualifications?product=gis-analytics&platform=flutter",
"downloadPath": "/api/capability-qualifications?product=gis-analytics&platform=flutter&download=1",
"matrixPath": "/platforms/matrix?product=gis-analytics&platform=flutter",
"productPath": "/docs/gis-analytics",
"platformPath": "/platforms/flutter"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · GIS & Analytics · Cordova qualification
- Identity: `capability-qualification:gis-analytics--cordova--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=gis-analytics&platform=cordova
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "gis-analytics--cordova--qualification",
"matrixCellId": "gis-analytics--cordova",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "cordova",
"name": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance",
"title": "Stabilize a Cordova map before migration",
"href": "/quickstart/cordova-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance-starter",
"title": "Cordova stabilization starter",
"href": "/starter-kits/cordova-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=gis-analytics&platform=cordova",
"apiPath": "/api/capability-qualifications?product=gis-analytics&platform=cordova",
"downloadPath": "/api/capability-qualifications?product=gis-analytics&platform=cordova&download=1",
"matrixPath": "/platforms/matrix?product=gis-analytics&platform=cordova",
"productPath": "/docs/gis-analytics",
"platformPath": "/platforms/cordova"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · GIS & Analytics · Xamarin qualification
- Identity: `capability-qualification:gis-analytics--xamarin--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=gis-analytics&platform=xamarin
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "gis-analytics--xamarin--qualification",
"matrixCellId": "gis-analytics--xamarin",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "xamarin",
"name": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance",
"title": "Extract a Xamarin map integration for replacement",
"href": "/quickstart/xamarin-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance-starter",
"title": "Xamarin extraction starter",
"href": "/starter-kits/xamarin-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=gis-analytics&platform=xamarin",
"apiPath": "/api/capability-qualifications?product=gis-analytics&platform=xamarin",
"downloadPath": "/api/capability-qualifications?product=gis-analytics&platform=xamarin&download=1",
"matrixPath": "/platforms/matrix?product=gis-analytics&platform=xamarin",
"productPath": "/docs/gis-analytics",
"platformPath": "/platforms/xamarin"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · GIS & Analytics · Linux qualification
- Identity: `capability-qualification:gis-analytics--linux--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=gis-analytics&platform=linux
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "gis-analytics--linux--qualification",
"matrixCellId": "gis-analytics--linux",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "linux",
"name": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "entitled-runtime",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "linux-embedded",
"title": "Boot a supervised embedded map client",
"href": "/quickstart/linux-embedded"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "linux-embedded-starter",
"title": "Embedded Linux supervisor starter",
"href": "/starter-kits/linux-embedded-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Hardware/OS/runtime and protected distribution identity",
"License or entitlement reference—not its contents",
"Artifact checksum, update channel, and rollback owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=gis-analytics&platform=linux",
"apiPath": "/api/capability-qualifications?product=gis-analytics&platform=linux",
"downloadPath": "/api/capability-qualifications?product=gis-analytics&platform=linux&download=1",
"matrixPath": "/platforms/matrix?product=gis-analytics&platform=linux",
"productPath": "/docs/gis-analytics",
"platformPath": "/platforms/linux"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · GIS & Analytics · Automotive qualification
- Identity: `capability-qualification:gis-analytics--automotive--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=gis-analytics&platform=automotive
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "gis-analytics--automotive--qualification",
"matrixCellId": "gis-analytics--automotive",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "automotive",
"name": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "entitled-runtime",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation",
"title": "Simulate one recoverable navigation session",
"href": "/quickstart/automotive-navigation"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation-starter",
"title": "Automotive release-manifest starter",
"href": "/starter-kits/automotive-navigation-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Hardware/OS/runtime and protected distribution identity",
"License or entitlement reference—not its contents",
"Artifact checksum, update channel, and rollback owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=gis-analytics&platform=automotive",
"apiPath": "/api/capability-qualifications?product=gis-analytics&platform=automotive",
"downloadPath": "/api/capability-qualifications?product=gis-analytics&platform=automotive&download=1",
"matrixPath": "/platforms/matrix?product=gis-analytics&platform=automotive",
"productPath": "/docs/gis-analytics",
"platformPath": "/platforms/automotive"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · GIS & Analytics · Widgets qualification
- Identity: `capability-qualification:gis-analytics--widgets--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=gis-analytics&platform=widgets
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "gis-analytics--widgets--qualification",
"matrixCellId": "gis-analytics--widgets",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "widgets",
"name": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate."
},
"status": "selection-required",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-selection-required",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "widgets-place",
"title": "Embed a place journey with an owned fallback",
"href": "/quickstart/widgets-place"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "widgets-place-starter",
"title": "Widget journey host starter",
"href": "/starter-kits/widgets-place-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "iframe-and-app-widgets",
"title": "App widgets and iframe embeds",
"runtime": "widget",
"generation": "Selected widget contract",
"visibility": "entitlement-specific",
"evidenceBoundary": "Widget evidence varies by family and generation. The widget builder emits placeholders only and does not accept, persist, or validate credentials.",
"href": "/authentication#iframe-and-app-widgets"
},
{
"slug": "mgis-entitled-browser",
"title": "mGIS browser surfaces",
"runtime": "enterprise",
"generation": "Selected mGIS or MIGIST surface",
"visibility": "entitlement-specific",
"evidenceBoundary": "mGIS evidence spans browser methods, durable workspace descriptions, and a separate sovereign distribution. It does not establish one universal authentication contract.",
"href": "/authentication#mgis-entitled-browser"
},
{
"slug": "contract-selection-required",
"title": "Entitled or source-ambiguous product",
"runtime": "enterprise",
"generation": "Account-specific",
"visibility": "selection-required",
"evidenceBoundary": "This path exists specifically to prevent public source signals from being promoted into an invented authentication contract.",
"href": "/authentication#contract-selection-required"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The product lists this platform, but exact product-platform implementation evidence is missing.",
"Select an exact source, distribution, authentication generation, and account contract.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=gis-analytics&platform=widgets",
"apiPath": "/api/capability-qualifications?product=gis-analytics&platform=widgets",
"downloadPath": "/api/capability-qualifications?product=gis-analytics&platform=widgets&download=1",
"matrixPath": "/platforms/matrix?product=gis-analytics&platform=widgets",
"productPath": "/docs/gis-analytics",
"platformPath": "/platforms/widgets"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · GIS & Analytics · Deep links qualification
- Identity: `capability-qualification:gis-analytics--deep-links--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=gis-analytics&platform=deep-links
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "gis-analytics--deep-links--qualification",
"matrixCellId": "gis-analytics--deep-links",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "deep-links",
"name": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "deep-links",
"title": "Ship one zero-SDK Mappls hand-off",
"href": "/quickstart/deep-links"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "deep-links-starter",
"title": "Deep-link handoff starter",
"href": "/starter-kits/deep-links-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=gis-analytics&platform=deep-links",
"apiPath": "/api/capability-qualifications?product=gis-analytics&platform=deep-links",
"downloadPath": "/api/capability-qualifications?product=gis-analytics&platform=deep-links&download=1",
"matrixPath": "/platforms/matrix?product=gis-analytics&platform=deep-links",
"productPath": "/docs/gis-analytics",
"platformPath": "/platforms/deep-links"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · GIS & Analytics · MCP qualification
- Identity: `capability-qualification:gis-analytics--mcp--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=gis-analytics&platform=mcp
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "gis-analytics--mcp--qualification",
"matrixCellId": "gis-analytics--mcp",
"product": {
"slug": "gis-analytics",
"name": "GIS & Analytics",
"summary": "Spatial data, analysis, maps, dashboards, and embeddable location intelligence.",
"category": "Intelligence",
"accent": "#17a8e3"
},
"platform": {
"slug": "mcp",
"name": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control."
},
"status": "ready-to-qualify",
"stateModel": "hybrid",
"integrationLane": "ai-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ai-apis",
"title": "MAPPLS AI / ML APIs",
"href": "/reference/mappls-ai-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "skydnn-aiapi-docs",
"title": "Skydnn AI APIs",
"href": "/reference/skydnn-aiapi-docs"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "mcp-agent",
"title": "Connect a read-only Mappls agent",
"href": "/quickstart/mcp-agent"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "mcp-agent-starter",
"title": "MCP client policy starter",
"href": "/starter-kits/mcp-agent-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "retail-site-lab",
"title": "Retail Site Lab",
"href": "/samples/retail-site-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "incident-dispatch",
"title": "Incident Dispatch",
"href": "/samples/incident-dispatch"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "map-story",
"title": "Map Story",
"href": "/samples/map-story"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-analysis",
"title": "Governed spatial analysis",
"href": "/journeys/governed-spatial-analysis"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "mgis-entitled-browser",
"title": "mGIS browser surfaces",
"runtime": "enterprise",
"generation": "Selected mGIS or MIGIST surface",
"visibility": "entitlement-specific",
"evidenceBoundary": "mGIS evidence spans browser methods, durable workspace descriptions, and a separate sovereign distribution. It does not establish one universal authentication contract.",
"href": "/authentication#mgis-entitled-browser"
},
{
"slug": "mcp-gateway-and-provider",
"title": "MCP and AI-native clients",
"runtime": "mcp",
"generation": "MCP offline or live-read profile",
"visibility": "selection-required",
"evidenceBoundary": "MCP documentation tools need no provider credential. Live-read tools delegate to exact product contracts; the MCP server is not an authorization server and exposes no writes.",
"href": "/authentication#mcp-gateway-and-provider"
},
{
"slug": "contract-selection-required",
"title": "Entitled or source-ambiguous product",
"runtime": "enterprise",
"generation": "Account-specific",
"visibility": "selection-required",
"evidenceBoundary": "This path exists specifically to prevent public source signals from being promoted into an invented authentication contract.",
"href": "/authentication#contract-selection-required"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"MCP deployment and transport identity",
"OAuth resource, issuer, audience, client, and profile",
"Exact tool allowlist, human boundary, and durable-state owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=gis-analytics&platform=mcp",
"apiPath": "/api/capability-qualifications?product=gis-analytics&platform=mcp",
"downloadPath": "/api/capability-qualifications?product=gis-analytics&platform=mcp&download=1",
"matrixPath": "/platforms/matrix?product=gis-analytics&platform=mcp",
"productPath": "/docs/gis-analytics",
"platformPath": "/platforms/mcp"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · App Widgets & Deep Links · REST qualification
- Identity: `capability-qualification:app-widgets-deep-links--rest--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=app-widgets-deep-links&platform=rest
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "app-widgets-deep-links--rest--qualification",
"matrixCellId": "app-widgets-deep-links--rest",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "rest",
"name": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack."
},
"status": "not-listed",
"stateModel": "stateless",
"integrationLane": "trusted-service",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "rest-api",
"title": "Your first trusted Mappls request",
"href": "/quickstart/rest-api"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "rest-api-starter",
"title": "Trusted REST service starter",
"href": "/starter-kits/rest-api-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Approved host/path and API generation",
"Server workload and egress identity",
"Secret-provider key version—not its value",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=app-widgets-deep-links&platform=rest",
"apiPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=rest",
"downloadPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=rest&download=1",
"matrixPath": "/platforms/matrix?product=app-widgets-deep-links&platform=rest",
"productPath": "/docs/app-widgets-deep-links",
"platformPath": "/platforms/rest"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · App Widgets & Deep Links · Web qualification
- Identity: `capability-qualification:app-widgets-deep-links--web--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=app-widgets-deep-links&platform=web
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "app-widgets-deep-links--web--qualification",
"matrixCellId": "app-widgets-deep-links--web",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "web",
"name": "Web",
"headline": "Build expressive browser maps without surrendering performance or control."
},
"status": "ready-to-qualify",
"stateModel": "stateless",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/reference/mapmyindia-interactive-map-js-api"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-web-plugins",
"title": "Mapmyindia Intouch Web Plugins",
"href": "/reference/mapmyindia-intouch-web-plugins"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-nearby-covid-places",
"title": "Mapmyindia Nearby Covid Places",
"href": "/reference/mapmyindia-nearby-covid-places"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-vector-maps-js-web-sdk",
"title": "Mapmyindia Vector Maps JS Web SDK",
"href": "/reference/mapmyindia-vector-maps-js-web-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-maps",
"title": "Sign up for Mappls",
"href": "/reference/mappls-web-maps"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-maps-js",
"title": "Mappls Web Maps JS",
"href": "/reference/mappls-web-maps-js"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-plugins",
"title": "Mappls Web Plugins",
"href": "/reference/mappls-web-plugins"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-vector-maps-js-web-sdk",
"title": "Mapmyindia Vector Maps JS Web SDK",
"href": "/sdks/mapmyindia-vector-maps-js-web-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-interactive-map-js-api",
"title": "MapmyIndia Interactive Map JS API !",
"href": "/sdks/mapmyindia-interactive-map-js-api"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "web-widget-place-picker",
"title": "Embed a place picker widget",
"href": "/tutorials/web-widget-place-picker"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "web-map",
"title": "Render one accessible web map",
"href": "/quickstart/web-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "web-map-starter",
"title": "Accessible web map host starter",
"href": "/starter-kits/web-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "iframe-and-app-widgets",
"title": "App widgets and iframe embeds",
"runtime": "widget",
"generation": "Selected widget contract",
"visibility": "entitlement-specific",
"evidenceBoundary": "Widget evidence varies by family and generation. The widget builder emits placeholders only and does not accept, persist, or validate credentials.",
"href": "/authentication#iframe-and-app-widgets"
},
{
"slug": "deep-links-no-credential",
"title": "Mappls deep links",
"runtime": "deep-link",
"generation": "Current documented link shape",
"visibility": "none",
"evidenceBoundary": "Deep links are documented outside the REST contract catalog and carry no credential.",
"href": "/authentication#deep-links-no-credential"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=app-widgets-deep-links&platform=web",
"apiPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=web",
"downloadPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=web&download=1",
"matrixPath": "/platforms/matrix?product=app-widgets-deep-links&platform=web",
"productPath": "/docs/app-widgets-deep-links",
"platformPath": "/platforms/web"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · App Widgets & Deep Links · Android qualification
- Identity: `capability-qualification:app-widgets-deep-links--android--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=app-widgets-deep-links&platform=android
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "app-widgets-deep-links--android--qualification",
"matrixCellId": "app-widgets-deep-links--android",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "android",
"name": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline."
},
"status": "ready-to-qualify",
"stateModel": "stateless",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-android-sdk",
"title": "Mapmyindia Intouch Android SDK",
"href": "/reference/mapmyindia-intouch-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/reference/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-compose-demo",
"title": "Mappls Vector Map Android SDK JetPack Compose",
"href": "/reference/mappls-android-compose-demo"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/reference/mappls-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/reference/mappls-camera-sdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-android-sdk",
"title": "Mappls Intouch Android SDK",
"href": "/reference/mappls-intouch-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-location-capture-android-sdk",
"title": "Mappls Location Capture SDK",
"href": "/reference/mappls-location-capture-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-android-sdk",
"title": "Mapmyindia Intouch Android SDK",
"href": "/sdks/mapmyindia-intouch-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/sdks/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/sdks/mappls-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/sdks/mappls-camera-sdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-intouch-android-sdk",
"title": "Mappls Intouch Android SDK",
"href": "/sdks/mappls-intouch-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-location-capture-android-sdk",
"title": "Mappls Location Capture SDK",
"href": "/sdks/mappls-location-capture-android-sdk"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "android-native",
"title": "Create a lifecycle-safe Android map",
"href": "/quickstart/android-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "android-native-starter",
"title": "Android lifecycle adapter starter",
"href": "/starter-kits/android-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "deep-links-no-credential",
"title": "Mappls deep links",
"runtime": "deep-link",
"generation": "Current documented link shape",
"visibility": "none",
"evidenceBoundary": "Deep links are documented outside the REST contract catalog and carry no credential.",
"href": "/authentication#deep-links-no-credential"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=app-widgets-deep-links&platform=android",
"apiPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=android",
"downloadPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=android&download=1",
"matrixPath": "/platforms/matrix?product=app-widgets-deep-links&platform=android",
"productPath": "/docs/app-widgets-deep-links",
"platformPath": "/platforms/android"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · App Widgets & Deep Links · iOS qualification
- Identity: `capability-qualification:app-widgets-deep-links--ios--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=app-widgets-deep-links&platform=ios
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "app-widgets-deep-links--ios--qualification",
"matrixCellId": "app-widgets-deep-links--ios",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "ios",
"name": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks."
},
"status": "ready-to-qualify",
"stateModel": "stateless",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-ios",
"title": "Mapmyindia Maps VectorSDK IOS",
"href": "/reference/mapmyindia-maps-vectorsdk-ios"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/reference/mappls-drivingrange-plugin-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution-base",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/reference/mappls-drivingrange-plugin-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution",
"title": "MapplsFeedbackKit for iOS",
"href": "/reference/mappls-feedback-kit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution-base",
"title": "MapplsFeedbackKit for iOS",
"href": "/reference/mappls-feedback-kit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/reference/mappls-feedback-uikit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution-base",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/reference/mappls-feedback-uikit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/reference/mappls-geoanalytics-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution-base",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/reference/mappls-geoanalytics-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/reference/mappls-geofence-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution-base",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/reference/mappls-geofence-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/reference/mappls-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-move-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/reference/mappls-nearby-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution-base",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/reference/mappls-nearby-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/reference/mappls-raster-catalogue-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution-base",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/reference/mappls-raster-catalogue-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-move-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-ios",
"title": "Mapmyindia Maps VectorSDK IOS",
"href": "/sdks/mapmyindia-maps-vectorsdk-ios"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/sdks/mappls-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/sdks/mappls-nearby-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution-base",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/sdks/mappls-nearby-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/sdks/mappls-drivingrange-plugin-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution-base",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/sdks/mappls-drivingrange-plugin-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution",
"title": "MapplsFeedbackKit for iOS",
"href": "/sdks/mappls-feedback-kit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution-base",
"title": "MapplsFeedbackKit for iOS",
"href": "/sdks/mappls-feedback-kit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/sdks/mappls-feedback-uikit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution-base",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/sdks/mappls-feedback-uikit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/sdks/mappls-geoanalytics-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution-base",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/sdks/mappls-geoanalytics-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/sdks/mappls-geofence-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution-base",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/sdks/mappls-geofence-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/sdks/mappls-raster-catalogue-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution-base",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/sdks/mappls-raster-catalogue-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "ios-sdk-production-readiness",
"title": "Qualify an iOS Mappls release",
"href": "/tutorials/ios-sdk-production-readiness"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "ios-direction-geofence-handoffs",
"title": "Build restart-safe iOS direction and geofence handoffs",
"href": "/tutorials/ios-direction-geofence-handoffs"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "ios-native",
"title": "Create a lifecycle-safe iOS map",
"href": "/quickstart/ios-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "ios-native-starter",
"title": "iOS view-ownership starter",
"href": "/starter-kits/ios-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "deep-links-no-credential",
"title": "Mappls deep links",
"runtime": "deep-link",
"generation": "Current documented link shape",
"visibility": "none",
"evidenceBoundary": "Deep links are documented outside the REST contract catalog and carry no credential.",
"href": "/authentication#deep-links-no-credential"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=app-widgets-deep-links&platform=ios",
"apiPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=ios",
"downloadPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=ios&download=1",
"matrixPath": "/platforms/matrix?product=app-widgets-deep-links&platform=ios",
"productPath": "/docs/app-widgets-deep-links",
"platformPath": "/platforms/ios"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · App Widgets & Deep Links · React Native qualification
- Identity: `capability-qualification:app-widgets-deep-links--react-native--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=app-widgets-deep-links&platform=react-native
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "app-widgets-deep-links--react-native--qualification",
"matrixCellId": "app-widgets-deep-links--react-native",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "react-native",
"name": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms."
},
"status": "not-listed",
"stateModel": "stateless",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "react-native-map",
"title": "Bridge one map feature across Android and iOS",
"href": "/quickstart/react-native-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "react-native-map-starter",
"title": "React Native bridge-contract starter",
"href": "/starter-kits/react-native-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=app-widgets-deep-links&platform=react-native",
"apiPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=react-native",
"downloadPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=react-native&download=1",
"matrixPath": "/platforms/matrix?product=app-widgets-deep-links&platform=react-native",
"productPath": "/docs/app-widgets-deep-links",
"platformPath": "/platforms/react-native"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · App Widgets & Deep Links · Flutter qualification
- Identity: `capability-qualification:app-widgets-deep-links--flutter--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=app-widgets-deep-links&platform=flutter
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "app-widgets-deep-links--flutter--qualification",
"matrixCellId": "app-widgets-deep-links--flutter",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "flutter",
"name": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath."
},
"status": "not-listed",
"stateModel": "stateless",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "flutter-map",
"title": "Build a native-backed Flutter place picker",
"href": "/quickstart/flutter-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "flutter-map-starter",
"title": "Flutter place-selection starter",
"href": "/starter-kits/flutter-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=app-widgets-deep-links&platform=flutter",
"apiPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=flutter",
"downloadPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=flutter&download=1",
"matrixPath": "/platforms/matrix?product=app-widgets-deep-links&platform=flutter",
"productPath": "/docs/app-widgets-deep-links",
"platformPath": "/platforms/flutter"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · App Widgets & Deep Links · Cordova qualification
- Identity: `capability-qualification:app-widgets-deep-links--cordova--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=app-widgets-deep-links&platform=cordova
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "app-widgets-deep-links--cordova--qualification",
"matrixCellId": "app-widgets-deep-links--cordova",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "cordova",
"name": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path."
},
"status": "not-listed",
"stateModel": "stateless",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance",
"title": "Stabilize a Cordova map before migration",
"href": "/quickstart/cordova-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance-starter",
"title": "Cordova stabilization starter",
"href": "/starter-kits/cordova-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=app-widgets-deep-links&platform=cordova",
"apiPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=cordova",
"downloadPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=cordova&download=1",
"matrixPath": "/platforms/matrix?product=app-widgets-deep-links&platform=cordova",
"productPath": "/docs/app-widgets-deep-links",
"platformPath": "/platforms/cordova"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · App Widgets & Deep Links · Xamarin qualification
- Identity: `capability-qualification:app-widgets-deep-links--xamarin--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=app-widgets-deep-links&platform=xamarin
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "app-widgets-deep-links--xamarin--qualification",
"matrixCellId": "app-widgets-deep-links--xamarin",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "xamarin",
"name": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior."
},
"status": "not-listed",
"stateModel": "stateless",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance",
"title": "Extract a Xamarin map integration for replacement",
"href": "/quickstart/xamarin-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance-starter",
"title": "Xamarin extraction starter",
"href": "/starter-kits/xamarin-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=app-widgets-deep-links&platform=xamarin",
"apiPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=xamarin",
"downloadPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=xamarin&download=1",
"matrixPath": "/platforms/matrix?product=app-widgets-deep-links&platform=xamarin",
"productPath": "/docs/app-widgets-deep-links",
"platformPath": "/platforms/xamarin"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · App Widgets & Deep Links · Linux qualification
- Identity: `capability-qualification:app-widgets-deep-links--linux--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=app-widgets-deep-links&platform=linux
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "app-widgets-deep-links--linux--qualification",
"matrixCellId": "app-widgets-deep-links--linux",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "linux",
"name": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems."
},
"status": "not-listed",
"stateModel": "stateless",
"integrationLane": "entitled-runtime",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "linux-embedded",
"title": "Boot a supervised embedded map client",
"href": "/quickstart/linux-embedded"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "linux-embedded-starter",
"title": "Embedded Linux supervisor starter",
"href": "/starter-kits/linux-embedded-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Hardware/OS/runtime and protected distribution identity",
"License or entitlement reference—not its contents",
"Artifact checksum, update channel, and rollback owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=app-widgets-deep-links&platform=linux",
"apiPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=linux",
"downloadPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=linux&download=1",
"matrixPath": "/platforms/matrix?product=app-widgets-deep-links&platform=linux",
"productPath": "/docs/app-widgets-deep-links",
"platformPath": "/platforms/linux"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · App Widgets & Deep Links · Automotive qualification
- Identity: `capability-qualification:app-widgets-deep-links--automotive--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=app-widgets-deep-links&platform=automotive
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "app-widgets-deep-links--automotive--qualification",
"matrixCellId": "app-widgets-deep-links--automotive",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "automotive",
"name": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen."
},
"status": "not-listed",
"stateModel": "stateless",
"integrationLane": "entitled-runtime",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation",
"title": "Simulate one recoverable navigation session",
"href": "/quickstart/automotive-navigation"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation-starter",
"title": "Automotive release-manifest starter",
"href": "/starter-kits/automotive-navigation-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Hardware/OS/runtime and protected distribution identity",
"License or entitlement reference—not its contents",
"Artifact checksum, update channel, and rollback owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=app-widgets-deep-links&platform=automotive",
"apiPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=automotive",
"downloadPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=automotive&download=1",
"matrixPath": "/platforms/matrix?product=app-widgets-deep-links&platform=automotive",
"productPath": "/docs/app-widgets-deep-links",
"platformPath": "/platforms/automotive"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · App Widgets & Deep Links · Widgets qualification
- Identity: `capability-qualification:app-widgets-deep-links--widgets--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=app-widgets-deep-links&platform=widgets
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "app-widgets-deep-links--widgets--qualification",
"matrixCellId": "app-widgets-deep-links--widgets",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "widgets",
"name": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate."
},
"status": "ready-to-qualify",
"stateModel": "stateless",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-web-plugins",
"title": "Mapmyindia Intouch Web Plugins",
"href": "/reference/mapmyindia-intouch-web-plugins"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-app-widgets",
"title": "Mappls App Widgets",
"href": "/reference/mappls-app-widgets"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-plugins",
"title": "Mappls Web Plugins",
"href": "/reference/mappls-web-plugins"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "web-widget-place-picker",
"title": "Embed a place picker widget",
"href": "/tutorials/web-widget-place-picker"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "widget-host-production",
"title": "Operate widgets as untrusted lifecycle surfaces",
"href": "/tutorials/widget-host-production"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "widgets-place",
"title": "Embed a place journey with an owned fallback",
"href": "/quickstart/widgets-place"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "widgets-place-starter",
"title": "Widget journey host starter",
"href": "/starter-kits/widgets-place-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "iframe-and-app-widgets",
"title": "App widgets and iframe embeds",
"runtime": "widget",
"generation": "Selected widget contract",
"visibility": "entitlement-specific",
"evidenceBoundary": "Widget evidence varies by family and generation. The widget builder emits placeholders only and does not accept, persist, or validate credentials.",
"href": "/authentication#iframe-and-app-widgets"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=app-widgets-deep-links&platform=widgets",
"apiPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=widgets",
"downloadPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=widgets&download=1",
"matrixPath": "/platforms/matrix?product=app-widgets-deep-links&platform=widgets",
"productPath": "/docs/app-widgets-deep-links",
"platformPath": "/platforms/widgets"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · App Widgets & Deep Links · Deep links qualification
- Identity: `capability-qualification:app-widgets-deep-links--deep-links--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=app-widgets-deep-links&platform=deep-links
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "app-widgets-deep-links--deep-links--qualification",
"matrixCellId": "app-widgets-deep-links--deep-links",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "deep-links",
"name": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement."
},
"status": "ready-to-qualify",
"stateModel": "stateless",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-intouch-web-plugins",
"title": "Mapmyindia Intouch Web Plugins",
"href": "/reference/mapmyindia-intouch-web-plugins"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-app-widgets",
"title": "Mappls App Widgets",
"href": "/reference/mappls-app-widgets"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-plugins",
"title": "Mappls Web Plugins",
"href": "/reference/mappls-web-plugins"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "deep-link-campaign",
"title": "Create a zero-SDK location campaign",
"href": "/tutorials/deep-link-campaign"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "navigation-deep-link",
"title": "Hand off to navigation with a resilient deep link",
"href": "/tutorials/navigation-deep-link"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "deep-link-attribution-resilience",
"title": "Operate deep links across every hand-off",
"href": "/tutorials/deep-link-attribution-resilience"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "deep-links",
"title": "Ship one zero-SDK Mappls hand-off",
"href": "/quickstart/deep-links"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "deep-links-starter",
"title": "Deep-link handoff starter",
"href": "/starter-kits/deep-links-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "deep-links-no-credential",
"title": "Mappls deep links",
"runtime": "deep-link",
"generation": "Current documented link shape",
"visibility": "none",
"evidenceBoundary": "Deep links are documented outside the REST contract catalog and carry no credential.",
"href": "/authentication#deep-links-no-credential"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=app-widgets-deep-links&platform=deep-links",
"apiPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=deep-links",
"downloadPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=deep-links&download=1",
"matrixPath": "/platforms/matrix?product=app-widgets-deep-links&platform=deep-links",
"productPath": "/docs/app-widgets-deep-links",
"platformPath": "/platforms/deep-links"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · App Widgets & Deep Links · MCP qualification
- Identity: `capability-qualification:app-widgets-deep-links--mcp--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=app-widgets-deep-links&platform=mcp
- State model: stateless
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "app-widgets-deep-links--mcp--qualification",
"matrixCellId": "app-widgets-deep-links--mcp",
"product": {
"slug": "app-widgets-deep-links",
"name": "App Widgets & Deep Links",
"summary": "Embeddable Mappls experiences for places, directions, 3D views, RealView, and app hand-off.",
"category": "Experience",
"accent": "#ff4f64"
},
"platform": {
"slug": "mcp",
"name": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control."
},
"status": "not-listed",
"stateModel": "stateless",
"integrationLane": "ai-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "mcp-agent",
"title": "Connect a read-only Mappls agent",
"href": "/quickstart/mcp-agent"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "mcp-agent-starter",
"title": "MCP client policy starter",
"href": "/starter-kits/mcp-agent-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "store-locator",
"title": "Store Locator",
"href": "/samples/store-locator"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "trip-planner",
"title": "Weekend Trip Planner",
"href": "/samples/trip-planner"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "widget-journey-host",
"title": "Widget Journey Host",
"href": "/samples/widget-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "deep-link-journey-host",
"title": "Deep-link & Native UI Journey Host",
"href": "/samples/deep-link-journey-host"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "widget-selection-session",
"title": "Application-owned widget selection",
"href": "/journeys/widget-selection-session"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "realview-remote-inspection",
"title": "Entitled RealView remote inspection",
"href": "/journeys/realview-remote-inspection"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"MCP deployment and transport identity",
"OAuth resource, issuer, audience, client, and profile",
"Exact tool allowlist, human boundary, and durable-state owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "request-replay",
"title": "Safe request replay",
"purpose": "Show that repeated safe requests remain bounded and do not create hidden application state.",
"expectedEvidence": "Inputs, timeout, response classification, and request provenance are reproducible without persisting provider objects.",
"recovery": "Normalize the adapter contract and keep business state outside the provider response."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=app-widgets-deep-links&platform=mcp",
"apiPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=mcp",
"downloadPath": "/api/capability-qualifications?product=app-widgets-deep-links&platform=mcp&download=1",
"matrixPath": "/platforms/matrix?product=app-widgets-deep-links&platform=mcp",
"productPath": "/docs/app-widgets-deep-links",
"platformPath": "/platforms/mcp"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Offline & Automotive · REST qualification
- Identity: `capability-qualification:offline-automotive--rest--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=offline-automotive&platform=rest
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "offline-automotive--rest--qualification",
"matrixCellId": "offline-automotive--rest",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "rest",
"name": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "trusted-service",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "rest-api",
"title": "Your first trusted Mappls request",
"href": "/quickstart/rest-api"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "rest-api-starter",
"title": "Trusted REST service starter",
"href": "/starter-kits/rest-api-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Approved host/path and API generation",
"Server workload and egress identity",
"Secret-provider key version—not its value",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=offline-automotive&platform=rest",
"apiPath": "/api/capability-qualifications?product=offline-automotive&platform=rest",
"downloadPath": "/api/capability-qualifications?product=offline-automotive&platform=rest&download=1",
"matrixPath": "/platforms/matrix?product=offline-automotive&platform=rest",
"productPath": "/docs/offline-automotive",
"platformPath": "/platforms/rest"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Offline & Automotive · Web qualification
- Identity: `capability-qualification:offline-automotive--web--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=offline-automotive&platform=web
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "offline-automotive--web--qualification",
"matrixCellId": "offline-automotive--web",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "web",
"name": "Web",
"headline": "Build expressive browser maps without surrendering performance or control."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "web-map",
"title": "Render one accessible web map",
"href": "/quickstart/web-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "web-map-starter",
"title": "Accessible web map host starter",
"href": "/starter-kits/web-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=offline-automotive&platform=web",
"apiPath": "/api/capability-qualifications?product=offline-automotive&platform=web",
"downloadPath": "/api/capability-qualifications?product=offline-automotive&platform=web&download=1",
"matrixPath": "/platforms/matrix?product=offline-automotive&platform=web",
"productPath": "/docs/offline-automotive",
"platformPath": "/platforms/web"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Offline & Automotive · Android qualification
- Identity: `capability-qualification:offline-automotive--android--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=offline-automotive&platform=android
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "offline-automotive--android--qualification",
"matrixCellId": "offline-automotive--android",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "android",
"name": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline."
},
"status": "ready-to-qualify",
"stateModel": "stateful",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/reference/mappls-camera-sdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/sdks/mappls-camera-sdk-android"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "android-native",
"title": "Create a lifecycle-safe Android map",
"href": "/quickstart/android-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "android-native-starter",
"title": "Android lifecycle adapter starter",
"href": "/starter-kits/android-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "offline-device-activation",
"title": "Offline and automotive activation",
"runtime": "device",
"generation": "Entitled runtime and data release",
"visibility": "entitlement-specific",
"evidenceBoundary": "The public snapshot does not establish a universal offline/automotive credential or safety contract. Entitled release material is authoritative.",
"href": "/authentication#offline-device-activation"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=offline-automotive&platform=android",
"apiPath": "/api/capability-qualifications?product=offline-automotive&platform=android",
"downloadPath": "/api/capability-qualifications?product=offline-automotive&platform=android&download=1",
"matrixPath": "/platforms/matrix?product=offline-automotive&platform=android",
"productPath": "/docs/offline-automotive",
"platformPath": "/platforms/android"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Offline & Automotive · iOS qualification
- Identity: `capability-qualification:offline-automotive--ios--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=offline-automotive&platform=ios
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "offline-automotive--ios--qualification",
"matrixCellId": "offline-automotive--ios",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "ios",
"name": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "ios-native",
"title": "Create a lifecycle-safe iOS map",
"href": "/quickstart/ios-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "ios-native-starter",
"title": "iOS view-ownership starter",
"href": "/starter-kits/ios-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=offline-automotive&platform=ios",
"apiPath": "/api/capability-qualifications?product=offline-automotive&platform=ios",
"downloadPath": "/api/capability-qualifications?product=offline-automotive&platform=ios&download=1",
"matrixPath": "/platforms/matrix?product=offline-automotive&platform=ios",
"productPath": "/docs/offline-automotive",
"platformPath": "/platforms/ios"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Offline & Automotive · React Native qualification
- Identity: `capability-qualification:offline-automotive--react-native--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=offline-automotive&platform=react-native
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "offline-automotive--react-native--qualification",
"matrixCellId": "offline-automotive--react-native",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "react-native",
"name": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "react-native-map",
"title": "Bridge one map feature across Android and iOS",
"href": "/quickstart/react-native-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "react-native-map-starter",
"title": "React Native bridge-contract starter",
"href": "/starter-kits/react-native-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=offline-automotive&platform=react-native",
"apiPath": "/api/capability-qualifications?product=offline-automotive&platform=react-native",
"downloadPath": "/api/capability-qualifications?product=offline-automotive&platform=react-native&download=1",
"matrixPath": "/platforms/matrix?product=offline-automotive&platform=react-native",
"productPath": "/docs/offline-automotive",
"platformPath": "/platforms/react-native"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Offline & Automotive · Flutter qualification
- Identity: `capability-qualification:offline-automotive--flutter--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=offline-automotive&platform=flutter
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "offline-automotive--flutter--qualification",
"matrixCellId": "offline-automotive--flutter",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "flutter",
"name": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "flutter-map",
"title": "Build a native-backed Flutter place picker",
"href": "/quickstart/flutter-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "flutter-map-starter",
"title": "Flutter place-selection starter",
"href": "/starter-kits/flutter-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=offline-automotive&platform=flutter",
"apiPath": "/api/capability-qualifications?product=offline-automotive&platform=flutter",
"downloadPath": "/api/capability-qualifications?product=offline-automotive&platform=flutter&download=1",
"matrixPath": "/platforms/matrix?product=offline-automotive&platform=flutter",
"productPath": "/docs/offline-automotive",
"platformPath": "/platforms/flutter"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Offline & Automotive · Cordova qualification
- Identity: `capability-qualification:offline-automotive--cordova--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=offline-automotive&platform=cordova
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "offline-automotive--cordova--qualification",
"matrixCellId": "offline-automotive--cordova",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "cordova",
"name": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance",
"title": "Stabilize a Cordova map before migration",
"href": "/quickstart/cordova-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance-starter",
"title": "Cordova stabilization starter",
"href": "/starter-kits/cordova-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=offline-automotive&platform=cordova",
"apiPath": "/api/capability-qualifications?product=offline-automotive&platform=cordova",
"downloadPath": "/api/capability-qualifications?product=offline-automotive&platform=cordova&download=1",
"matrixPath": "/platforms/matrix?product=offline-automotive&platform=cordova",
"productPath": "/docs/offline-automotive",
"platformPath": "/platforms/cordova"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Offline & Automotive · Xamarin qualification
- Identity: `capability-qualification:offline-automotive--xamarin--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=offline-automotive&platform=xamarin
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "offline-automotive--xamarin--qualification",
"matrixCellId": "offline-automotive--xamarin",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "xamarin",
"name": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance",
"title": "Extract a Xamarin map integration for replacement",
"href": "/quickstart/xamarin-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance-starter",
"title": "Xamarin extraction starter",
"href": "/starter-kits/xamarin-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=offline-automotive&platform=xamarin",
"apiPath": "/api/capability-qualifications?product=offline-automotive&platform=xamarin",
"downloadPath": "/api/capability-qualifications?product=offline-automotive&platform=xamarin&download=1",
"matrixPath": "/platforms/matrix?product=offline-automotive&platform=xamarin",
"productPath": "/docs/offline-automotive",
"platformPath": "/platforms/xamarin"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Offline & Automotive · Linux qualification
- Identity: `capability-qualification:offline-automotive--linux--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=offline-automotive&platform=linux
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "offline-automotive--linux--qualification",
"matrixCellId": "offline-automotive--linux",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "linux",
"name": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems."
},
"status": "ready-to-qualify",
"stateModel": "stateful",
"integrationLane": "entitled-runtime",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "offline-package-update",
"title": "Design an interruption-safe offline map update",
"href": "/tutorials/offline-package-update"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "linux-map-client",
"title": "Operate a Mappls client on embedded Linux",
"href": "/tutorials/linux-map-client"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "linux-embedded",
"title": "Boot a supervised embedded map client",
"href": "/quickstart/linux-embedded"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "linux-embedded-starter",
"title": "Embedded Linux supervisor starter",
"href": "/starter-kits/linux-embedded-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "offline-device-activation",
"title": "Offline and automotive activation",
"runtime": "device",
"generation": "Entitled runtime and data release",
"visibility": "entitlement-specific",
"evidenceBoundary": "The public snapshot does not establish a universal offline/automotive credential or safety contract. Entitled release material is authoritative.",
"href": "/authentication#offline-device-activation"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Hardware/OS/runtime and protected distribution identity",
"License or entitlement reference—not its contents",
"Artifact checksum, update channel, and rollback owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=offline-automotive&platform=linux",
"apiPath": "/api/capability-qualifications?product=offline-automotive&platform=linux",
"downloadPath": "/api/capability-qualifications?product=offline-automotive&platform=linux&download=1",
"matrixPath": "/platforms/matrix?product=offline-automotive&platform=linux",
"productPath": "/docs/offline-automotive",
"platformPath": "/platforms/linux"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Offline & Automotive · Automotive qualification
- Identity: `capability-qualification:offline-automotive--automotive--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=offline-automotive&platform=automotive
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "offline-automotive--automotive--qualification",
"matrixCellId": "offline-automotive--automotive",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "automotive",
"name": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen."
},
"status": "ready-to-qualify",
"stateModel": "stateful",
"integrationLane": "entitled-runtime",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "offline-package-update",
"title": "Design an interruption-safe offline map update",
"href": "/tutorials/offline-package-update"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "linux-map-client",
"title": "Operate a Mappls client on embedded Linux",
"href": "/tutorials/linux-map-client"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation",
"title": "Simulate one recoverable navigation session",
"href": "/quickstart/automotive-navigation"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation-starter",
"title": "Automotive release-manifest starter",
"href": "/starter-kits/automotive-navigation-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "offline-device-activation",
"title": "Offline and automotive activation",
"runtime": "device",
"generation": "Entitled runtime and data release",
"visibility": "entitlement-specific",
"evidenceBoundary": "The public snapshot does not establish a universal offline/automotive credential or safety contract. Entitled release material is authoritative.",
"href": "/authentication#offline-device-activation"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Hardware/OS/runtime and protected distribution identity",
"License or entitlement reference—not its contents",
"Artifact checksum, update channel, and rollback owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=offline-automotive&platform=automotive",
"apiPath": "/api/capability-qualifications?product=offline-automotive&platform=automotive",
"downloadPath": "/api/capability-qualifications?product=offline-automotive&platform=automotive&download=1",
"matrixPath": "/platforms/matrix?product=offline-automotive&platform=automotive",
"productPath": "/docs/offline-automotive",
"platformPath": "/platforms/automotive"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Offline & Automotive · Widgets qualification
- Identity: `capability-qualification:offline-automotive--widgets--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=offline-automotive&platform=widgets
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "offline-automotive--widgets--qualification",
"matrixCellId": "offline-automotive--widgets",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "widgets",
"name": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "widgets-place",
"title": "Embed a place journey with an owned fallback",
"href": "/quickstart/widgets-place"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "widgets-place-starter",
"title": "Widget journey host starter",
"href": "/starter-kits/widgets-place-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=offline-automotive&platform=widgets",
"apiPath": "/api/capability-qualifications?product=offline-automotive&platform=widgets",
"downloadPath": "/api/capability-qualifications?product=offline-automotive&platform=widgets&download=1",
"matrixPath": "/platforms/matrix?product=offline-automotive&platform=widgets",
"productPath": "/docs/offline-automotive",
"platformPath": "/platforms/widgets"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Offline & Automotive · Deep links qualification
- Identity: `capability-qualification:offline-automotive--deep-links--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=offline-automotive&platform=deep-links
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "offline-automotive--deep-links--qualification",
"matrixCellId": "offline-automotive--deep-links",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "deep-links",
"name": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "deep-links",
"title": "Ship one zero-SDK Mappls hand-off",
"href": "/quickstart/deep-links"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "deep-links-starter",
"title": "Deep-link handoff starter",
"href": "/starter-kits/deep-links-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=offline-automotive&platform=deep-links",
"apiPath": "/api/capability-qualifications?product=offline-automotive&platform=deep-links",
"downloadPath": "/api/capability-qualifications?product=offline-automotive&platform=deep-links&download=1",
"matrixPath": "/platforms/matrix?product=offline-automotive&platform=deep-links",
"productPath": "/docs/offline-automotive",
"platformPath": "/platforms/deep-links"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Offline & Automotive · MCP qualification
- Identity: `capability-qualification:offline-automotive--mcp--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=offline-automotive&platform=mcp
- State model: stateful
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "offline-automotive--mcp--qualification",
"matrixCellId": "offline-automotive--mcp",
"product": {
"slug": "offline-automotive",
"name": "Offline & Automotive",
"summary": "Offline maps, search, routing, guidance, compilers, and embedded navigation runtimes.",
"category": "Embedded",
"accent": "#d6a600"
},
"platform": {
"slug": "mcp",
"name": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control."
},
"status": "not-listed",
"stateModel": "stateful",
"integrationLane": "ai-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "mcp-agent",
"title": "Connect a read-only Mappls agent",
"href": "/quickstart/mcp-agent"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "mcp-agent-starter",
"title": "MCP client policy starter",
"href": "/starter-kits/mcp-agent-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "offline-release-control",
"title": "Offline Release Control",
"href": "/samples/offline-release-control"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "offline-automotive-release",
"title": "Offline automotive release",
"href": "/journeys/offline-automotive-release"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"MCP deployment and transport identity",
"OAuth resource, issuer, audience, client, and profile",
"Exact tool allowlist, human boundary, and durable-state owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=offline-automotive&platform=mcp",
"apiPath": "/api/capability-qualifications?product=offline-automotive&platform=mcp",
"downloadPath": "/api/capability-qualifications?product=offline-automotive&platform=mcp&download=1",
"matrixPath": "/platforms/matrix?product=offline-automotive&platform=mcp",
"productPath": "/docs/offline-automotive",
"platformPath": "/platforms/mcp"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · AI & Location · REST qualification
- Identity: `capability-qualification:ai-location--rest--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=ai-location&platform=rest
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "ai-location--rest--qualification",
"matrixCellId": "ai-location--rest",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "rest",
"name": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack."
},
"status": "ready-to-qualify",
"stateModel": "hybrid",
"integrationLane": "trusted-service",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-angular-sample-websdk-rest",
"title": "Angular Sample for MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web",
"href": "/reference/mapmyindia-angular-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-mgis-apis",
"title": "Mappls mGIS APIs",
"href": "/reference/mapmyindia-mgis-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-purejs-sample-websdk-rest",
"title": "MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web in Pure JS",
"href": "/reference/mapmyindia-purejs-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-workmate-apis",
"title": "Mappls by MapmyIndia-Workmate-Apis",
"href": "/reference/mapmyindia-workmate-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ai-apis",
"title": "MAPPLS AI / ML APIs",
"href": "/reference/mappls-ai-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-rest-apis",
"title": "Mappls Intouch REST Apis",
"href": "/reference/mappls-intouch-rest-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-rest-apis",
"title": "Mappls Map APIs (REST) !",
"href": "/reference/mappls-rest-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "skydnn-aiapi-docs",
"title": "Skydnn AI APIs",
"href": "/reference/skydnn-aiapi-docs"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-blurbox-returns-the-image-in-which-objects-of-geometry-are-blurred-as-given-by-the-client",
"title": "Returns the image in which objects of geometry are blurred as given by the client.",
"href": "/api-reference/mappls-ai-ml-post-blurbox-returns-the-image-in-which-objects-of-geometry-are-blurred-as-given-by-the-client"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-brand-detection-returns-the-brands-bounding-box-array-for-the-inputs-images",
"title": "Returns the Brands bounding box array for the inputs Images",
"href": "/api-reference/mappls-ai-ml-post-brand-detection-returns-the-brands-bounding-box-array-for-the-inputs-images"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-faceblur-returns-the-array-of-features-which-contains-objects-of-geometry-of-the-uploaded-image",
"title": "Returns the array of features which contains objects of geometry of the uploaded image.",
"href": "/api-reference/mappls-ai-ml-post-faceblur-returns-the-array-of-features-which-contains-objects-of-geometry-of-the-uploaded-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-facedetection-returns-different-output-depending-upon-the-inputs-given",
"title": "Returns different output depending upon the inputs given.",
"href": "/api-reference/mappls-ai-ml-post-facedetection-returns-different-output-depending-upon-the-inputs-given"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-faceplot-returns-the-image-which-contains-objects-of-geometry-of-the-detected-face-plotted-on-it-with-the-bounding-box",
"title": "Returns the image which contains objects of geometry of the detected face plotted on it with the bounding box.",
"href": "/api-reference/mappls-ai-ml-post-faceplot-returns-the-image-which-contains-objects-of-geometry-of-the-detected-face-plotted-on-it-with-the-bounding-box"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-face-blur-returns-the-face-blured-images-of-the-uploaded-2d-image",
"title": "Returns the face blured images of the uploaded 2D image",
"href": "/api-reference/mappls-ai-ml-post-face-blur-returns-the-face-blured-images-of-the-uploaded-2d-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-face-detection-returns-the-bounding-box-array-for-the-inputs-image",
"title": "Returns the bounding box array for the inputs Image",
"href": "/api-reference/mappls-ai-ml-post-face-detection-returns-the-bounding-box-array-for-the-inputs-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-face-draw-returns-the-box-drawn-faces-on-the-uploaded-2d-image",
"title": "Returns the box drawn faces on the uploaded 2D image",
"href": "/api-reference/mappls-ai-ml-post-face-draw-returns-the-box-drawn-faces-on-the-uploaded-2d-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-face-blur-pano-returns-the-face-blured-images-of-the-uploaded-panorama-image",
"title": "Returns the face blured images of the uploaded panorama image",
"href": "/api-reference/mappls-ai-ml-post-face-blur-pano-returns-the-face-blured-images-of-the-uploaded-panorama-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-face-detection-pano-returns-the-bounding-box-array-for-the-inputs-panorama-images",
"title": "Returns the bounding box array for the inputs panorama Images",
"href": "/api-reference/mappls-ai-ml-post-face-detection-pano-returns-the-bounding-box-array-for-the-inputs-panorama-images"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-face-draw-pano-returns-the-box-drawn-faces-on-the-uploaded-panorama-image",
"title": "Returns the box drawn faces on the uploaded panorama image",
"href": "/api-reference/mappls-ai-ml-post-face-draw-pano-returns-the-box-drawn-faces-on-the-uploaded-panorama-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-license-plate-blur-returns-the-license-plate-blured-images-of-the-uploaded-2d-image",
"title": "Returns the License Plate blured images of the uploaded 2D image",
"href": "/api-reference/mappls-ai-ml-post-license-plate-blur-returns-the-license-plate-blured-images-of-the-uploaded-2d-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-license-plate-detection-returns-the-bounding-box-array-for-the-inputs-image",
"title": "Returns the bounding box array for the inputs Image",
"href": "/api-reference/mappls-ai-ml-post-license-plate-detection-returns-the-bounding-box-array-for-the-inputs-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-license-plate-draw-returns-the-box-drawn-license-plate-on-the-uploaded-2d-image",
"title": "Returns the box drawn License Plate on the uploaded 2D image",
"href": "/api-reference/mappls-ai-ml-post-license-plate-draw-returns-the-box-drawn-license-plate-on-the-uploaded-2d-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-license-plate-blur-pano-returns-the-license-plate-blured-images-of-the-uploaded-panorama-image",
"title": "Returns the License plate blured images of the uploaded panorama image",
"href": "/api-reference/mappls-ai-ml-post-license-plate-blur-pano-returns-the-license-plate-blured-images-of-the-uploaded-panorama-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-license-plate-detection-pano-returns-the-bounding-box-array-of-license-plate-in-panorama-images",
"title": "Returns the bounding box array of License plate in panorama Images",
"href": "/api-reference/mappls-ai-ml-post-license-plate-detection-pano-returns-the-bounding-box-array-of-license-plate-in-panorama-images"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "mappls-ai-ml-post-license-plate-draw-pano-returns-the-box-drawn-license-plate-in-the-uploaded-panorama-image",
"title": "Returns the box drawn License plate in the uploaded panorama image",
"href": "/api-reference/mappls-ai-ml-post-license-plate-draw-pano-returns-the-box-drawn-license-plate-in-the-uploaded-panorama-image"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "skydnn-ai-get-models-returns-the-details-of-all-the-models",
"title": "Returns the details of all the models",
"href": "/api-reference/skydnn-ai-get-models-returns-the-details-of-all-the-models"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "skydnn-ai-get-models-api-model-key-returns-the-details-of-provided-model",
"title": "Returns the details of provided model",
"href": "/api-reference/skydnn-ai-get-models-api-model-key-returns-the-details-of-provided-model"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "skydnn-ai-post-predict-returns-the-prediction-as-response-in-form-of-json",
"title": "Returns the prediction as response in form of JSON",
"href": "/api-reference/skydnn-ai-post-predict-returns-the-prediction-as-response-in-form-of-json"
},
{
"kind": "api",
"fidelity": "exact-product-platform",
"slug": "skydnn-ai-get-server-whoami-returns-the-current-models-in-port",
"title": "Returns the current models in port",
"href": "/api-reference/skydnn-ai-get-server-whoami-returns-the-current-models-in-port"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "rest-api",
"title": "Your first trusted Mappls request",
"href": "/quickstart/rest-api"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "rest-api-starter",
"title": "Trusted REST service starter",
"href": "/starter-kits/rest-api-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "mcp-gateway-and-provider",
"title": "MCP and AI-native clients",
"runtime": "mcp",
"generation": "MCP offline or live-read profile",
"visibility": "selection-required",
"evidenceBoundary": "MCP documentation tools need no provider credential. Live-read tools delegate to exact product contracts; the MCP server is not an authorization server and exposes no writes.",
"href": "/authentication#mcp-gateway-and-provider"
},
{
"slug": "contract-selection-required",
"title": "Entitled or source-ambiguous product",
"runtime": "enterprise",
"generation": "Account-specific",
"visibility": "selection-required",
"evidenceBoundary": "This path exists specifically to prevent public source signals from being promoted into an invented authentication contract.",
"href": "/authentication#contract-selection-required"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Approved host/path and API generation",
"Server workload and egress identity",
"Secret-provider key version—not its value",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=ai-location&platform=rest",
"apiPath": "/api/capability-qualifications?product=ai-location&platform=rest",
"downloadPath": "/api/capability-qualifications?product=ai-location&platform=rest&download=1",
"matrixPath": "/platforms/matrix?product=ai-location&platform=rest",
"productPath": "/docs/ai-location",
"platformPath": "/platforms/rest"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · AI & Location · Web qualification
- Identity: `capability-qualification:ai-location--web--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=ai-location&platform=web
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "ai-location--web--qualification",
"matrixCellId": "ai-location--web",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "web",
"name": "Web",
"headline": "Build expressive browser maps without surrendering performance or control."
},
"status": "ready-to-qualify",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-angular-sample-websdk-rest",
"title": "Angular Sample for MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web",
"href": "/reference/mapmyindia-angular-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-purejs-sample-websdk-rest",
"title": "MapmyIndia Interactive Maps JS SDK & MapmyIndia RESTful APIs for Web in Pure JS",
"href": "/reference/mapmyindia-purejs-sample-websdk-rest"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-insight-sdk",
"title": "Mappls Insight Embeddable Visualizations",
"href": "/reference/mappls-insight-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-maps",
"title": "Sign up for Mappls",
"href": "/reference/mappls-web-maps"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-maps-js",
"title": "Mappls Web Maps JS",
"href": "/reference/mappls-web-maps-js"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-web-plugins",
"title": "Mappls Web Plugins",
"href": "/reference/mappls-web-plugins"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-insight-sdk",
"title": "Mappls Insight Embeddable Visualizations",
"href": "/sdks/mappls-insight-sdk"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "web-map",
"title": "Render one accessible web map",
"href": "/quickstart/web-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "web-map-starter",
"title": "Accessible web map host starter",
"href": "/starter-kits/web-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "contract-selection-required",
"title": "Entitled or source-ambiguous product",
"runtime": "enterprise",
"generation": "Account-specific",
"visibility": "selection-required",
"evidenceBoundary": "This path exists specifically to prevent public source signals from being promoted into an invented authentication contract.",
"href": "/authentication#contract-selection-required"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=ai-location&platform=web",
"apiPath": "/api/capability-qualifications?product=ai-location&platform=web",
"downloadPath": "/api/capability-qualifications?product=ai-location&platform=web&download=1",
"matrixPath": "/platforms/matrix?product=ai-location&platform=web",
"productPath": "/docs/ai-location",
"platformPath": "/platforms/web"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · AI & Location · Android qualification
- Identity: `capability-qualification:ai-location--android--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=ai-location&platform=android
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "ai-location--android--qualification",
"matrixCellId": "ai-location--android",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "android",
"name": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "android-native",
"title": "Create a lifecycle-safe Android map",
"href": "/quickstart/android-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "android-native-starter",
"title": "Android lifecycle adapter starter",
"href": "/starter-kits/android-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=ai-location&platform=android",
"apiPath": "/api/capability-qualifications?product=ai-location&platform=android",
"downloadPath": "/api/capability-qualifications?product=ai-location&platform=android&download=1",
"matrixPath": "/platforms/matrix?product=ai-location&platform=android",
"productPath": "/docs/ai-location",
"platformPath": "/platforms/android"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · AI & Location · iOS qualification
- Identity: `capability-qualification:ai-location--ios--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=ai-location&platform=ios
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "ai-location--ios--qualification",
"matrixCellId": "ai-location--ios",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "ios",
"name": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "ios-native",
"title": "Create a lifecycle-safe iOS map",
"href": "/quickstart/ios-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "ios-native-starter",
"title": "iOS view-ownership starter",
"href": "/starter-kits/ios-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=ai-location&platform=ios",
"apiPath": "/api/capability-qualifications?product=ai-location&platform=ios",
"downloadPath": "/api/capability-qualifications?product=ai-location&platform=ios&download=1",
"matrixPath": "/platforms/matrix?product=ai-location&platform=ios",
"productPath": "/docs/ai-location",
"platformPath": "/platforms/ios"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · AI & Location · React Native qualification
- Identity: `capability-qualification:ai-location--react-native--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=ai-location&platform=react-native
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "ai-location--react-native--qualification",
"matrixCellId": "ai-location--react-native",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "react-native",
"name": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "react-native-map",
"title": "Bridge one map feature across Android and iOS",
"href": "/quickstart/react-native-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "react-native-map-starter",
"title": "React Native bridge-contract starter",
"href": "/starter-kits/react-native-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=ai-location&platform=react-native",
"apiPath": "/api/capability-qualifications?product=ai-location&platform=react-native",
"downloadPath": "/api/capability-qualifications?product=ai-location&platform=react-native&download=1",
"matrixPath": "/platforms/matrix?product=ai-location&platform=react-native",
"productPath": "/docs/ai-location",
"platformPath": "/platforms/react-native"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · AI & Location · Flutter qualification
- Identity: `capability-qualification:ai-location--flutter--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=ai-location&platform=flutter
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "ai-location--flutter--qualification",
"matrixCellId": "ai-location--flutter",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "flutter",
"name": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "flutter-map",
"title": "Build a native-backed Flutter place picker",
"href": "/quickstart/flutter-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "flutter-map-starter",
"title": "Flutter place-selection starter",
"href": "/starter-kits/flutter-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=ai-location&platform=flutter",
"apiPath": "/api/capability-qualifications?product=ai-location&platform=flutter",
"downloadPath": "/api/capability-qualifications?product=ai-location&platform=flutter&download=1",
"matrixPath": "/platforms/matrix?product=ai-location&platform=flutter",
"productPath": "/docs/ai-location",
"platformPath": "/platforms/flutter"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · AI & Location · Cordova qualification
- Identity: `capability-qualification:ai-location--cordova--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=ai-location&platform=cordova
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "ai-location--cordova--qualification",
"matrixCellId": "ai-location--cordova",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "cordova",
"name": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance",
"title": "Stabilize a Cordova map before migration",
"href": "/quickstart/cordova-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance-starter",
"title": "Cordova stabilization starter",
"href": "/starter-kits/cordova-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=ai-location&platform=cordova",
"apiPath": "/api/capability-qualifications?product=ai-location&platform=cordova",
"downloadPath": "/api/capability-qualifications?product=ai-location&platform=cordova&download=1",
"matrixPath": "/platforms/matrix?product=ai-location&platform=cordova",
"productPath": "/docs/ai-location",
"platformPath": "/platforms/cordova"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · AI & Location · Xamarin qualification
- Identity: `capability-qualification:ai-location--xamarin--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=ai-location&platform=xamarin
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "ai-location--xamarin--qualification",
"matrixCellId": "ai-location--xamarin",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "xamarin",
"name": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance",
"title": "Extract a Xamarin map integration for replacement",
"href": "/quickstart/xamarin-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance-starter",
"title": "Xamarin extraction starter",
"href": "/starter-kits/xamarin-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=ai-location&platform=xamarin",
"apiPath": "/api/capability-qualifications?product=ai-location&platform=xamarin",
"downloadPath": "/api/capability-qualifications?product=ai-location&platform=xamarin&download=1",
"matrixPath": "/platforms/matrix?product=ai-location&platform=xamarin",
"productPath": "/docs/ai-location",
"platformPath": "/platforms/xamarin"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · AI & Location · Linux qualification
- Identity: `capability-qualification:ai-location--linux--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=ai-location&platform=linux
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "ai-location--linux--qualification",
"matrixCellId": "ai-location--linux",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "linux",
"name": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "entitled-runtime",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "linux-embedded",
"title": "Boot a supervised embedded map client",
"href": "/quickstart/linux-embedded"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "linux-embedded-starter",
"title": "Embedded Linux supervisor starter",
"href": "/starter-kits/linux-embedded-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Hardware/OS/runtime and protected distribution identity",
"License or entitlement reference—not its contents",
"Artifact checksum, update channel, and rollback owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=ai-location&platform=linux",
"apiPath": "/api/capability-qualifications?product=ai-location&platform=linux",
"downloadPath": "/api/capability-qualifications?product=ai-location&platform=linux&download=1",
"matrixPath": "/platforms/matrix?product=ai-location&platform=linux",
"productPath": "/docs/ai-location",
"platformPath": "/platforms/linux"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · AI & Location · Automotive qualification
- Identity: `capability-qualification:ai-location--automotive--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=ai-location&platform=automotive
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "ai-location--automotive--qualification",
"matrixCellId": "ai-location--automotive",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "automotive",
"name": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "entitled-runtime",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation",
"title": "Simulate one recoverable navigation session",
"href": "/quickstart/automotive-navigation"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation-starter",
"title": "Automotive release-manifest starter",
"href": "/starter-kits/automotive-navigation-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Hardware/OS/runtime and protected distribution identity",
"License or entitlement reference—not its contents",
"Artifact checksum, update channel, and rollback owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=ai-location&platform=automotive",
"apiPath": "/api/capability-qualifications?product=ai-location&platform=automotive",
"downloadPath": "/api/capability-qualifications?product=ai-location&platform=automotive&download=1",
"matrixPath": "/platforms/matrix?product=ai-location&platform=automotive",
"productPath": "/docs/ai-location",
"platformPath": "/platforms/automotive"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · AI & Location · Widgets qualification
- Identity: `capability-qualification:ai-location--widgets--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=ai-location&platform=widgets
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "ai-location--widgets--qualification",
"matrixCellId": "ai-location--widgets",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "widgets",
"name": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "widgets-place",
"title": "Embed a place journey with an owned fallback",
"href": "/quickstart/widgets-place"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "widgets-place-starter",
"title": "Widget journey host starter",
"href": "/starter-kits/widgets-place-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=ai-location&platform=widgets",
"apiPath": "/api/capability-qualifications?product=ai-location&platform=widgets",
"downloadPath": "/api/capability-qualifications?product=ai-location&platform=widgets&download=1",
"matrixPath": "/platforms/matrix?product=ai-location&platform=widgets",
"productPath": "/docs/ai-location",
"platformPath": "/platforms/widgets"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · AI & Location · Deep links qualification
- Identity: `capability-qualification:ai-location--deep-links--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=ai-location&platform=deep-links
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "ai-location--deep-links--qualification",
"matrixCellId": "ai-location--deep-links",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "deep-links",
"name": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "deep-links",
"title": "Ship one zero-SDK Mappls hand-off",
"href": "/quickstart/deep-links"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "deep-links-starter",
"title": "Deep-link handoff starter",
"href": "/starter-kits/deep-links-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=ai-location&platform=deep-links",
"apiPath": "/api/capability-qualifications?product=ai-location&platform=deep-links",
"downloadPath": "/api/capability-qualifications?product=ai-location&platform=deep-links&download=1",
"matrixPath": "/platforms/matrix?product=ai-location&platform=deep-links",
"productPath": "/docs/ai-location",
"platformPath": "/platforms/deep-links"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · AI & Location · MCP qualification
- Identity: `capability-qualification:ai-location--mcp--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=ai-location&platform=mcp
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "ai-location--mcp--qualification",
"matrixCellId": "ai-location--mcp",
"product": {
"slug": "ai-location",
"name": "AI & Location",
"summary": "AI/ML APIs, vision, location-aware agents, ranking, and natural-language spatial workflows.",
"category": "Intelligence",
"accent": "#845ef7"
},
"platform": {
"slug": "mcp",
"name": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control."
},
"status": "ready-to-qualify",
"stateModel": "hybrid",
"integrationLane": "ai-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ai-apis",
"title": "MAPPLS AI / ML APIs",
"href": "/reference/mappls-ai-apis"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "skydnn-aiapi-docs",
"title": "Skydnn AI APIs",
"href": "/reference/skydnn-aiapi-docs"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "mappls-mcp-agent",
"title": "Give an AI agent grounded Mappls tools",
"href": "/tutorials/mappls-mcp-agent"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "a2a-solution-coordination",
"title": "Coordinate a complete Mappls A2A journey",
"href": "/tutorials/a2a-solution-coordination"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "mcp-client-identity",
"title": "Provision and validate a remote MCP client",
"href": "/tutorials/mcp-client-identity"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "mcp-agent",
"title": "Connect a read-only Mappls agent",
"href": "/quickstart/mcp-agent"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "mcp-agent-starter",
"title": "MCP client policy starter",
"href": "/starter-kits/mcp-agent-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "spatial-agent",
"title": "Spatial Operations Agent",
"href": "/samples/spatial-agent"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "a2a-solution-studio",
"title": "A2A Solution Studio",
"href": "/samples/a2a-solution-studio"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "mcp-identity-lab",
"title": "MCP Identity Interoperability Lab",
"href": "/samples/mcp-identity-lab"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "governed-spatial-agent-run",
"title": "Governed spatial agent run",
"href": "/journeys/governed-spatial-agent-run"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "vision-inference-review",
"title": "Governed SkyDNN inference review",
"href": "/journeys/vision-inference-review"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "mcp-gateway-and-provider",
"title": "MCP and AI-native clients",
"runtime": "mcp",
"generation": "MCP offline or live-read profile",
"visibility": "selection-required",
"evidenceBoundary": "MCP documentation tools need no provider credential. Live-read tools delegate to exact product contracts; the MCP server is not an authorization server and exposes no writes.",
"href": "/authentication#mcp-gateway-and-provider"
},
{
"slug": "contract-selection-required",
"title": "Entitled or source-ambiguous product",
"runtime": "enterprise",
"generation": "Account-specific",
"visibility": "selection-required",
"evidenceBoundary": "This path exists specifically to prevent public source signals from being promoted into an invented authentication contract.",
"href": "/authentication#contract-selection-required"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"MCP deployment and transport identity",
"OAuth resource, issuer, audience, client, and profile",
"Exact tool allowlist, human boundary, and durable-state owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=ai-location&platform=mcp",
"apiPath": "/api/capability-qualifications?product=ai-location&platform=mcp",
"downloadPath": "/api/capability-qualifications?product=ai-location&platform=mcp&download=1",
"matrixPath": "/platforms/matrix?product=ai-location&platform=mcp",
"productPath": "/docs/ai-location",
"platformPath": "/platforms/mcp"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Capture & Feedback · REST qualification
- Identity: `capability-qualification:capture-feedback--rest--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=capture-feedback&platform=rest
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "capture-feedback--rest--qualification",
"matrixCellId": "capture-feedback--rest",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "rest",
"name": "REST",
"headline": "Put Mappls behind a stable service boundary in any stack."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "trusted-service",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "rest-api",
"title": "Your first trusted Mappls request",
"href": "/quickstart/rest-api"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "rest-api-starter",
"title": "Trusted REST service starter",
"href": "/starter-kits/rest-api-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Approved host/path and API generation",
"Server workload and egress identity",
"Secret-provider key version—not its value",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=capture-feedback&platform=rest",
"apiPath": "/api/capability-qualifications?product=capture-feedback&platform=rest",
"downloadPath": "/api/capability-qualifications?product=capture-feedback&platform=rest&download=1",
"matrixPath": "/platforms/matrix?product=capture-feedback&platform=rest",
"productPath": "/docs/capture-feedback",
"platformPath": "/platforms/rest"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Capture & Feedback · Web qualification
- Identity: `capability-qualification:capture-feedback--web--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=capture-feedback&platform=web
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "capture-feedback--web--qualification",
"matrixCellId": "capture-feedback--web",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "web",
"name": "Web",
"headline": "Build expressive browser maps without surrendering performance or control."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "web-map",
"title": "Render one accessible web map",
"href": "/quickstart/web-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "web-map-starter",
"title": "Accessible web map host starter",
"href": "/starter-kits/web-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=capture-feedback&platform=web",
"apiPath": "/api/capability-qualifications?product=capture-feedback&platform=web",
"downloadPath": "/api/capability-qualifications?product=capture-feedback&platform=web&download=1",
"matrixPath": "/platforms/matrix?product=capture-feedback&platform=web",
"productPath": "/docs/capture-feedback",
"platformPath": "/platforms/web"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Capture & Feedback · Android qualification
- Identity: `capability-qualification:capture-feedback--android--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=capture-feedback&platform=android
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "capture-feedback--android--qualification",
"matrixCellId": "capture-feedback--android",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "android",
"name": "Android",
"headline": "Compose native maps, places, tracking, and navigation with Android lifecycle discipline."
},
"status": "ready-to-qualify",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/reference/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-compose-demo",
"title": "Mappls Vector Map Android SDK JetPack Compose",
"href": "/reference/mappls-android-compose-demo"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/reference/mappls-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/reference/mappls-camera-sdk-android"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-android-sdk",
"title": "Mappls Intouch Android SDK",
"href": "/reference/mappls-intouch-android-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-location-capture-android-sdk",
"title": "Mappls Location Capture SDK",
"href": "/reference/mappls-location-capture-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-android",
"title": "MapmyIndia Vector Map Android SDK",
"href": "/sdks/mapmyindia-maps-vectorsdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-android-sdk",
"title": "Mappls Android SDK",
"href": "/sdks/mappls-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-android",
"title": "Mappls Camera SDK",
"href": "/sdks/mappls-camera-sdk-android"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-intouch-android-sdk",
"title": "Mappls Intouch Android SDK",
"href": "/sdks/mappls-intouch-android-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-location-capture-android-sdk",
"title": "Mappls Location Capture SDK",
"href": "/sdks/mappls-location-capture-android-sdk"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "workmate-proof-review",
"title": "Build proof review and rework for field jobs",
"href": "/tutorials/workmate-proof-review"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "android-native",
"title": "Create a lifecycle-safe Android map",
"href": "/quickstart/android-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "android-native-starter",
"title": "Android lifecycle adapter starter",
"href": "/starter-kits/android-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "android-public-key",
"title": "Android native application",
"runtime": "android",
"generation": "Selected Android SDK generation",
"visibility": "public-restricted",
"evidenceBoundary": "Android source repositories provide SDK/sample evidence, not a universal credential field, compatibility matrix, or entitlement promise.",
"href": "/authentication#android-public-key"
},
{
"slug": "contract-selection-required",
"title": "Entitled or source-ambiguous product",
"runtime": "enterprise",
"generation": "Account-specific",
"visibility": "selection-required",
"evidenceBoundary": "This path exists specifically to prevent public source signals from being promoted into an invented authentication contract.",
"href": "/authentication#contract-selection-required"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=capture-feedback&platform=android",
"apiPath": "/api/capability-qualifications?product=capture-feedback&platform=android",
"downloadPath": "/api/capability-qualifications?product=capture-feedback&platform=android&download=1",
"matrixPath": "/platforms/matrix?product=capture-feedback&platform=android",
"productPath": "/docs/capture-feedback",
"platformPath": "/platforms/android"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Capture & Feedback · iOS qualification
- Identity: `capability-qualification:capture-feedback--ios--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=capture-feedback&platform=ios
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "capture-feedback--ios--qualification",
"matrixCellId": "capture-feedback--ios",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "ios",
"name": "iOS",
"headline": "Deliver Mappls-native Apple experiences through modular, lifecycle-safe frameworks."
},
"status": "ready-to-qualify",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "listed",
"evidenceStatus": "listed-with-exact-evidence",
"exactEvidence": [
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-ios",
"title": "Mapmyindia Maps VectorSDK IOS",
"href": "/reference/mapmyindia-maps-vectorsdk-ios"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution",
"title": "Mappls Annotation Extension for iOS",
"href": "/reference/mappls-annotation-extension-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution-base",
"title": "Mappls Annotation Extension for iOS",
"href": "/reference/mappls-annotation-extension-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-core-ios-distribution",
"title": "[MapplsAPICore]()",
"href": "/reference/mappls-api-core-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/reference/mappls-api-kit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution-base",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/reference/mappls-api-kit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-ios-distribution",
"title": "MapplsCamera SDK for iOS",
"href": "/reference/mappls-camera-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-ios",
"title": "MapplsCamera SDK for iOS",
"href": "/reference/mappls-camera-sdk-ios"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution",
"title": "MapplsDirectionUI for iOS",
"href": "/reference/mappls-direction-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution-base",
"title": "MapplsDirectionUI for iOS",
"href": "/reference/mappls-direction-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/reference/mappls-drivingrange-plugin-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution-base",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/reference/mappls-drivingrange-plugin-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution",
"title": "MapplsFeedbackKit for iOS",
"href": "/reference/mappls-feedback-kit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution-base",
"title": "MapplsFeedbackKit for iOS",
"href": "/reference/mappls-feedback-kit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/reference/mappls-feedback-uikit-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution-base",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/reference/mappls-feedback-uikit-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/reference/mappls-geoanalytics-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution-base",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/reference/mappls-geoanalytics-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/reference/mappls-geofence-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution-base",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/reference/mappls-geofence-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-intouch-ios-sdk",
"title": "[Mappls Intouch SDK]()",
"href": "/reference/mappls-intouch-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/reference/mappls-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-location-capture-ios-sdk",
"title": "Mappls Location Capture IOS SDK",
"href": "/reference/mappls-location-capture-ios-sdk"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-location-capture-sdk-ios-distribution",
"title": "Mappls Location Capture SDK (iOS)",
"href": "/reference/mappls-location-capture-sdk-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/reference/mappls-map-move-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/reference/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/reference/mappls-nearby-ui-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution-base",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/reference/mappls-nearby-ui-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/reference/mappls-raster-catalogue-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution-base",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/reference/mappls-raster-catalogue-ios-distribution-base"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution"
},
{
"kind": "source-guide",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/reference/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-finder-ios-distribution-base",
"title": "[Custom Search Nearby Records](Custom-Search-Nearby-Records)",
"href": "/sdks/mappls-nearby-finder-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-intouch-ios-sdk",
"title": "[Mappls Intouch SDK]()",
"href": "/sdks/mappls-intouch-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-map-move-ios-distribution-base",
"title": "[Mappls Map SDK]()",
"href": "/sdks/mappls-map-move-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-core-ios-distribution",
"title": "[MapplsAPICore]()",
"href": "/sdks/mappls-api-core-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/sdks/mappls-api-kit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-api-kit-ios-distribution-base",
"title": "[MapplsAPIKit (REST API Kit for iOS)]()",
"href": "/sdks/mappls-api-kit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mapmyindia-maps-vectorsdk-ios",
"title": "Mapmyindia Maps VectorSDK IOS",
"href": "/sdks/mapmyindia-maps-vectorsdk-ios"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution",
"title": "Mappls Annotation Extension for iOS",
"href": "/sdks/mappls-annotation-extension-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-annotation-extension-ios-distribution-base",
"title": "Mappls Annotation Extension for iOS",
"href": "/sdks/mappls-annotation-extension-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ios-sdk",
"title": "Mappls iOS SDK",
"href": "/sdks/mappls-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-location-capture-ios-sdk",
"title": "Mappls Location Capture IOS SDK",
"href": "/sdks/mappls-location-capture-ios-sdk"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-location-capture-sdk-ios-distribution",
"title": "Mappls Location Capture SDK (iOS)",
"href": "/sdks/mappls-location-capture-sdk-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/sdks/mappls-nearby-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-nearby-ui-ios-distribution-base",
"title": "Mappls Nearby Search Widget for iOS",
"href": "/sdks/mappls-nearby-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-ios-distribution",
"title": "MapplsCamera SDK for iOS",
"href": "/sdks/mappls-camera-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-camera-sdk-ios",
"title": "MapplsCamera SDK for iOS",
"href": "/sdks/mappls-camera-sdk-ios"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution",
"title": "MapplsDirectionUI for iOS",
"href": "/sdks/mappls-direction-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-direction-ui-ios-distribution-base",
"title": "MapplsDirectionUI for iOS",
"href": "/sdks/mappls-direction-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/sdks/mappls-drivingrange-plugin-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-drivingrange-plugin-ios-distribution-base",
"title": "MapplsDrivingRangePlugin for iOS",
"href": "/sdks/mappls-drivingrange-plugin-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution",
"title": "MapplsFeedbackKit for iOS",
"href": "/sdks/mappls-feedback-kit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-kit-ios-distribution-base",
"title": "MapplsFeedbackKit for iOS",
"href": "/sdks/mappls-feedback-kit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/sdks/mappls-feedback-uikit-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-feedback-uikit-ios-distribution-base",
"title": "MapplsFeedbackUIKit for iOS",
"href": "/sdks/mappls-feedback-uikit-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/sdks/mappls-geoanalytics-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geoanalytics-ios-distribution-base",
"title": "MapplsGeoanalytics Plugin for iOS",
"href": "/sdks/mappls-geoanalytics-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/sdks/mappls-geofence-ui-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-geofence-ui-ios-distribution-base",
"title": "MapplsGeofenceUI Plugin for iOS",
"href": "/sdks/mappls-geofence-ui-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/sdks/mappls-raster-catalogue-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-raster-catalogue-ios-distribution-base",
"title": "MapplsRasterCatalogue Plugin for iOS",
"href": "/sdks/mappls-raster-catalogue-ios-distribution-base"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution"
},
{
"kind": "sdk",
"fidelity": "exact-source",
"slug": "mappls-ui-widget-ios-distribution-base",
"title": "MapplsUIWidgets - UI Components SDK for iOS",
"href": "/sdks/mappls-ui-widget-ios-distribution-base"
},
{
"kind": "tutorial",
"fidelity": "exact-product-platform",
"slug": "ios-sdk-production-readiness",
"title": "Qualify an iOS Mappls release",
"href": "/tutorials/ios-sdk-production-readiness"
}
],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "ios-native",
"title": "Create a lifecycle-safe iOS map",
"href": "/quickstart/ios-native"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "ios-native-starter",
"title": "iOS view-ownership starter",
"href": "/starter-kits/ios-native-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"boundary": "Listed means this product names the platform in the canonical catalog. Source evidence, repository activity, fixtures, tutorials, and successful builds still do not prove package availability, account entitlement, runtime compatibility, region, quota, support, or production approval."
},
"authenticationCandidates": [
{
"slug": "ios-public-key",
"title": "iOS native application",
"runtime": "ios",
"generation": "Selected iOS SDK generation",
"visibility": "public-restricted",
"evidenceBoundary": "iOS source and distribution repositories identify candidate SDK lines; account credentials, checksums, target compatibility, and entitlement require confirmation.",
"href": "/authentication#ios-public-key"
},
{
"slug": "contract-selection-required",
"title": "Entitled or source-ambiguous product",
"runtime": "enterprise",
"generation": "Account-specific",
"visibility": "selection-required",
"evidenceBoundary": "This path exists specifically to prevent public source signals from being promoted into an invented authentication contract.",
"href": "/authentication#contract-selection-required"
}
],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": []
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "actionable",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": []
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "actionable",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": []
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "external-evidence-required",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "external-evidence-required",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "external-evidence-required",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=capture-feedback&platform=ios",
"apiPath": "/api/capability-qualifications?product=capture-feedback&platform=ios",
"downloadPath": "/api/capability-qualifications?product=capture-feedback&platform=ios&download=1",
"matrixPath": "/platforms/matrix?product=capture-feedback&platform=ios",
"productPath": "/docs/capture-feedback",
"platformPath": "/platforms/ios"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Capture & Feedback · React Native qualification
- Identity: `capability-qualification:capture-feedback--react-native--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=capture-feedback&platform=react-native
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "capture-feedback--react-native--qualification",
"matrixCellId": "capture-feedback--react-native",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "react-native",
"name": "React Native",
"headline": "Share product logic while keeping native Mappls capabilities honest on both platforms."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "react-native-map",
"title": "Bridge one map feature across Android and iOS",
"href": "/quickstart/react-native-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "react-native-map-starter",
"title": "React Native bridge-contract starter",
"href": "/starter-kits/react-native-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=capture-feedback&platform=react-native",
"apiPath": "/api/capability-qualifications?product=capture-feedback&platform=react-native",
"downloadPath": "/api/capability-qualifications?product=capture-feedback&platform=react-native&download=1",
"matrixPath": "/platforms/matrix?product=capture-feedback&platform=react-native",
"productPath": "/docs/capture-feedback",
"platformPath": "/platforms/react-native"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Capture & Feedback · Flutter qualification
- Identity: `capability-qualification:capture-feedback--flutter--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=capture-feedback&platform=flutter
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "capture-feedback--flutter--qualification",
"matrixCellId": "capture-feedback--flutter",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "flutter",
"name": "Flutter",
"headline": "Use one Dart experience with deliberate native Mappls configuration underneath."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "flutter-map",
"title": "Build a native-backed Flutter place picker",
"href": "/quickstart/flutter-map"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "flutter-map-starter",
"title": "Flutter place-selection starter",
"href": "/starter-kits/flutter-map-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=capture-feedback&platform=flutter",
"apiPath": "/api/capability-qualifications?product=capture-feedback&platform=flutter",
"downloadPath": "/api/capability-qualifications?product=capture-feedback&platform=flutter&download=1",
"matrixPath": "/platforms/matrix?product=capture-feedback&platform=flutter",
"productPath": "/docs/capture-feedback",
"platformPath": "/platforms/flutter"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Capture & Feedback · Cordova qualification
- Identity: `capability-qualification:capture-feedback--cordova--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=capture-feedback&platform=cordova
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "capture-feedback--cordova--qualification",
"matrixCellId": "capture-feedback--cordova",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "cordova",
"name": "Cordova",
"headline": "Maintain hybrid location experiences with explicit native ownership and a migration path."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance",
"title": "Stabilize a Cordova map before migration",
"href": "/quickstart/cordova-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "cordova-maintenance-starter",
"title": "Cordova stabilization starter",
"href": "/starter-kits/cordova-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=capture-feedback&platform=cordova",
"apiPath": "/api/capability-qualifications?product=capture-feedback&platform=cordova",
"downloadPath": "/api/capability-qualifications?product=capture-feedback&platform=cordova&download=1",
"matrixPath": "/platforms/matrix?product=capture-feedback&platform=cordova",
"productPath": "/docs/capture-feedback",
"platformPath": "/platforms/cordova"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Capture & Feedback · Xamarin qualification
- Identity: `capability-qualification:capture-feedback--xamarin--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=capture-feedback&platform=xamarin
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "capture-feedback--xamarin--qualification",
"matrixCellId": "capture-feedback--xamarin",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "xamarin",
"name": "Xamarin",
"headline": "Stabilize existing .NET mobile integrations and move forward without losing behavior."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "native-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance",
"title": "Extract a Xamarin map integration for replacement",
"href": "/quickstart/xamarin-maintenance"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "xamarin-maintenance-starter",
"title": "Xamarin extraction starter",
"href": "/starter-kits/xamarin-maintenance-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Package or bundle identity and signing owner",
"SDK/wrapper version plus build-tool matrix",
"Permission, lifecycle, device, and release-artifact identity",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=capture-feedback&platform=xamarin",
"apiPath": "/api/capability-qualifications?product=capture-feedback&platform=xamarin",
"downloadPath": "/api/capability-qualifications?product=capture-feedback&platform=xamarin&download=1",
"matrixPath": "/platforms/matrix?product=capture-feedback&platform=xamarin",
"productPath": "/docs/capture-feedback",
"platformPath": "/platforms/xamarin"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Capture & Feedback · Linux qualification
- Identity: `capability-qualification:capture-feedback--linux--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=capture-feedback&platform=linux
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "capture-feedback--linux--qualification",
"matrixCellId": "capture-feedback--linux",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "linux",
"name": "Linux",
"headline": "Run location and navigation reliably on controlled, embedded Linux systems."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "entitled-runtime",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "linux-embedded",
"title": "Boot a supervised embedded map client",
"href": "/quickstart/linux-embedded"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "linux-embedded-starter",
"title": "Embedded Linux supervisor starter",
"href": "/starter-kits/linux-embedded-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Hardware/OS/runtime and protected distribution identity",
"License or entitlement reference—not its contents",
"Artifact checksum, update channel, and rollback owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=capture-feedback&platform=linux",
"apiPath": "/api/capability-qualifications?product=capture-feedback&platform=linux",
"downloadPath": "/api/capability-qualifications?product=capture-feedback&platform=linux&download=1",
"matrixPath": "/platforms/matrix?product=capture-feedback&platform=linux",
"productPath": "/docs/capture-feedback",
"platformPath": "/platforms/linux"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Capture & Feedback · Automotive qualification
- Identity: `capability-qualification:capture-feedback--automotive--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=capture-feedback&platform=automotive
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "capture-feedback--automotive--qualification",
"matrixCellId": "capture-feedback--automotive",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "automotive",
"name": "Automotive",
"headline": "Treat in-vehicle navigation as a safety-aware, upgradeable system—not a screen."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "entitled-runtime",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation",
"title": "Simulate one recoverable navigation session",
"href": "/quickstart/automotive-navigation"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "automotive-navigation-starter",
"title": "Automotive release-manifest starter",
"href": "/starter-kits/automotive-navigation-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Hardware/OS/runtime and protected distribution identity",
"License or entitlement reference—not its contents",
"Artifact checksum, update channel, and rollback owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=capture-feedback&platform=automotive",
"apiPath": "/api/capability-qualifications?product=capture-feedback&platform=automotive",
"downloadPath": "/api/capability-qualifications?product=capture-feedback&platform=automotive&download=1",
"matrixPath": "/platforms/matrix?product=capture-feedback&platform=automotive",
"productPath": "/docs/capture-feedback",
"platformPath": "/platforms/automotive"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Capture & Feedback · Widgets qualification
- Identity: `capability-qualification:capture-feedback--widgets--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=capture-feedback&platform=widgets
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "capture-feedback--widgets--qualification",
"matrixCellId": "capture-feedback--widgets",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "widgets",
"name": "Widgets",
"headline": "Embed complete Mappls experiences while keeping hand-off, privacy, and fallback deliberate."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "widgets-place",
"title": "Embed a place journey with an owned fallback",
"href": "/quickstart/widgets-place"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "widgets-place-starter",
"title": "Widget journey host starter",
"href": "/starter-kits/widgets-place-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=capture-feedback&platform=widgets",
"apiPath": "/api/capability-qualifications?product=capture-feedback&platform=widgets",
"downloadPath": "/api/capability-qualifications?product=capture-feedback&platform=widgets&download=1",
"matrixPath": "/platforms/matrix?product=capture-feedback&platform=widgets",
"productPath": "/docs/capture-feedback",
"platformPath": "/platforms/widgets"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Capture & Feedback · Deep links qualification
- Identity: `capability-qualification:capture-feedback--deep-links--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=capture-feedback&platform=deep-links
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "capture-feedback--deep-links--qualification",
"matrixCellId": "capture-feedback--deep-links",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "deep-links",
"name": "Deep links",
"headline": "Open useful Mappls place and journey experiences from any channel—with no SDK requirement."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "browser-or-embed",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "deep-links",
"title": "Ship one zero-SDK Mappls hand-off",
"href": "/quickstart/deep-links"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "deep-links-starter",
"title": "Deep-link handoff starter",
"href": "/starter-kits/deep-links-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"Exact HTTPS origin and CSP policy",
"Script, iframe, widget, or deep-link generation",
"Browser fallback and message-origin contract",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=capture-feedback&platform=deep-links",
"apiPath": "/api/capability-qualifications?product=capture-feedback&platform=deep-links",
"downloadPath": "/api/capability-qualifications?product=capture-feedback&platform=deep-links&download=1",
"matrixPath": "/platforms/matrix?product=capture-feedback&platform=deep-links",
"productPath": "/docs/capture-feedback",
"platformPath": "/platforms/deep-links"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## capability-qualification · Capture & Feedback · MCP qualification
- Identity: `capability-qualification:capture-feedback--mcp--qualification`
- Canonical: https://developer.mappls.com/platforms/qualify?product=capture-feedback&platform=mcp
- State model: hybrid
```json
{
"schemaVersion": "mappls.capability-qualification.v1",
"id": "capture-feedback--mcp--qualification",
"matrixCellId": "capture-feedback--mcp",
"product": {
"slug": "capture-feedback",
"name": "Capture & Feedback",
"summary": "On-demand location capture, camera evidence, map feedback, and update workflows.",
"category": "Data operations",
"accent": "#1c9c62"
},
"platform": {
"slug": "mcp",
"name": "MCP",
"headline": "Give AI systems typed Mappls capabilities with policy, evidence, and human control."
},
"status": "not-listed",
"stateModel": "hybrid",
"integrationLane": "ai-client",
"decision": {
"availability": "not-listed",
"evidenceStatus": "not-listed",
"exactEvidence": [],
"supportingEvidence": [
{
"kind": "quickstart",
"fidelity": "platform-adjacent",
"slug": "mcp-agent",
"title": "Connect a read-only Mappls agent",
"href": "/quickstart/mcp-agent"
},
{
"kind": "starter-kit",
"fidelity": "platform-adjacent",
"slug": "mcp-agent-starter",
"title": "MCP client policy starter",
"href": "/starter-kits/mcp-agent-starter"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "grid-restoration-desk",
"title": "Grid Restoration Desk",
"href": "/samples/grid-restoration-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "care-transfer-desk",
"title": "Care Transfer Desk",
"href": "/samples/care-transfer-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "airside-turnaround-desk",
"title": "Airside Turnaround Desk",
"href": "/samples/airside-turnaround-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "field-service",
"title": "Field Service Console",
"href": "/samples/field-service"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "address-verifier",
"title": "Address Verifier",
"href": "/samples/address-verifier"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "vision-evidence-desk",
"title": "Vision Evidence Desk",
"href": "/samples/vision-evidence-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "place-contribution-desk",
"title": "Place Contribution Desk",
"href": "/samples/place-contribution-desk"
},
{
"kind": "sample-app",
"fidelity": "product-adjacent",
"slug": "realview-inspection-desk",
"title": "RealView Inspection Desk",
"href": "/samples/realview-inspection-desk"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "ios-feedback-report-review",
"title": "iOS feedback report and review",
"href": "/journeys/ios-feedback-report-review"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "location-capture-evidence",
"title": "Consent-bound location capture evidence",
"href": "/journeys/location-capture-evidence"
},
{
"kind": "journey",
"fidelity": "product-adjacent",
"slug": "place-contribution-publication",
"title": "Governed place contribution and publication",
"href": "/journeys/place-contribution-publication"
}
],
"boundary": "This product does not list this platform in the canonical product catalog. Adjacent source, tutorial, sample, or platform evidence must not be promoted to compatibility or availability."
},
"authenticationCandidates": [],
"identityLock": [
"Product and platform decision ID",
"Account and environment reference",
"Region and data-residency decision",
"MCP deployment and transport identity",
"OAuth resource, issuer, audience, client, and profile",
"Exact tool allowlist, human boundary, and durable-state owner",
"Source/distribution fingerprint and release owner",
"Quota, support, incident, rollback, and retirement owners"
],
"scenarios": [
{
"id": "clean-build",
"title": "Clean build and identity lock",
"purpose": "Prove the selected source, distribution, toolchain, and runtime identity from a clean environment.",
"expectedEvidence": "Checksums, dependency lock, build log, runtime identity, and exact evidence links agree without workstation-only state.",
"recovery": "Stop qualification, reconcile the exact distribution or contract, and rebuild from a clean environment."
},
{
"id": "fixture-success",
"title": "Deterministic fixture success",
"purpose": "Exercise the application adapter without credentials or provider traffic.",
"expectedEvidence": "The fixture produces the documented application contract and retains source identity plus state ownership.",
"recovery": "Fix the application boundary before requesting account access; a live call must not compensate for an unproven adapter."
},
{
"id": "authentication-denied",
"title": "Missing, denied, expired, and revoked access",
"purpose": "Prove least-privilege failure without logging, reflecting, or weakening credential controls.",
"expectedEvidence": "Every access failure is classified, redacted, bounded, and routes to entitlement or credential reconciliation.",
"recovery": "Stop retries, preserve only safe request evidence, and reconcile the issued account contract independently."
},
{
"id": "quota-unavailable",
"title": "Quota, timeout, offline, and service unavailability",
"purpose": "Prove bounded retry, fallback, and user-visible degradation for the exact operation safety class.",
"expectedEvidence": "Retry-After is honored where present; uncertain state changes never become blind retries.",
"recovery": "Use bounded backoff for safe reads and reconcile state-changing unknown outcomes before replay."
},
{
"id": "upgrade-rollback",
"title": "Upgrade, downgrade, and rollback",
"purpose": "Prove that source, SDK, wrapper, schema, and runtime changes are independently reversible.",
"expectedEvidence": "Compatibility evidence names both versions, acceptance results, rollback trigger, and retained data/state behavior.",
"recovery": "Freeze rollout, restore the last qualified artifact, and reopen source and entitlement selection."
},
{
"id": "idempotent-replay",
"title": "Idempotent command replay",
"purpose": "Repeat one stable command identity after a committed or uncertain result.",
"expectedEvidence": "The aggregate version and application event identity do not duplicate.",
"recovery": "Reconcile by stable business and provider identity before any new command."
},
{
"id": "stale-version",
"title": "Stale version and concurrent actor",
"purpose": "Prevent an older actor or callback from overwriting newer durable truth.",
"expectedEvidence": "The stale transition is rejected without state mutation or event emission.",
"recovery": "Reload the current aggregate, re-evaluate policy, and require a new attributable decision."
},
{
"id": "unknown-outcome",
"title": "Unknown provider outcome",
"purpose": "Separate timeout from failure and preserve a recoverable pending state.",
"expectedEvidence": "The application records the attempt, reconciles provider truth, and completes or retries without duplication.",
"recovery": "Do not infer success or failure; reconcile using the exact issued operation and durable identity."
},
{
"id": "restart-recovery",
"title": "Restart and delayed evidence",
"purpose": "Recover application-owned state after process restart and reject late or superseded callbacks.",
"expectedEvidence": "The journey resumes from durable records and preserves generation, actor, and event ordering.",
"recovery": "Rebuild the read model from immutable application evidence and quarantine ambiguous callbacks."
}
],
"phases": [
{
"id": "select-authority",
"title": "Lock source and product authority",
"owner": "Product owner + application technical owner",
"state": "actionable",
"objective": "Resolve the exact product, platform, source, distribution, generation, account, region, and owner before code or access is approved.",
"activities": [
"Review exact evidence separately from adjacent learning material.",
"Record every unresolved package, endpoint, callback, entitlement, and version question.",
"Keep not-listed and selection-required decisions blocked until an attributable owner supplies exact evidence."
],
"exitEvidence": [
"Immutable product-platform decision",
"Exact source/distribution identities and fingerprints",
"Named product, security, application, and release owners"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "lock-runtime",
"title": "Lock runtime and authentication",
"owner": "Application owner + security",
"state": "blocked",
"objective": "Bind the runtime identity to one authentication generation and least-privilege placement without accepting a credential value.",
"activities": [
"Record the runtime identity fields for this integration lane.",
"Choose one issued authentication path and document forbidden placement.",
"Define non-production restrictions, rotation, redaction, and incident ownership."
],
"exitEvidence": [
"Runtime compatibility decision",
"Credential class and restriction record",
"Secret/public-value placement review"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "prove-fixture",
"title": "Prove the application contract offline",
"owner": "Application team",
"state": "blocked",
"objective": "Exercise a deterministic adapter and every application-owned invariant before provider access.",
"activities": [
"Run the clean-build and fixture-success scenarios.",
"Normalize provider-shaped data at the adapter edge and keep opaque objects out of durable state.",
"Prove denial, quota, unavailable, upgrade, and rollback behavior with fixtures."
],
"exitEvidence": [
"Fixture results tied to the source lock",
"Application contract/schema",
"Failure and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification."
]
},
{
"id": "qualify-nonproduction",
"title": "Qualify issued non-production access",
"owner": "Product owner + application team",
"state": "blocked",
"objective": "Run the smallest read or explicitly approved test journey against an issued non-production account without exporting secrets or sensitive payloads.",
"activities": [
"Confirm account, entitlement, host, region, quota, and exact operation/distribution.",
"Capture credential-free conformance results and safe request identities.",
"Compare live shape and failure classification to the locked application contract."
],
"exitEvidence": [
"Signed or attributable product-owner decision",
"Credential-free conformance report",
"Account/region/quota/entitlement reference",
"Observed compatibility and divergence record"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Issued non-production account and approved provider contract are external requirements."
]
},
{
"id": "exercise-journey",
"title": "Exercise lifecycle and hostile paths",
"owner": "Application team + operations",
"state": "blocked",
"objective": "Prove complete success, denial, degradation, recovery, restart, and rollback behavior at the integration's true state depth.",
"activities": [
"Execute every published qualification scenario.",
"For hybrid/stateful work, prove replay, stale-version, unknown-outcome, and restart recovery.",
"Verify telemetry, quota alarms, support evidence, cleanup, and rollback."
],
"exitEvidence": [
"Scenario-by-scenario result ledger",
"State/reconciliation evidence where applicable",
"Alert, runbook, support, cleanup, and rollback evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"Operational telemetry and provider-degradation exercises require an approved environment."
]
},
{
"id": "approve-release",
"title": "Independent release and deployment",
"owner": "Independent security + operations + product release owners",
"state": "blocked",
"objective": "Freeze the qualified artifact and collect independent authority without allowing developer evidence to self-approve production.",
"activities": [
"Attach exact artifacts to the governed release workflow.",
"Review security/privacy, product conformance, operations, quota, regional, legal, and rollback evidence.",
"Use progressive deployment and independently reconcile production health."
],
"exitEvidence": [
"Immutable release artifact and evidence digests",
"Independent approvals",
"Progressive deployment, rollback, and post-release reconciliation evidence"
],
"blockedBy": [
"The canonical product catalog does not list this platform.",
"A product owner must establish availability before implementation qualification.",
"This catalog never grants entitlement, support, production release, or deployment authority."
]
}
],
"releaseEvidence": [
"Exact source, package/distribution, contract generation, and runtime identity",
"Issued account, entitlement, region, quota, and credential-class reference without secret values",
"Clean build, fixture, non-production conformance, hostile-path, upgrade, and rollback results",
"Security, privacy, accessibility, operational, legal/content, and product-owner decisions",
"Immutable release artifact digest, progressive deployment evidence, and independent post-release reconciliation"
],
"handoff": {
"websitePath": "/platforms/qualify?product=capture-feedback&platform=mcp",
"apiPath": "/api/capability-qualifications?product=capture-feedback&platform=mcp",
"downloadPath": "/api/capability-qualifications?product=capture-feedback&platform=mcp&download=1",
"matrixPath": "/platforms/matrix?product=capture-feedback&platform=mcp",
"productPath": "/docs/capture-feedback",
"platformPath": "/platforms/mcp"
},
"safety": {
"providerCalls": 0,
"credentialsAccepted": false,
"providerPayloadsAccepted": false,
"writesExposed": false,
"productionApprovalGranted": false
}
}
```
## api-operation · Address Standardization API
- Identity: `api-operation:core-location-get-api-places-woodpecker-address-standardization-api`
- Canonical: https://developer.mappls.com/api-reference/core-location-get-api-places-woodpecker-address-standardization-api
- State model: stateless
```json
{
"slug": "core-location-get-api-places-woodpecker-address-standardization-api",
"family": "core-location",
"familyName": "Core Maps, Search & Routing",
"product": "Core Location",
"stateModel": "stateless",
"contractStatus": "legacy-source",
"sourceId": "local-contenthub-dochub-mapmyindia-rest-api",
"sourceFile": "contenthub/dochub/mapmyindia-rest-api/docs/custom/woodpecker.yml",
"sourceFingerprint": "3f28b55a402736d962c9a4249a77738d2435dc61d2274164b43e440892aee908",
"specVersion": "3.0.3",
"apiVersion": "1.0.0",
"sourceGeneration": "v1-0-0",
"method": "GET",
"path": "/api/places/woodpecker",
"baseUrl": "https://atlas.mapmyindia.com",
"requestUrl": "https://atlas.mapmyindia.com/api/places/woodpecker?address=237+Okhla+industrial+estate+phase+3+new+Delhi%2C+Delhi+110020",
"operationId": "WoodpeckerAPI",
"summary": "Address Standardization API",
"description": "Address Standardization API is a process to convert the non formatted address into the user readable format by omitting unnecessary information in the address. MapmyIndia address standardization API provides real addresses along with admin and other information. This APIs follow OAuth2 based security. To know more on how to create your authorization tokens, please use our authorization token URL. More details available here. Live Demo",
"tags": [
"Address Standardization API"
],
"deprecated": false,
"auth": {
"mode": "oauth2-bearer",
"schemes": [
{
"name": "BearerAuth",
"type": "http",
"scheme": "bearer"
}
]
},
"parameters": [
{
"name": "address",
"in": "query",
"required": true,
"type": "string",
"description": "The full human readable address that needs to be standardized",
"example": "237 Okhla industrial estate phase 3 new Delhi, Delhi 110020",
"enum": []
},
{
"name": "bias",
"in": "query",
"required": false,
"type": "number",
"description": "parameter value can be set to get the bias result towards the urban or rural side. (Default is 1.5 : urban). Where 1 is neutral and 1 is Urban biased.",
"example": 1.5,
"enum": []
}
],
"request": {
"required": false,
"contentTypes": [],
"fields": [],
"example": null
},
"responses": [
{
"status": "200",
"description": "OK",
"fields": [
{
"name": "inputAddress",
"type": "string",
"required": true,
"description": "this is the address entered by the user.",
"example": "237, MapmyIndia Head Office, Okhla Phase 3, New Delhi, Delhi 110010",
"enum": []
},
{
"name": "remainingAddress",
"type": "string",
"required": true,
"description": "this is the address striked out by the API.",
"example": "mapmyindia head office, okhla new",
"enum": []
},
{
"name": "referentialInformation",
"type": "object",
"required": true,
"description": "",
"example": "example",
"enum": []
},
{
"name": "referentialInformation.pincodes",
"type": "string",
"required": true,
"description": "PIN code tagged from input address if found any.",
"example": "110010",
"enum": []
},
{
"name": "referentialInformation.floors",
"type": "string",
"required": true,
"description": "Floor info tagged from input address if found any.",
"example": "Floor No 1",
"enum": []
},
{
"name": "referentialInformation.roads",
"type": "string",
"required": true,
"description": "Road tagged from the input address if found any.",
"example": "Okhla Road",
"enum": []
},
{
"name": "referentialInformation.postOffices",
"type": "string",
"required": true,
"description": "Post offices tagged from the input address if found any.",
"example": "",
"enum": []
},
{
"name": "referentialInformation.careOfs",
"type": "string",
"required": true,
"description": "Care of (C/O) tagged from the input address if found any.",
"example": "",
"enum": []
},
{
"name": "referentialInformation.landmarks",
"type": "string",
"required": true,
"description": "Landmark tagged from the input address if found any.",
"example": "",
"enum": []
},
{
"name": "referentialInformation.houseNumbers",
"type": "object",
"required": true,
"description": "House number information tagged from the input address if found any.",
"example": "example",
"enum": []
},
{
"name": "referentialInformation.houseNumbers.prefix",
"type": "string",
"required": true,
"description": "",
"example": "",
"enum": []
},
{
"name": "referentialInformation.houseNumbers.houseNo",
"type": "string",
"required": true,
"description": "",
"example": "237",
"enum": []
},
{
"name": "referentialInformation.houseNumbers.formatted",
"type": "string",
"required": true,
"description": "",
"example": "237",
"enum": []
},
{
"name": "addressInformation",
"type": "object",
"required": true,
"description": "",
"example": "example",
"enum": []
},
{
"name": "addressInformation.adminDetails",
"type": "object",
"required": true,
"description": "",
"example": "example",
"enum": []
},
{
"name": "addressInformation.adminDetails.state",
"type": "object",
"required": true,
"description": "",
"example": "1700000000000",
"enum": []
},
{
"name": "addressInformation.adminDetails.state.originalName",
"type": "string",
"required": true,
"description": "",
"example": "Delhi",
"enum": []
},
{
"name": "addressInformation.adminDetails.locality",
"type": "object",
"required": true,
"description": "",
"example": "example",
"enum": []
},
{
"name": "addressInformation.adminDetails.locality.originalName",
"type": "string",
"required": true,
"description": "",
"example": "New Moti Nagar",
"enum": []
},
{
"name": "addressInformation.adminDetails.city",
"type": "object",
"required": true,
"description": "",
"example": "example",
"enum": []
},
{
"name": "addressInformation.adminDetails.city.originalName",
"type": "string",
"required": true,
"description": "",
"example": "New Delhi",
"enum": []
},
{
"name": "addressInformation.adminDetails.sublocality",
"type": "object",
"required": true,
"description": "",
"example": "example",
"enum": []
},
{
"name": "addressInformation.adminDetails.sublocality.originalName",
"type": "string",
"required": true,
"description": "",
"example": "Phase 3",
"enum": []
},
{
"name": "addressInformation.adminDetails.subsublocality",
"type": "object",
"required": true,
"description": "",
"example": "example",
"enum": []
},
{
"name": "addressInformation.adminDetails.subsublocality.originalName",
"type": "string",
"required": true,
"description": "",
"example": "Okhla",
"enum": []
},
{
"name": "addressInformation.adminPattern",
"type": "array",
"required": true,
"description": "",
"example": [
"state",
"city",
"locality",
"subLocality"
],
"enum": []
}
],
"example": {
"inputAddress": "237, MapmyIndia Head Office, Okhla Phase 3, New Delhi, Delhi 110010",
"remainingAddress": "mapmyindia head office, okhla new",
"referentialInformation": {
"pincodes": "110010",
"floors": "Floor No 1",
"roads": "Okhla Road",
"postOffices": "",
"careOfs": "",
"landmarks": "",
"houseNumbers": {
"prefix": "",
"houseNo": "237",
"formatted": "237"
}
},
"addressInformation": {
"adminDetails": {
"state": {
"originalName": "Delhi"
},
"locality": {
"originalName": "New Moti Nagar"
},
"city": {
"originalName": "New Delhi"
},
"sublocality": {
"originalName": "Phase 3"
},
"subsublocality": {
"originalName": "Okhla"
}
},
"adminPattern": [
"state",
"city",
"locality",
"subLocality"
]
}
}
},
{
"status": "204",
"description": "Not found",
"fields": [],
"example": null
},
{
"status": "400",
"description": "Bad request",
"fields": [],
"example": null
},
{
"status": "401",
"description": "API access denied",
"fields": [],
"example": null
},
{
"status": "403",
"description": "Forbidden",
"fields": [],
"example": null
},
{
"status": "500",
"description": "Something went wrong",
"fields": [],
"example": null
},
{
"status": "503",
"description": "Internal server error",
"fields": [],
"example": null
}
],
"samples": [
{
"language": "bash",
"label": "cURL",
"code": "curl --request GET \\\n --url 'https://atlas.mapmyindia.com/api/places/woodpecker?address=237+Okhla+industrial+estate+phase+3+new+Delhi%2C+Delhi+110020' \\\n --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'"
},
{
"language": "javascript",
"label": "JavaScript",
"code": "const response = await fetch(\"https://atlas.mapmyindia.com/api/places/woodpecker?address=237+Okhla+industrial+estate+phase+3+new+Delhi%2C+Delhi+110020\", {\n method: \"GET\",\n headers: { Authorization: `Bearer ${process.env.MAPPLS_ACCESS_TOKEN}` }\n});\n\nif (!response.ok) throw new Error(`Mappls request failed: ${response.status}`);\nconst result = await response.json();"
},
{
"language": "python",
"label": "Python",
"code": "import os\nimport requests\n\nheaders = {\"Authorization\": f\"Bearer {os.environ['MAPPLS_ACCESS_TOKEN']}\"}\nresponse = requests.request(\n \"GET\",\n \"https://atlas.mapmyindia.com/api/places/woodpecker?address=237+Okhla+industrial+estate+phase+3+new+Delhi%2C+Delhi+110020\",\n headers=headers,\n timeout=15,\n)\nresponse.raise_for_status()\nresult = response.json()"
},
{
"language": "java",
"label": "Java",
"code": "var requestBuilder = HttpRequest.newBuilder()\n .uri(URI.create(\"https://atlas.mapmyindia.com/api/places/woodpecker?address=237+Okhla+industrial+estate+phase+3+new+Delhi%2C+Delhi+110020\"))\n .timeout(Duration.ofSeconds(15))\n .header(\"Authorization\", \"Bearer \" + System.getenv(\"MAPPLS_ACCESS_TOKEN\"))\n .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n .build();\n\nvar response = HttpClient.newHttpClient()\n .send(requestBuilder, HttpResponse.BodyHandlers.ofString());"
},
{
"language": "csharp",
"label": "C#",
"code": "using var request = new HttpRequestMessage(HttpMethod.Get, \"https://atlas.mapmyindia.com/api/places/woodpecker?address=237+Okhla+industrial+estate+phase+3+new+Delhi%2C+Delhi+110020\");\nrequest.Headers.Authorization = new AuthenticationHeaderValue(\"Bearer\", Environment.GetEnvironmentVariable(\"MAPPLS_ACCESS_TOKEN\"));\nusing var response = await httpClient.SendAsync(request);\nresponse.EnsureSuccessStatusCode();"
}
],
"journeyRole": "request-response",
"evidenceScore": 35,
"generationGroup": "core-location-get-api-places-woodpecker-690bbb30d1",
"generationCount": 1,
"preferredGeneration": "v1-0-0",
"isPreferredGeneration": true,
"alternativeSlugs": []
}
```
## api-operation · AutoSuggest API
- Identity: `api-operation:core-location-get-api-places-search-json-autosuggest-api`
- Canonical: https://developer.mappls.com/api-reference/core-location-get-api-places-search-json-autosuggest-api
- State model: stateless
```json
{
"slug": "core-location-get-api-places-search-json-autosuggest-api",
"family": "core-location",
"familyName": "Core Maps, Search & Routing",
"product": "Core Location",
"stateModel": "stateless",
"contractStatus": "legacy-source",
"sourceId": "local-contenthub-dochub-mapmyindia-rest-api",
"sourceFile": "contenthub/dochub/mapmyindia-rest-api/docs/custom/autosuggest.yml",
"sourceFingerprint": "853e2a51f94cc6cc10291bdfdfbd49d57c6cbe56b91a8ab7893a66639a595cf4",
"specVersion": "3.0.3",
"apiVersion": "1.0.0",
"sourceGeneration": "v1-0-0",
"method": "GET",
"path": "/api/places/search/json",
"baseUrl": "https://atlas.mapmyindia.com",
"requestUrl": "https://atlas.mapmyindia.com/api/places/search/json?query=mapmyindia",
"operationId": "AutoSuggestAPI",
"summary": "AutoSuggest API",
"description": "The Autosuggest API helps users to complete queries faster by adding intelligent search capabilities to your web or mobile app. This API returns a list of results as well as suggested queries as the user types in the search field. This API also supports Hindi language. If a user enters query in hindi language he will get results in Hindi. This APIs follow OAuth2 based security. To know more on how to create your authorization tokens, please use our authorization token URL. More details available here. Live Demo | Download Sample Code",
"tags": [
"Autosuggest API"
],
"deprecated": false,
"auth": {
"mode": "oauth2-bearer",
"schemes": [
{
"name": "BearerAuth",
"type": "http",
"scheme": "bearer"
}
]
},
"parameters": [
{
"name": "query",
"in": "query",
"required": true,
"type": "string",
"description": "Enter the query on which the search has to be done.",
"example": "mapmyindia",
"enum": []
},
{
"name": "location",
"in": "query",
"required": false,
"type": "string",
"description": "Location is required to get location biased autosuggest results.",
"example": "28.612964,77.229463",
"enum": []
},
{
"name": "region",
"in": "query",
"required": false,
"type": "string",
"description": "It takes in the country code. Possible values are listed in a table here. Default is India (IND).",
"example": "IND",
"enum": []
},
{
"name": "tokenizeAddress",
"in": "query",
"required": false,
"type": "boolean",
"description": "It is the valueless parameter provides the different address attributes in a structured object.",
"example": "YOUR_ACCESS_TOKEN",
"enum": []
},
{
"name": "pod",
"in": "query",
"required": false,
"type": "string",
"description": "It takes in the place type code which helps in restricting the results to certain chosen type. This optional parameter & its related effect on response is not applicable for regions apart from India (IND). Below mentioned are the codes for the pod: SLC: Sublocality LC: Locality CITY: City VLG: Village SDIST: Subdistrict DIST: District STATE: State SSLC: Subsublocality",
"example": "CITY",
"enum": []
},
{
"name": "filter",
"in": "query",
"required": false,
"type": "string",
"description": "This parameter helps you restrict the result either by mentioning a bounded area or to certain eloc (6 digit code to any poi, locality, city, etc.). This optional parameter & its related effect on response is not applicable for regions apart from India (IND). Below mentioned are the available types: filter = pin:It takes pincode/postal code of an area{e.g. filter=pin:110055} filter = bounds lat1,lng1;lat2,lng2(latitude,longitude){e.g. filter=bounds 28.598882, 77.212407; 28.467375, 77.353513} filter = cop {eloc} (string) {e.g. filter=cop:YMCZ0J}",
"example": "pin:110001",
"enum": []
},
{
"name": "bridge",
"in": "query",
"required": false,
"type": "boolean",
"description": "(Valueless)It initiates a bridge to be created to provide applicable nearby API searches in the suggestedSearches response object. This optional parameter & its related effect on response is not applicable for regions apart from India (IND).",
"example": "true",
"enum": []
},
{
"name": "hyperLocal",
"in": "query",
"required": false,
"type": "boolean",
"description": "(valueless): This parameter lets the search give results that are hyper-localized to the reference location passed in the location parameter. This means that nearby results are given higher ranking than results far from the reference location. Highly prominent results will still appear in the search results, however they will be lower in the list of results. This parameter will work ONLY in conjunction with the location parameter. This optional parameter & its related effect on response is not applicable for regions apart from India (IND).",
"example": "true",
"enum": []
}
],
"request": {
"required": false,
"contentTypes": [],
"fields": [],
"example": null
},
"responses": [
{
"status": "200",
"description": "OK",
"fields": [
{
"name": "suggestedLocations",
"type": "array