Learn about recent changes to the ArcGIS Urban API. The release date is March 26th, 2025.
What's new
This section provides a summary of the most important changes in this release.
- The new
Analysis
type was added which contains the definitions and configuration of analyses. - The new
Media
field was added to project scenario (branch) attributes which supports adding images in plans.Layers - Support for 3D models was added to
Projects
.
Examples
The following section provides a few examples of how to use the new Urban API features added in the March 2025 release.
Querying Analysis Objects
This example shows how to query the analysis object. As each type of analysis (such as shadow cast, line of sight, viewsheds, and elevation profile analysis) has its own type which is combined into a single union type, queries fetching analyses need to specify which analyses to return using the ... on
GraphQL syntax. See Introducing unions to learn more about union types in GraphQL.
query ProjectAnalyses($urbanDesignDatabaseId: PortalItemId!, $projectID: GlobalID!) {
urbanDesignDatabase(urbanDesignDatabaseId: $urbanDesignDatabaseId) {
projects(filter: { globalIDs: [$projectID] }) {
analyses {
attributes {
GlobalID
Parameters {
__typename
... on ElevationProfile {
...ElevationProfileFragment
}
... on LineOfSight {
...LineOfSightFragment
}
... on Shadowcast {
...ShadowCastFragment
}
... on Viewshed {
...ViewShedFragment
}
}
}
}
}
}
}
The fragments in the above query are specific to an analysis:
fragment ElevationProfileFrag on ElevationProfile {
elevationProfiles {
paths {
path
}
}
}
fragment LineOfSightFrag on LineOfSight {
lineOfSights {
name
targets {
x
y
z
}
observer {
x
y
z
spatialReference {
wkid
}
}
}
}
fragment ShadowCastFrag on Shadowcast {
shadowcasts {
color
discreteInterval
durationMode
thresholdValue
time {
date
endTimeOfDay
startTimeOfDay
utcOffset
}
visualizationType
}
}
fragment ViewShedFrag on Viewshed {
viewsheds {
farDistance
heading
horizontalFieldOfView
tilt
verticalFieldOfView
name
observer {
x
y
z
spatialReference {
wkid
}
}
}
}
Mutating Analysis Objects
Each analysis has its own create and update nodes. As an example, use the following query to create a viewshed analysis:
mutation CreateViewshed($urbanDesignDatabaseId: PortalItemId! $projectID: GlobalID!) {
createViewshedAnalyses(urbanDatabaseId: $urbanDesignDatabaseId, ViewshedAnalyses: [
{
attributes: {
AnalysisName: "viewsheds1"
UrbanEventID: $projectID
}
viewsheds: [
{
name: "River view",
farDistance: 327.4022483408076,
heading: 321.3214503109652,
tilt: 84.61732654868268,
horizontalFieldOfView: 102.21554546208675,
verticalFieldOfView: 45
observer:{
x: 42.36365308786046,
y: -71.13619203021057,
z: 32.71101608220488,
spatialReference: {
wkid: 3857
}
}
}
]
}
]) {}
attributes {
GlobalID
}
}
}
Note how the parameters, in this case for a viewshed analysis, are not part of the attributes
but their own field in the input object.
Deletions are shared between different analyses. You can use the following query to delete multiple analyses:
mutation DeleteAnalyses($urbanDesignDatabaseId: PortalItemId! $analysisIDs: [GlobalID!]! {
deleteAnalyses(urbanDatabaseId: $urbanDesignDatabaseId, globalIDs: $analysisIDs) {
attributes {
GlobalID
}
}
}
Schema changes
This section describes new features and changes made to the Urban API schema.
The following fields, input fields and types related to Media
were added to project scenarios (branches):
- Field
Media
was added to object typeLayers Branch
Attributes - Input field
Media
of typeLayers [
was added to input object typeMedia Layer Input!] Create
Branch Attributes Input - Input field
Media
of typeLayers [
was added to input object typeMedia Layer Input!] Update
Branch Attributes Input - Type
Media
was addedLayer - Type
Media
was addedLayer Input
- Input field
The following fields and input fields related to the 3D objects were added to projects
:
- Field
Object
was added to object typeScene Layer Item Id Project
Attributes - Input field
Object
of typeScene Layer Item Id Portal
was added to input object typeItem Id Create
Project Attributes Input - Input field
Object
of typeScene Layer Item Id Portal
was added to input object typeItem Id Update
Project Attributes Input - Input field
object
of typeScene Layer Item Ids [
was added to input object typePortal Item Id!] Project
Filter Input
- Input field
The new Analysis
type was added which contains the definitions and configuration of analyses tasks. The following fields, types, queries, and mutations were added:
- Fields
analyses
andanalyses
were added to object typesMeta Plan
andProject
. These return the union type ofAnalysis
which may be one of the following types:Parameter Elevation
,Profile Line
,Of Sight Shadow
, orCast Viewshed
. As more analysis modes are introduced to Urban, theAnalysis
union type will be expanded with them.Parameter - Creation mutations for each analysis were added:
- Field
create
was added to object typeElevation Profile Analyses Mutation
- Field
create
was added to object typeLine Of Sight Analyses Mutation
- Field
create
was added to object typeShadowcast Analyses Mutation
- Field
create
was added to object typeViewshed Analyses Mutation
- Field
- Update mutations for each analysis were added:
- Field
update
was added to object typeElevation Profile Analyses Mutation
- Field
update
was added to object typeLine Of Sight Analyses Mutation
- Field
update
was added to object typeShadowcast Analyses Mutation
- Field
update
was added to object typeViewshed Analyses Mutation
- Field
- Field
delete
was added to object typeAnalyses Mutation
The following types were also added or improved:
- Objects of type
Line
may now be used in mutation inputs - Type
Color
was added, allowing colours with RGBA values to be defined.Alpha
Bug fixes and improvements
- CORS handling was improved, removing the need for special handling of these security features on ArcGIS Enterprise.
- Passing
cascade
to deletion mutations now works correctly in all cases; prior to this, there were some cases where a spurious error was returned instead of performing the cascading deletion.: true - The value of the
cursor.limit
input field is correctly applied to all branches of the query. Prior to this, the limit was ignored in certain cases and the default page size was used instead. - The value of the
cursor.limit
input field may now be set using a GraphQL variable. Prior to this, using a variable instead of a literal value would result in no value being set forcursor.limit
, causing the default page size to be used instead.
Deprecations
The following fields related to the public feedback are deprecated:
- Field
Plan
is deprecated (Removal date: 2026-03-25).Attributes. Public Feedback Enabled - Field
Project
is deprecated (Removal date: 2026-03-25).Attributes. Public Feedback Enabled - Field
Plan
is deprecated (Removal date: 2026-03-25).Attributes. Public Feedback End Date - Field
Project
is deprecated (Removal date: 2026-03-25).Attributes. Public Feedback End Date
Public feedback is no longer supported in Urban due to the migration from Hub Annotations to Hub Discussions.
Breaking changes
The following previously deprecated fields have been removed.
- Fields
plans
andplans
were removed from object typeMeta Urban
. Plans are now expected to always be accessed throughDatabase Urban
objects.Design Database