ArcGIS REST API

Feature Service

Description

A feature service can contain datasets (for example, tables and views) with or without a spatial column. Datasets with a spatial column are considered layers; those without a spatial column are considered tables. A feature service allows clients to query and edit feature geometry and attributes.

This resource provides basic information about the feature service, including the feature layers and tables that it contains, the service description, and so on.

The capabilities property returns Create, Delete, Extract, Query, Update, Sync, and Uploads capabilities. The Uploads capability is included if Create, Delete, or Update is enabled for a feature service. The Editing capability is included if Create, Delete, and Update is enabled and allowGeometryUpdates is true. The Sync capability allows editors to make local edits and periodically sync with the feature service. The Extract capability allows editors to create a local copy of data without the ability to sync with the feature service.

The maxRecordCount property returns the maximum number of records that will be returned at once for a query. The Feature Service resource has an input parameters option and outSR to support viewing of a feature service footprint in arcgis.com.

The following properties describe features that have been added to Feature Service through the releases. If the property does not exist, it's equivalent to having a value of false or not set.

  • hasVersionedData will be true if the data is versioned.
  • supportedQueryFormats returns the formats in which query results can be returned.
  • allowGeometryUpdates returns true if the geometry of the features in the layer can be edited.
  • zDefault and enableZDefaults are returned for a service configured with default z-values.
  • supportsDisconnectedEditing will be true to indicate the support for disconnected editing.
  • syncEnabled will be true to indicate the support for sync.
  • supportsRegisterExistingData will be true if the service supports registration of existing data for createReplica. Only present if syncEnabled is true.
  • supportsSyncDirectionControl will be true if the service will allow control of data sync direction. Only present if syncEnabled is true.
  • supportsPerLayerSync will be true if the layers can be synchronized independently, and the service will accept a value of perLayer for the sync model during the createReplica operation. If supportsPerLayerSync is false, then the only sync model supported is perReplica. Only present if syncEnabled is true.
  • supportsPerReplicaSync will be true if the layers can be synchronized together, and the service will accept a value of perReplica for the sync model during the createReplica operation. If supportsPerReplicaSync is false, then the only sync model supported is perLayer. Only present if syncEnabled is true.
  • supportsSyncModelNone will be true if the service supports extracting data without the creation of a replica. If true, the service will accept setting syncModel=none for the sync model during the createReplica operation.
  • supportsAttachmentsSyncDirection will be true if the service supports options to define how attachments will be synced. If true, the service will accept setting the attachmentsSyncDirection parameter during the createReplica operation.
  • supportsRollbackOnFailure will be true if the rollbackOnFailure parameter can be set to true or false when running the synchronizeReplica operation. supportsRollbackOnFailure will be false if the synchronizeReplica operation does not support the parameter.
  • supportsAsync will be true if the service can execute sync operations asynchronously. Only present if syncEnabled is true.
  • supportsApplyEditsWithGlobalIds in the root resource will be true if all layers in the service have supportsApplyEditsWithGlobalIdsas true. See Feature Service Layer Properties for more details.
  • A feature service that supports the append API exposes the supportsAppend metadata property. When supportsAppend property is absent or is false, the owner of the feature service cannot use the Append API. Also the Append capability cannot be added to a feature service if the supportsAppend is true. See Append (Feature Service) or Append (Feature Service/Layer) for more details.

New at 10.6.1

  • New properties exposed on a feature service published to an ArcGIS Enterprise federated server with data stored in a registered enterprise geodatabase from ArcGIS Pro 2.2:
    • extractChangesCapabilities contains supports properties that define which extract changes capabilities are available on the service.
    • The advancedEditingCapabilities property indicates whether the apply edits supportsSplit operation is enabled on the service.

New at 10.6

  • New layer types for Utility Networks and annotation layers can be publish from ArcGIS Pro starting at version 2.1.
  • Feature services can be published from enterprise geodatabase data that has attribute rules.
  • Feature services can be published from enterprise geodatabase data that has been configured to use branch versioning. If the service is published form a branch versioned workspace, the gdbVersion parameter on various operations can take the name of a branch version.
  • Additional spatial reference properties describing the published maps VCS, tolerance, resolution properties and height model info are now provided. See JSON response example below.
Note:

When querying, z values are returned in the sourceSpatialReference vertical coordinate system regardless of what is specified as the output spatial reference. It is also expected that z values are provided in the sourceSpatialReference source vertical coordinate system when editing.

