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
Analysistype was added which contains the definitions and configuration of analyses. - The new
Mediafield 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
Mediawas added to object typeLayers BranchAttributes - Input field
Mediaof typeLayers [was added to input object typeMedia Layer Input!] CreateBranch Attributes Input - Input field
Mediaof typeLayers [was added to input object typeMedia Layer Input!] UpdateBranch Attributes Input - Type
Mediawas addedLayer - Type
Mediawas addedLayer Input
- Input field
The following fields and input fields related to the 3D objects were added to projects:
- Field
Objectwas added to object typeScene Layer Item Id ProjectAttributes - Input field
Objectof typeScene Layer Item Id Portalwas added to input object typeItem Id CreateProject Attributes Input - Input field
Objectof typeScene Layer Item Id Portalwas added to input object typeItem Id UpdateProject Attributes Input - Input field
objectof typeScene Layer Item Ids [was added to input object typePortal Item Id!] ProjectFilter 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
analysesandanalyseswere added to object typesMeta PlanandProject. These return the union type ofAnalysiswhich may be one of the following types:Parameter Elevation,Profile Line,Of Sight Shadow, orCast Viewshed. As more analysis modes are introduced to Urban, theAnalysisunion type will be expanded with them.Parameter - Creation mutations for each analysis were added:
- Field
createwas added to object typeElevation Profile Analyses Mutation - Field
createwas added to object typeLine Of Sight Analyses Mutation - Field
createwas added to object typeShadowcast Analyses Mutation - Field
createwas added to object typeViewshed Analyses Mutation
- Field
- Update mutations for each analysis were added:
- Field
updatewas added to object typeElevation Profile Analyses Mutation - Field
updatewas added to object typeLine Of Sight Analyses Mutation - Field
updatewas added to object typeShadowcast Analyses Mutation - Field
updatewas added to object typeViewshed Analyses Mutation
- Field
- Field
deletewas added to object typeAnalyses Mutation
The following types were also added or improved:
- Objects of type
Linemay now be used in mutation inputs - Type
Colorwas 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
cascadeto 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.limitinput 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.limitinput 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
Planis deprecated (Removal date: 2026-03-25).Attributes. Public Feedback Enabled - Field
Projectis deprecated (Removal date: 2026-03-25).Attributes. Public Feedback Enabled - Field
Planis deprecated (Removal date: 2026-03-25).Attributes. Public Feedback End Date - Field
Projectis 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
plansandplanswere removed from object typeMeta Urban. Plans are now expected to always be accessed throughDatabase Urbanobjects.Design Database