openapi: 3.1.0
info:
title: ESRI ArcGIS Platform API
description: >-
ESRI ArcGIS Platform REST API for sharing, managing, and accessing GIS content
including feature services, maps, layers, users, and portal items. The API enables
geospatial data management, spatial analysis, geocoding, routing, and organizational
administration for ArcGIS Online and ArcGIS Enterprise deployments.
version: 1.0.0
contact:
name: ESRI Developer Support
url: https://community.esri.com/t5/developers/ct-p/developers
license:
name: Esri Master Agreement
url: https://www.esri.com/en-us/legal/terms/master-agreement
externalDocs:
description: ArcGIS REST API Reference
url: https://developers.arcgis.com/rest/
servers:
- url: https://www.arcgis.com/sharing/rest
description: ArcGIS Online production
- url: https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer
description: ArcGIS Geocoding Service
- url: https://route.arcgis.com/arcgis/rest/services
description: ArcGIS Routing Service
- url: https://places-api.arcgis.com/arcgis/rest/services/v1
description: ArcGIS Places Service
security:
- ApiKeyAuth: []
- OAuth2: [openid]
tags:
- name: Geocoding
description: Address search, reverse geocoding, and batch geocoding
- name: Places
description: Points of interest search and retrieval
- name: Portal
description: Portal items, users, groups, and organizational management
paths:
/portals/self:
get:
operationId: getPortalSelf
summary: Get portal information
description: Returns information about the organization's portal including available resources, helpers, and members. The response includes information about the portal's name, description, and thumbnail.
tags: [Portal]
parameters:
- name: f
in: query
required: false
schema:
type: string
enum: [json, pjson, html]
default: json
description: Output format
- name: token
in: query
required: false
schema:
type: string
description: Authentication token (alternative to Authorization header)
responses:
'200':
description: Portal information returned successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Portal'
'401':
description: Unauthorized – valid token required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/community/users/{username}:
get:
operationId: getUser
summary: Get user profile
description: Returns the profile information of a specified user within the portal organization.
tags: [Portal]
parameters:
- name: username
in: path
required: true
schema:
type: string
description: Username of the ArcGIS Online user
- name: f
in: query
schema:
type: string
enum: [json, pjson]
default: json
responses:
'200':
description: User profile returned
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'404':
description: User not found
/content/users/{username}/items:
get:
operationId: getUserItems
summary: List user content items
description: Returns items owned by the specified user. Supports pagination, sorting, and filtering.
tags: [Portal]
parameters:
- name: username
in: path
required: true
schema:
type: string
- name: num
in: query
schema:
type: integer
default: 10
maximum: 100
description: Number of results to return
- name: start
in: query
schema:
type: integer
default: 1
description: Index of the first entry in the result set (1-based)
- name: sortField
in: query
schema:
type: string
enum: [created, modified, title, type]
- name: sortOrder
in: query
schema:
type: string
enum: [asc, desc]
- name: f
in: query
schema:
type: string
enum: [json, pjson]
default: json
responses:
'200':
description: User items returned
content:
application/json:
schema:
$ref: '#/components/schemas/ItemCollection'
/content/items/{itemId}:
get:
operationId: getItem
summary: Get portal item
description: Returns information about a specific portal item (map, layer, application, etc.).
tags: [Portal]
parameters:
- name: itemId
in: path
required: true
schema:
type: string
description: Unique identifier of the portal item
- name: f
in: query
schema:
type: string
enum: [json, pjson]
default: json
responses:
'200':
description: Item information returned
content:
application/json:
schema:
$ref: '#/components/schemas/Item'
'404':
description: Item not found
/search:
get:
operationId: searchPortal
summary: Search portal content
description: Searches for portal items, groups, and users using ArcGIS query syntax. Supports spatial, temporal, and attribute filtering.
tags: [Portal]
parameters:
- name: q
in: query
required: true
schema:
type: string
description: Query string using ArcGIS search syntax (e.g., "type:Feature Service owner:jsmith")
- name: num
in: query
schema:
type: integer
default: 10
maximum: 100
- name: start
in: query
schema:
type: integer
default: 1
- name: sortField
in: query
schema:
type: string
enum: [title, created, modified, type, relevance]
- name: sortOrder
in: query
schema:
type: string
enum: [asc, desc]
- name: f
in: query
schema:
type: string
enum: [json, pjson]
default: json
responses:
'200':
description: Search results returned
content:
application/json:
schema:
$ref: '#/components/schemas/SearchResults'
/findAddressCandidates:
get:
operationId: findAddressCandidates
summary: Geocode an address
description: Converts address text into geographic coordinates (forward geocoding). Returns a list of address candidates with location coordinates and match scores.
tags: [Geocoding]
servers:
- url: https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer
parameters:
- name: SingleLine
in: query
schema:
type: string
description: Single-line address string (e.g., "380 New York St, Redlands, CA 92373")
- name: Address
in: query
schema:
type: string
description: Street address component
- name: City
in: query
schema:
type: string
- name: Region
in: query
schema:
type: string
description: State or province
- name: Postal
in: query
schema:
type: string
- name: CountryCode
in: query
schema:
type: string
description: ISO 3166-1 alpha-2 or alpha-3 country code
- name: maxLocations
in: query
schema:
type: integer
default: 1
maximum: 50
- name: outFields
in: query
schema:
type: string
description: Comma-separated list of output fields (* for all)
- name: outSR
in: query
schema:
type: integer
default: 4326
description: Output spatial reference WKID
- name: token
in: query
schema:
type: string
- name: f
in: query
schema:
type: string
enum: [json, pjson]
default: json
responses:
'200':
description: Address candidates returned
content:
application/json:
schema:
$ref: '#/components/schemas/GeocodeResponse'
/reverseGeocode:
get:
operationId: reverseGeocode
summary: Reverse geocode coordinates
description: Converts geographic coordinates to a readable address (reverse geocoding).
tags: [Geocoding]
servers:
- url: https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer
parameters:
- name: location
in: query
required: true
schema:
type: string
description: Point location as JSON (e.g., {"x":-117.2,"y":34.06,"spatialReference":{"wkid":4326}})
- name: distance
in: query
schema:
type: number
description: Distance in meters to search from the input location
- name: outSR
in: query
schema:
type: integer
default: 4326
- name: token
in: query
schema:
type: string
- name: f
in: query
schema:
type: string
enum: [json, pjson]
default: json
responses:
'200':
description: Reverse geocode result returned
content:
application/json:
schema:
$ref: '#/components/schemas/ReverseGeocodeResponse'
/places/near-point:
get:
operationId: findPlacesNearPoint
summary: Find places near a point
description: Returns points of interest near a specified geographic location. Supports filtering by category, search radius, and pagination.
tags: [Places]
servers:
- url: https://places-api.arcgis.com/arcgis/rest/services/v1
parameters:
- name: x
in: query
required: true
schema:
type: number
description: Longitude of the center point (WGS84)
- name: y
in: query
required: true
schema:
type: number
description: Latitude of the center point (WGS84)
- name: radius
in: query
schema:
type: number
default: 1000
description: Search radius in meters (max 10000)
- name: categoryIds
in: query
schema:
type: string
description: Comma-separated category IDs to filter results
- name: pageSize
in: query
schema:
type: integer
default: 10
maximum: 20
- name: token
in: query
schema:
type: string
- name: f
in: query
schema:
type: string
enum: [json, pjson]
default: json
responses:
'200':
description: Places returned
content:
application/json:
schema:
$ref: '#/components/schemas/PlacesResponse'
/places/{placeId}:
get:
operationId: getPlaceDetails
summary: Get place details
description: Returns detailed attributes for a specific place including name, address, phone number, hours of operation, and category information.
tags: [Places]
servers:
- url: https://places-api.arcgis.com/arcgis/rest/services/v1
parameters:
- name: placeId
in: path
required: true
schema:
type: string
description: Unique identifier for the place
- name: requestedFields
in: query
schema:
type: string
description: Comma-separated list of attribute fields to return
- name: token
in: query
schema:
type: string
- name: f
in: query
schema:
type: string
enum: [json, pjson]
default: json
responses:
'200':
description: Place details returned
content:
application/json:
schema:
$ref: '#/components/schemas/Place'
'404':
description: Place not found
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: query
name: token
description: ArcGIS API key or token
OAuth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://www.arcgis.com/sharing/rest/oauth2/authorize
tokenUrl: https://www.arcgis.com/sharing/rest/oauth2/token
scopes:
openid: OpenID Connect identity
urn:arcgis:scope:root: Full access to ArcGIS Online
schemas:
Portal:
type: object
properties:
id:
type: string
description: Portal organization ID
name:
type: string
description:
type: string
url:
type: string
format: uri
thumbnail:
type: string
culture:
type: string
description: Default language/locale (e.g., "en")
region:
type: string
created:
type: integer
description: Creation timestamp (milliseconds since epoch)
modified:
type: integer
User:
type: object
properties:
username:
type: string
fullName:
type: string
firstName:
type: string
lastName:
type: string
email:
type: string
format: email
description:
type: string
role:
type: string
enum: [org_admin, org_publisher, org_user, account_admin]
level:
type: string
created:
type: integer
modified:
type: integer
groups:
type: array
items:
$ref: '#/components/schemas/GroupRef'
GroupRef:
type: object
properties:
id:
type: string
title:
type: string
access:
type: string
Item:
type: object
properties:
id:
type: string
owner:
type: string
title:
type: string
type:
type: string
description: Item type (e.g., "Feature Service", "Web Map", "CSV")
typeKeywords:
type: array
items:
type: string
description:
type: string
snippet:
type: string
thumbnail:
type: string
url:
type: string
format: uri
tags:
type: array
items:
type: string
created:
type: integer
modified:
type: integer
numViews:
type: integer
size:
type: integer
access:
type: string
enum: [private, shared, org, public]
extent:
type: array
items:
type: array
items:
type: number
description: Bounding box [[xmin,ymin],[xmax,ymax]]
ItemCollection:
type: object
properties:
total:
type: integer
start:
type: integer
num:
type: integer
nextStart:
type: integer
items:
type: array
items:
$ref: '#/components/schemas/Item'
SearchResults:
type: object
properties:
query:
type: string
total:
type: integer
start:
type: integer
num:
type: integer
nextStart:
type: integer
results:
type: array
items:
$ref: '#/components/schemas/Item'
GeocodeCandidate:
type: object
properties:
address:
type: string
location:
$ref: '#/components/schemas/Point'
score:
type: number
description: Match quality score (0-100)
attributes:
type: object
additionalProperties: true
GeocodeResponse:
type: object
properties:
spatialReference:
$ref: '#/components/schemas/SpatialReference'
candidates:
type: array
items:
$ref: '#/components/schemas/GeocodeCandidate'
ReverseGeocodeResponse:
type: object
properties:
address:
type: object
properties:
Match_addr:
type: string
LongLabel:
type: string
ShortLabel:
type: string
Addr_type:
type: string
AddNum:
type: string
Address:
type: string
City:
type: string
Region:
type: string
RegionAbbr:
type: string
Postal:
type: string
CountryCode:
type: string
location:
$ref: '#/components/schemas/Point'
PlacesResponse:
type: object
properties:
results:
type: array
items:
$ref: '#/components/schemas/PlaceSummary'
pagination:
type: object
properties:
previousUrl:
type: string
nextUrl:
type: string
PlaceSummary:
type: object
properties:
placeId:
type: string
name:
type: string
location:
$ref: '#/components/schemas/Point'
distance:
type: number
description: Distance from search point in meters
categories:
type: array
items:
$ref: '#/components/schemas/Category'
Place:
type: object
properties:
placeId:
type: string
name:
type: string
location:
$ref: '#/components/schemas/Point'
categories:
type: array
items:
$ref: '#/components/schemas/Category'
address:
type: object
properties:
streetAddress:
type: string
extended:
type: string
locality:
type: string
designatedMarketArea:
type: string
region:
type: string
postcode:
type: string
poBox:
type: string
country:
type: string
adminRegion:
type: string
censusBlockId:
type: string
contactInfo:
type: object
properties:
telephone:
type: string
website:
type: string
format: uri
hours:
type: object
properties:
openingText:
type: string
open:
type: boolean
Category:
type: object
properties:
categoryId:
type: string
label:
type: string
Point:
type: object
properties:
x:
type: number
description: Longitude
y:
type: number
description: Latitude
spatialReference:
$ref: '#/components/schemas/SpatialReference'
SpatialReference:
type: object
properties:
wkid:
type: integer
description: Well-known ID for the spatial reference (e.g., 4326 for WGS84)
latestWkid:
type: integer
Error:
type: object
properties:
error:
type: object
properties:
code:
type: integer
message:
type: string
details:
type: array
items:
type: string