Note:

The features listed above are available for non-hosted services published from ArcGIS Pro 2.1 or later but not necessarily for services published from ArcMap or other processes. Services published from ArcGIS Pro 2.1 have the following layer and service property: "cimVersion": "2.1.0"

New at 10.5

  • The Layers resource now returns full information about each layer without having to go to the individual layer resources. For example, https://services.myserver.com/arcgis/rest/services/USA/FeatureServer/layers?f=pjson returns JSON for all of the layers in the feature service.
  • If allowTrueCurvesUpdates is true and onlyAllowTrueCurveUpdatesByTrueCurveClients is true, features with true curves can by updated by true curve capable clients (e.g. ArcGIS Pro). When edits are applied, the true curve client must set the trueCurveClient parameter to true.
  • If allowTrueCurvesUpdates is true and onlyAllowTrueCurveUpdatesByTrueCurveClients is false, features with true curves can be updated by any client. This includes cases where the client provides a densified feature to update the true curve feature.

  • If allowTrueCurvesUpdates is false, features with true curves cannot be updated.
  • supportsTrueCurve will be true if the service supports the option to returnTrueCurves in the query response.
  • supportsQueryDomains will be true if the service supports the queryDomains operation.
  • allowUpdateWithoutMValues will be true to allow NaN to be inserted for m-values when m-values are not supplied with the geometry of m-aware data. If allowUpdateWithoutMValues is false m-values must be supplied in order to edit the geometry of m-aware data.

Request parameters

ParameterDetails
f

Description: The response format. The default response format is html.

Values: html | json

option

This parameter was added at 10.1.

Description: If option is footprints, the footprint of the feature service is returned as a feature collection. This feature collection can be viewed in the ArcGIS.com Map Viewer. This is supported when f=json only.

Value: footprints

outSR

This parameter was added at 10.1.

Description: The spatial reference of the geometry returned in footprints. This parameter is supported only when option=footprints is specified.

The spatial reference should be specified as a well-known ID.

If outSR is not specified, the geometry is returned in GCS_WGS_1984.

Example usage

URL for the USA feature service.

https://services.myserver.com/ERmEceOGq5cHrItq/ArcGIS/rest/services/USA/FeatureServer?f=pjson

JSON response syntax

{
  "currentVersion": <currentVersion>, 
  "serviceDescription": "<serviceDescription>",
  "hasVersionedData": <true | false>, 
  "supportsDisconnectedEditing": <true | false>, 
  "hasStaticData" : <true | false>, 
  "maxRecordCount" : "<maxRecordCount>", , 
  "supportedQueryFormats": "<supportedQueryFormats>", 
  "capabilities": "<capabilities>", 
  "description": "<description>", 
  "copyrightText": "<copyrightText>", 
  "advancedEditingCapabilities": {<advancedEditingCapabilities>},
  "spatialReference": {<spatialReference>}, 
  "initialExtent": {<envelope>}, 
  "fullExtent": {<envelope>}, 
  "allowGeometryUpdates": <true | false>, 
  "units": "<units>", 
  "syncEnabled" : <true | false>, 
  //Added at 10.6.1
  "extractChangesCapabilities": {
    "supportsReturnIdsOnly": <true | false>,
    "supportsReturnExtentOnly": <true | false>,
    "supportsReturnAttachments": <true | false>,
    "supportsLayerQueries": <true | false>,
    "supportsSpatialFilter": <true | false>,
    "supportsReturnFeature": <true | false>
  },
  "syncCapabilities" : {
    "supportsASync" : <true | false>,
    "supportsRegisteringExistingData" : <true | false>,
    "supportsSyncDirectionControl" : <true | false>,
    "supportsPerLayerSync" : <true | false>,
    "supportsPerReplicaSync" : <true | false>,
    "supportsRollbackOnFailure" : <true | false>
  },
  "editorTrackingInfo" : {
    "enableEditorTracking" : <true | false>,
    "enableOwnershipAccessControl" : <true | false>,
    "allowOthersToUpdate" : <true | false>,
    "allowOthersToDelete" : <true | false>
  }, 
  "documentInfo": { 
   "<key1>": "<value1>",
   "<key2>": "<value2>"
   },
  //the feature layers published by this service
  "layers": [
    { "id": <layerId1>, "name": "<layerName1>" },
    { "id": <layerId2>, "name": "<layerName2>" }
  ],
  //the non-spatial tables published by this service
  "tables": [
    { "id": <tableId1>, "name": "<tableName1>" },
    { "id": <tableId2>, "name": "<tableName2>" }
  ]
  "enableZDefaults": <true | false>,
  "zDefault": <zDefaultValue>,
}

