ArcGIS Developer Foundation: REST Services, Authentication, and Query Mechanics
The ArcGIS Developer Foundation exam tests how developers build against the ArcGIS platform: the REST service model, authentication choices, portal item mechanics, and client API patterns. Questions are practical-given a task, select the correct endpoint, request parameters, or auth flow.
Platform model and REST endpoints
ArcGIS is organized around portal items and REST services. A feature layer is exposed through a FeatureServer; a map layer through a MapServer; geoprocessing through a GPServer. Requests accept f=json or f=pjson. The services root is typically https://<host>/<webadaptor>/rest/services; portal content lives under /sharing/rest/content/items/{itemId}. Discover service URLs from item data instead of hard-coding them.
Authentication
API keys are intended for ready-to-use services such as basemaps, geocoding, and routing; they do not grant access to private user content. OAuth 2.0 with ArcGIS Identity is for named-user access to private items and editing. Token-based requests append token=...; tokens expire and must be refreshed. Server-side apps should use client credentials or an API key where appropriate-never embed user credentials in client code.
Queries and geometry
Feature service query parameters include where, outFields, returnGeometry, geometry, geometryType, inSR/outSR, orderByFields, and resultOffset/resultRecordCount. A response sets exceededTransferLimit=true when more records exist. Geometry JSON uses rings for polygons and paths for polylines; coordinates follow the layer's spatial reference.
Worked example
Goal: fetch parcel IDs and areas where zoning = 'R1', in WGS84, first 1,000 records. Endpoint: https://services.example.com/arcgis/rest/services/Parcels/FeatureServer/0/query. Parameters: where=zoning%3D'R1', outFields=parcel_id,area, returnGeometry=false, outSR=4326, resultRecordCount=1000, f=json, token=<OAuth token>. Reasoning: use FeatureServer/0 because layer 0 is the parcel layer; outFields limits payload; outSR=4326 returns WGS84; resultRecordCount caps the page; check exceededTransferLimit before looping with resultOffset. If no features return, inspect the layer's ?f=json metadata to verify field names and query capability.
Traps
- Querying a
MapServerlayer that is not queryable; check the layer'scapabilities. - Omitting
f=jsonand receiving HTML instead of JSON. - Assuming an API key can access private feature layers.
- Ignoring pagination and silently truncating results.
- Reversing coordinate order: ArcGIS geometry JSON is x,y (longitude, latitude), not lat/lon.