{"surface":{"slug":"workspace-apis","title":"mGIS dataset and analysis workspace","stateModel":"workspace-stateful","readiness":"contract-selection-required","summary":"Build durable ingestion, validation, publication, styling, query, visualization, raster, AI/ML, and export workflows around mGIS resources.","durableIdentity":"Workspace, immutable dataset version, style revision, analysis attempt, output version, and governed share","credentialBoundary":"Execute stateful API calls from a trusted service using the account-specific authentication contract. Never infer a write endpoint, reuse a browser token as a server credential, or retry an unknown write with a new identity.","sourceLabels":["Official mGIS APIs","Public mGIS API repository"],"sourceUrls":["https://developer.mappls.com/analytics/mgis-apis/","https://github.com/mappls-api/mapmyindia-mgis-apis"],"evidenceBoundary":"The official overview and public repository establish API groups and lifecycle intent, but several exact operation contracts route to Swagger or API Support. This surface therefore provides a state machine and adapter seam, not manufactured URLs."},"method":null,"readiness":"contract-selection-required","samples":[{"language":"typescript","label":"Trusted adapter","code":"interface MgisWorkspaceAdapter {\n  publishDataset(command: PublishDatasetCommand): Promise<ProviderReceipt>;\n  getAttempt(id: string): Promise<AttemptStatus>;\n  createStyle(command: CreateStyleRevisionCommand): Promise<ProviderReceipt>;\n  runAnalysis(command: RunAnalysisCommand): Promise<ProviderReceipt>;\n  createExport(command: CreateExportCommand): Promise<ProviderReceipt>;\n}\n\n// Exact URLs and auth come only from the approved mGIS account contract.\n// Persist command identity before the call; reconcile timeouts by provider identity."},{"language":"text","label":"Durable flow","code":"draft → validating → published → processing → ready → shared\n   ↘ failed                         ↘ revoked\n\nEvery retry keeps workspace, dataset version, attempt, and idempotency identity."}],"lifecycle":[{"state":"selected","owner":"Product and workspace owner","proof":"Surface, account/tenant, region, entitlement, data class, and source contract are approved."},{"state":"configuring","owner":"Application adapter","proof":"One bounded configuration references stable workspace/dataset/workview identity and no server secret enters the browser."},{"state":"active","owner":"Host lifecycle","proof":"One instance or job owns listeners, requests, cancellation, retries, and observable health."},{"state":"candidate","owner":"Application domain","proof":"Provider output is schema-checked and normalized; it has not silently replaced durable state."},{"state":"committed","owner":"Application repository","proof":"A versioned record binds actor, source, provider identity, input revision, and event."},{"state":"retired / disposed","owner":"Application and workspace administrator","proof":"Runtime resources are released; durable datasets, lineage, permissions, and audit follow policy."}],"stateOwnership":["Workspace, immutable dataset version, style revision, analysis attempt, output version, and governed share","Execute stateful API calls from a trusted service using the account-specific authentication contract. Never infer a write endpoint, reuse a browser token as a server credential, or retry an unknown write with a new identity.","Provider UI/runtime is never the application database; persist normalized identities, versions, receipts, and lineage outside the browser instance.","A load, callback, tile, legend, or image proves only that observable event. Publication, analysis completion, sharing, and export require their own durable evidence."],"releaseTests":["Issued tenant, region, dataset, method, and credential class","Allowed and denied browser origins plus CSP","Slow, offline, quota, expired entitlement, and revoked access","Duplicate initialization, late callback, unmount, and browser back/forward cache","Dataset/style/workview version drift","Accessibility and non-map representation","Idempotency, expected version, unknown outcome, and reconciliation","Privacy, export, share, retention, audit, and deletion policy"],"warnings":["The official overview and public repository establish API groups and lifecycle intent, but several exact operation contracts route to Swagger or API Support. This surface therefore provides a state machine and adapter seam, not manufactured URLs.","Examples are configuration/adapter contracts with placeholders. They do not claim a live entitlement or unlisted endpoint."],"evidence":[{"label":"Official mGIS APIs","url":"https://developer.mappls.com/analytics/mgis-apis/"},{"label":"Public mGIS API repository","url":"https://github.com/mappls-api/mapmyindia-mgis-apis"}],"websiteUrl":"/tools/mgis?surface=workspace-apis"}