Skip to content
Octo × mapagent API PT Request an assessment

Octo for the MapGuide mapagent API

The map server answers over HTTP. Who decides what it publishes is you.

Everything the MapGuide viewer does goes through mapagent: listing and writing resources, opening the map, drawing the image, serving tiles, querying features. Octo turns this into scripts with curl and Python, checks every response by its content and not by the 200 code, and rehearses every change in a session before Library://. What is public, what goes to production and when the server changes stay with the administrator and the technical lead.

A terminal sends requests to mapagent with OPERATION set to CREATESESSION, ENUMERATERESOURCES and GETTILEIMAGE; Octo, in the center, carries the responses to a tile grid of a fictitious city, with one tile highlighted, and to a badge that checks the response by its PNG signature instead of the HTTP code $ curl mapagent.fcgi \ OPERATION=CREATESESSION session ok $ ENUMERATERESOURCES VERSION=4.0.0 CLEAN=1 resources and FeatureSources listed $ GETTILEIMAGE 1.2.0 10/10/3 T01 same · T02 same T04 CHANGED · for review GETMAPIMAGE 3.0.0 QUERYMAPFEATURES GEO.BUFFER 4.0.0 SETRESOURCE · session ONE ENDPOINT: /mapguide/mapagent/mapagent.fcgi 256 PX TILES · SCALE 3 T04 FOR REVIEW REVIEW http 200 not enough 89 50 4E 47 is PNG sha256 = before? compare FICTITIOUS DATA FORMAT=application/json CLEAN=1 OCTO × MAPAGENT MapGuide OS 4.0 M-02
MapGuide Open Source4.0announced Oct 12, 2025 on the OSGeo lists
Operations in the 4.0 branch105OPERATION constants in the source code
Clean JSON4.0.0CLEAN=1 only works with VERSION=4.0.0
Sources14listed at the end of the page
01

What Octo does with the mapagent API.

Six possible deliverables, drawn from the assessment. All of them start with a read-only account, record the version of every operation used and go to review by the server administrator.

Server smoke test

CREATESESSION, GETSITEVERSION, TESTCONNECTION on every FeatureSource and a GETMAPIMAGE checked by its PNG signature: mapagent can return 200 with an error page.

Deliverable: server health report, by resource

Repository inventory

ENUMERATERESOURCES in clean JSON, XML for every map and layer, dependencies with ENUMERATERESOURCEREFERENCES, orphans and layers pointing to sources that don't connect.

Deliverable: spreadsheet of resources and dependencies

Visual regression

The same views and tiles (GETMAPIMAGE 3.0.0, GETTILEIMAGE 1.2.0) before and after an upgrade, compared by hash and by fraction of pixels.

Deliverable: list of what changed on the published map

Reproducible spatial query

GEO.BUFFER, QUERYMAPFEATURES and GEO.SPATIALPREDICATE with written criteria: the same list of features every time the query runs.

Deliverable: feature table + recorded criteria

Publishing with a dry run

Backup of the XML, SETRESOURCE in a session, a side-by-side proof render and, only with approval, a write to Library:// checked by hash.

Deliverable: before-and-after proof + publishing log

Exposure map

What Anonymous can read, WMS and WFS switched on, empty query limits and the AnonymousDeny... lists in the 4.0 webconfig.ini.

Deliverable: list of exposures for the administrator
02

Eight arms, one checked response.

The same Octo cycle, applied to a MapGuide server. Each arm has a narrow role; the people decide what is public, approve publishing and change the server.

  1. Discovery

    Maps what the server has

    Site version, supported operations and versions, Library:// resources, FDO sources, WMS and WFS services switched on and the mapagent address.

  2. Data

    Understands the sources

    Schemas and classes via DESCRIBEFEATURESCHEMA, spatial context, the CS of each map and which layers carry personal data.

  3. Security

    Handles access

    Read-only account to start; password via POST and kept out of the script; what Anonymous can read; AnonymousDeny... lists and DisableAuthoring in webconfig.ini.

  4. Architecture

    Chooses the path

    Direct mapagent, mapguide-rest or the Web API; the version of each operation; dry run in Session: before any write to Library://.

  5. Development

    Writes the client

    curl and Python with a log, dry-run mode by default, explicit failure when the response isn't what was expected and the source of every syntax noted.

  6. Review

    Checks by content

    A PNG that really is a PNG, XML that validates, JSON with the expected count, published hash equal to the approved one. A 200 code is not a check.

  7. Release

    Writes only with your OK

    The write to production Library:// happens after approval, with a backup and a way back ready.

  8. Documentation

    Records what holds on your server

    Operations and versions used, accepted thresholds, the criteria of each query, who approved each publish. What holds on one server does not automatically hold for another.

Octo works with read access and in a support role. It does not decide what is public, publish to production without approval, use an administrator account for routine work or change anyone's server without an order.

03

Each task, its own operation.

The criteria Octo uses to choose, with the versions read from the 4.0 branch code.

