Manage editing and synchronization

The Editing settings for a hosted feature layer (item) allows you to control if client applications can execute editing operations on a feature layer in a feature service. They also control the type of logging that occurs.

You use the editing settings to:

  • Enable users or groups of users to create, update, and delete features in a service.
  • Keep a log of changes made to the features in a service.
  • Synchronize edits with offline workflows.
Item page service
Hosted feature layer item page in a portal showing feature layer settings.

What are editing and sync settings?

The editing and sync settings allow you to enable editing, determine the type of editing allowed, and decide who can make the edits. You can only change these settings if your are the owner of the feature layer in a feature service or an administrator.

The table below describes the editing and synchrononization settings available.

SettingDescription
Enable editingControls whether the users who have access to the layer can Add, Delete, or Update features. To perform the editing operations, users must be members of a default or custom role that has the privilege to edit features.
Keep track of changes to the data (add, update, delete features)Monitors changes made to the spatial and nonspatial attributes of a service by recording the changes in a system change log.
Keep track of who edited the data (editor name, date and time)Adds additional fields that will be automatically populated with the user name of the editor and a date of when the feature was created or updated.
Enable Sync (required for offline use and collaboration)Allows other users to take the feature layer offline and work while disconnected from the network.

Once editing has been enabled, additional types of edits that can be performed are provided. The table below describes each of the capabilities:

SettingDescription
Who can edit features?Read-only text displaying the current sharing level and how to change the setting.
What kind of editing is allowed?Options that control what type of edits are enabled for users with editing privileges.
Add : Allow editors to add new features.
Delete: Allows editors to delete features.
Update: Allows editors to update feature geometry and attributes or only update the attribute values.
What features can editors see?Options that control what features users with edit privileges can see:
- (Default) Editors can edit all features.
- Editors can only see features they've created (requires editor tracking to be enabled).
- Editors can't see any features, even those they add.
What feature can editors edit?- (Default) Editors can edit all features.
- Editors can only edit features that they create (requires editor tracking to be enabled)
What access do anonymous editors (not signed in) have?This setting is only applicable if the layer is shared with everyone (public). If the layer is not public, anonymous users cannot access it.
- The same as signed in editors.
- Only add new features, if allowed above (requires editor tracking).
Who can manage edits?Read-only text listing the current users and roles that can manage this layer's edit settings.

How to manage editing settings

The steps to manage service editing settings are:

  1. Sign into a data management tool with your ArcGIS account:

  2. Find the item.
  3. Use the item page to change the editing settings.

Code examples

You can use data management tools to update the editing capabilities of a hosted feature layer (item) or you can use the ArcGIS REST APIs. The following examples illustrate how to programmatically get the properties and then modify the edit capabilities of a hosted feature layer (item).

Get service properties

The example below uses a Feature Service URL to get the current properties of a feature service layer.

Request

Use dark colors for code blocksCopy
1
2
3
4
POST https://{host}/rest/services/{service_name}/FeatureServer HTTP/1.1

&f=json
&token={access_token}