JSON response example

{
  "currentVersion" : 10.21, 
  "serviceDescription" : "Birds", 
  "hasVersionedData" : false, 
  "supportsDisconnectedEditing" : false, 
  "syncEnabled" : false, 
  "hasStaticData" : false, 
  "maxRecordCount" : 1000, 
  "supportedQueryFormats" : "JSON", 
  "capabilities" : "Query,Create,Delete,Update,Uploads,Editing", 
  "description" : "", 
  "copyrightText" : "", 
  "advancedEditingCapabilities": {"supportsSplit": true},
  "spatialReference" : {
    "wkid" : 4326, 
    "latestWkid" : 4326
  }, 
  "initialExtent" : {
    "xmin" : -118.016756138237, 
    "ymin" : 32.8933824408207, 
    "xmax" : -116.532738278622, 
    "ymax" : 34.3261469363675, 
    "spatialReference" : {
      "wkid" : 4326, 
      "latestWkid" : 4326
    }
  }, 
  "fullExtent" : {
    "xmin" : -117.855689264791, 
    "ymin" : 32.5702577626442, 
    "xmax" : -116.87086222794, 
    "ymax" : 34.1460567673275, 
    "spatialReference" : {
      "wkid" : 4326, 
      "latestWkid" : 4326
    }
  }, 
  "allowGeometryUpdates" : true, 
  "units" : "esriDecimalDegrees", 
  "syncEnabled" : true, 
  "extractChangesCapabilities": {
    "supportsReturnIdsOnly": true,
    "supportsReturnExtentOnly": false,
    "supportsReturnAttachments": false,
    "supportsLayerQueries": false,
    "supportsSpatialFilter": false,
    "supportsReturnFeature": false
  },
  "syncCapabilities" : {
    "supportsASync" : true, 
    "supportsRegisteringExistingData" : true, 
    "supportsSyncDirectionControl" : true, 
    "supportsPerLayerSync" : true,
    "supportsPerReplicaSync" : false,
    "supportsRollbackOnFailure" : false
  }, 
  "editorTrackingInfo" : {
    "enableEditorTracking" : false, 
    "enableOwnershipAccessControl" : false, 
    "allowOthersToUpdate" : true, 
    "allowOthersToDelete" : false
  }, 
  "layers" : [
    {
      "id" : 0, 
      "name" : "Sitings", 
      "parentLayerId" : -1, 
      "defaultVisibility" : true, 
      "subLayerIds" : null, 
      "minScale" : 0, 
      "maxScale" : 0,
   			"geometryType": "esriGeometryPoint"
    }, 
    {
      "id" : 1, 
      "name" : "NestingGrounds", 
      "parentLayerId" : -1, 
      "defaultVisibility" : true, 
      "subLayerIds" : null, 
      "minScale" : 0, 
      "maxScale" : 0,
   			"geometryType": "esriGeometryPolygon"
    }, 
    {
      "id" : 2, 
      "name" : "LandCover", 
      "parentLayerId" : -1, 
      "defaultVisibility" : true, 
      "subLayerIds" : null, 
      "minScale" : 0, 
      "maxScale" : 0,
   			"geometryType": "esriGeometryPolygon"
    }
  ], 
  "tables" : []
}

JSON response example (Spatial reference, VCS, tolerance, resolution properties, height model info)

"spatialReference": {
  "wkid": 102100,
  "latestWkid": 3857,
  "vcsWkid": 115700,
  "latestVcsWkid": 115700,
  "xyTolerance": 0.001,
  "zTolerance": 0.001,
  "mTolerance": 0.001,
  "falseX": -20037700,
  "falseY": -30241100,
  "xyUnits": 1.4892314192838538E8,
  "falseZ": -100000,
  "zUnits": 10000,
  "falseM": -100000,
  "mUnits": 10000
 }, 
 "heightModelInfo": {
  "heightModel": "ellipsoidal",
  "vertCRS": "WGS_1984",
  "heightUnit": "meter"
 },