TaskOperationNote
Find out if the server is aliveGETSITEVERSION, GETSITESTATUSCheck the XML, not just the HTTP code
List resources as JSONENUMERATERESOURCES with FORMAT=application/jsonCLEAN=1 only with VERSION=4.0.0
Read and write a resource's XMLGETRESOURCECONTENT, SETRESOURCEWrite via multipart POST; DisableAuthoring blocks it
Who depends on this resourceENUMERATERESOURCEREFERENCESBefore moving or deleting
Test a data sourceTESTCONNECTIONProvider details on the FDO sources page
Read features as GeoJSONSELECTFEATURES with CLEAN=1TRANSFORMTO and PRECISION in 4.0
Open the map and get layers and scalesCREATERUNTIMEMAP2.6.0, 3.0.0 or 4.0.0; REQUESTEDFEATURES=7 requests everything
Draw a viewGETMAPIMAGE1.0.0 or 3.0.0; SETVIEWCENTERX/Y, SETVIEWSCALE
Fetch a tileGETTILEIMAGE1.2.0 requires MAPDEFINITION and SCALEINDEX
Select features on the mapQUERYMAPFEATURES1.0.0, 2.6.0 or 4.0.0; capped by GlobalMaxMapFeatureQueryLimit
Server-side buffers and predicatesGEO.BUFFER, GEO.SPATIALPREDICATE4.0.0 only; WKT or GeoJSON output
Transform coordinatesCS.TRANSFORMCOORDINATES4.0.0 only; comma-separated "x y" pairs
Write featuresWeb API or mapguide-restmapagent does not expose UpdateFeatures
04

From one-off requests to your own test suite.

Three steps. Each one only makes sense after the previous one has shown results on your team.

A proposal, not a promise

1 Today

Read and inventory

Octo shows what the server has and what it exposes, without writing anything.

  • Inventory of resources and sources
  • Smoke test with a report
  • List of exposures for the administrator
Benefit: know the server's state before touching it
2 Next

Regression and repeatable queries

Reference captures, comparison on every change and spatial queries with written criteria.

  • Reference views and tiles per map
  • Report of what changed after every upgrade
  • Queries with the same rule every time
Benefit: the team reviews differences, not the whole map
3 Later

Publishing with a dry run as standard

Every resource change goes through a session, a proof and approval before Library://.

  • Automatic backup
  • Before-and-after proof attached to the approval
  • Hash check after publishing
Benefit: the public doesn't see the error first
05

Confirmed in a source.

Every point below has a source published by OSGeo (project page, official mailing lists, downloads area), by the official repository or by Autodesk. The examples are scripts, not executions. The sources are in the next section.

4

points with a published source, each with its reference shown alongside.

ConfirmedMapGuide Open Source 4.0
Announced by Jackie Ng on Oct 12, 2025 on the mapguide-users, mapguide-internals and mapguide-announce lists, with notes and downloads on the project Trac.Source: mapguide-users list, October 2025
ConfirmedCLEAN only in version 4.0.0
The parameter that requests clean JSON is read only when VERSION is 4.0.0 or higher; the test forms still ship with 1.0.0.Source: HttpRequestResponseHandler.cpp, SVN 4.0 branch
ConfirmedVersions per operation
GETMAPIMAGE 1.0.0 and 3.0.0; CREATERUNTIMEMAP 2.6.0, 3.0.0 and 4.0.0; QUERYMAPFEATURES 1.0.0, 2.6.0 and 4.0.0; GETTILEIMAGE 1.0.0 and 1.2.0; GEO.* and CS.TRANSFORMCOORDINATES 4.0.0 only.Source: HTTP handler code, 4.0 branch
ConfirmedReads denied to Anonymous
The 4.0 webconfig.ini has AnonymousDenyGetResourceContent, ...Data and ...Header; the Git mirror, frozen in 2023, does not.Source: webconfig.ini, SVN 4.0 branch
06

What Octo does and what stays with you.

Octo prepares everything, but it does not sign. The document of record stays with whoever is accountable for it.

Octo prepares

Gathers, calculates, organizes and generates the documents: scripts, inventories, reports and maps.

Deliverable: material ready to check

Your team checks

The licensed professional checks what Octo delivered before signing. If something doesn't add up, it goes back to Octo with the correction.

Step: review by the signer

The signer

Octo does not sign. Designs, technical reports, ART/RRT, accountability reports and any official document are still signed by the licensed professional of the company or agency: here, the technical lead for the map or system.

Signature: technical lead for the map or system
07

Sources.

Official 4.0 branch source code (OSGeo SVN, revision 10236), the project's mailing lists and the mapguide-rest extension, consulted on Oct 31, 2026.

Your MapGuide server, tested by what it returns.

The assessment starts with a read-only account: repository inventory, a smoke test and a list of what the server exposes, without writing anything. You get the server's state, the questions only your team can answer and a way to test every change, and you decide with that in hand.