Response

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
{
    "currentVersion": 11.1,
    "serviceItemId": "{serviceItemId}",
    "hasChangeTrackingEnabledViews": true,
    "serviceDescription": "",
    "hasVersionedData": false,
    "supportsDisconnectedEditing": false,
    "hasStaticData": false,
    "hasSharedDomains": false,
    "maxRecordCount": 2000,
    "supportedQueryFormats": "JSON",
    "supportsVCSProjection": false,
    "supportedExportFormats": "csv,shapefile,sqlite,geoPackage,filegdb,featureCollection,geojson,excel",
    "capabilities": "Query,ChangeTracking",
    "description": "",
    "copyrightText": "",
    "spatialReference": {
        "wkid": 102100,
        "latestWkid": 3857
    },
    "initialExtent": {
        "xmin": -13240129.679701095,
        "ymin": 3994281.9887753138,
        "xmax": -13106722.92583799,
        "ymax": 4101417.5063218847,
        "spatialReference": {
            "wkid": 102100,
            "latestWkid": 3857
        }
    },
    "fullExtent": {
        "xmin": -13240129.679701095,
        "ymin": 3994281.9887753138,
        "xmax": -13106722.92583799,
        "ymax": 4101417.5063218847,
        "spatialReference": {
            "wkid": 102100,
            "latestWkid": 3857
        }
    },
    "allowGeometryUpdates": true,
    "units": "esriMeters",
    "supportsAppend": true,
    "supportsSharedDomains": true,
    "supportsWebHooks": true,
    "supportsTemporalLayers": true,
    "layerOverridesEnabled": true,
    "size": 319488,
    "syncEnabled": false,
    "extractChangesCapabilities": {
        "supportsReturnIdsOnly": true,
        "supportsReturnExtentOnly": true,
        "supportsReturnAttachments": true,
        "supportsLayerQueries": true,
        "supportsGeometry": true,
        "supportsFeatureReturn": true,
        "supportsReturnHasGeometryUpdates": false,
        "supportsReturnDeletedFeatures": true,
        "supportsServerGens": true,
        "supportsFieldsToCompare": true
    },
    "supportsApplyEditsWithGlobalIds": true,
    "supportsReturnDeleteResults": true,
    "supportsLayerOverrides": true,
    "supportsTilesAndBasicQueriesMode": true,
    "supportsQueryContingentValues": true,
    "supportedContingentValuesFormats": "JSON, PBF",
    "supportsContingentValuesJson": 2,
    "advancedEditingCapabilities": {
        "supportsSplit": false,
        "supportsReturnServiceEditsInSourceSR": false,
        "supportsAsyncApplyEdits": true,
        "supportsReturnEditResults": true,
        "supportsApplyEditsbyUploadID": true,
        "supportedApplyEditsUploadIDFormats": "JSON"
    },
    "editorTrackingInfo": {
        "enableEditorTracking": false,
        "enableOwnershipAccessControl": false,
        "allowOthersToQuery": true,
        "allowOthersToUpdate": true,
        "allowOthersToDelete": false,
        "allowAnonymousToQuery": true,
        "allowAnonymousToUpdate": true,
        "allowAnonymousToDelete": true
    },
    "changeTrackingInfo": {
        "lastSyncDate": 1603131158295,
        "layerServerGens": [
            {
                "id": 0,
                "minServerGen": 318897,
                "serverGen": 649144
            }
        ]
    },
    "xssPreventionInfo": {
        "xssPreventionEnabled": true,
        "xssPreventionRule": "InputOnly",
        "xssInputRule": "rejectInvalid"
    },
    "layers": [{
        "id": 0,
        "name": "Trailheads",
        "parentLayerId": -1,
        "defaultVisibility": true,
        "subLayerIds": null,
        "minScale": 2311163,
        "maxScale": 0,
        "type": "Feature Layer",
        "geometryType": "esriGeometryPoint"
    }],
    "tables": []
}

Set edit capabilities

The example below uses the updateDefinition admin operation to modify the current editing settings. You can pass in the types of editing you would like to enable using the capabilities parameter.

Request

Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
POST https://{host}/rest/admin/services/{service_name}/FeatureServer/updateDefinition HTTP/1.1

f=json
&token={access_token}
&updateDefinition = "{
    "hasStaticData": false,
    "capabilities": "Query,Editing,Create,Update,Delete",
    "layerOverridesEnabled":true,
    "editorTrackingInfo": {
        "enableEditorTracking":false,
        "enableOwnershipAccessControl": false,
        "allowOthersToUpdate": true,
        "allowOthersToQuery": true,
        "allowAnonymousToQuery": true,
        "allowAnaonymousToDelete": true
    }
}"

Response (JSON)

Use dark colors for code blocksCopy
1
{"success":true}

Tutorials

Import data to create a feature layer

Use data management tools to import files and create a feature layer in a feature service.


Define a new feature layer

Use data management tools to define and create a new empty feature layer in a feature service.


Manage a feature layer

Use a hosted feature layer item to set the properties and settings of a feature layer in a feature service.


Create a vector tile service

Use data management tools to create a new vector tile service from a feature service.


Create a map tile service

Use ArcGIS Online or scripting APIs to publish a map tile service.


Workflows

Services

API support

Use data management tools or Client APIs to create, manage, and access data services. The table below outlines the level of support for each API.

CreateManageAccess
ArcGIS Maps SDK for JavaScript1
ArcGIS Maps SDK for Kotlin1
ArcGIS Maps SDK for Swift1
ArcGIS Maps SDK for Java1
ArcGIS Maps SDK for .NET1
ArcGIS Maps SDK for Qt1
ArcGIS API for Python
ArcGIS REST JS
Esri Leaflet2
MapLibre GL JS23
OpenLayers23
Full supportPartial supportNo support
  • 1. Use portal class and direct REST API requests
  • 2. Access via ArcGIS REST JS
  • 3. Requires manually setting styles for renderers

Tools

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.