- URL:
- https://<root>/<serviceName>/FeatureServer/append
- Methods:
- POST
Description
ArcGIS Online and ArcGIS Enterprise feature services support the append operation, a high-performance API capable of handling large volumes of data that has the ability to upsert data.
Upsert
Upsert is a combination of insert and update, driven by the feature . Upsert is used to add new features and update existing features at the same time. If a feature in the source data matches an existing feature in the destination layer, the existing feature is updated with the values from the source. If there is no match, a new feature is created based on the values from the source.
The append  operation currently supports feature  of type Object  and Global . The target layer must have a destination field of one of these types.
Unique index on source data feature
The destination object  or global  fields do not need to be mapped to source fields of the same type. The source feature  can come from different field types as long as the values are acceptable destination values for feature . For example, a destination global  can be mapped to the Global , Guid , and string  field types, and the object  can be mapped to the short  or long  field types.
Enable and disable append capabilities
Feature service Append  capabilities must be enabled for the append operation to be used by nonadministrative users. Organization administrators or the service owner can use the append  operation without adding the Append  capability to the feature service. The Append  capability needs to be added to the service capabilities  property only if the service owner or organization administrators needs to allow a nonadministrator user to append data to a feature service. Organization administrators or the service owner can enable or disable the Append  capability on an existing feature service using the feature service update  API as shown in the example below. For more information on how to add the Append capabilities to a feature service, see Update Definition (Feature Service).
The Append  capability does not require any editing capabilities to be enabled. Features will be inserted or updated when upsert  is set as true through the append  operation without the administrator adding either the Create  or Update  capabilities to the feature service.
Supports append
A feature service returns the supports  metadata property. When this property is absent or is returned as false , the Append  capability cannot be added to the feature service and the feature service does not support the Append  operation, even for the organization administrators or feature service owner.
Append sources
The source of the append operation can be one of three parameters: edits , append , or append . edits  is a literal feature collection string. append  references the item  of a file or hosted feature service currently stored in the portal or geowarehouse. append  references the item  of a file uploaded to the server through the uploads operation. The item  of a file in the portal or geowarehouse is completely independent from the item  of a file stored in the server uploads. Unless a file is needed in the portal or geowarehouse, using the uploads API is recommended. For ArcGIS Enterprise, append  is supported at 10.9 and later.
ArcGIS Enterprise 11.3 introduces support for appending directly to a hosted feature service from another hosted feature service within the same Enterprise organization (not from a different Enterprise organization or from a source reference feature service). Both relational and spatiotemporal data stores can be used as the target of this operation, only relational can be used as a source at present.
Supported append formats
A feature service that supports append returns the supported  metadata property. This property lists the supported append  values for this operation.
The append formats are:
- sqlite: sqlite database
- gpkg: geopackage
- shapefile: shapefile
- filegdb: file geodatabase
- feature: feature collection- Collection 
- geojson: GeoJSON
- csv: Comma separated values
- excel: Microsoft Excel format
- feature: a hosted feature service- Service 
- pbf: protocol buffers
Sync and Change Tracking
The Append  capability is not currently supported if the feature service has sync  or change  capabilities enabled. When either sync  or change  is enabled on the feature service, Append  is blocked for the following reasons:
- The Esrisyncengines might not be able to support syncing the changes from theappendoperation. Theappendoperation might be using a very low-level database API that might prevent the use of triggers to track the changes from theappendoperation. ArcGIS Online feature servicesyncengines rely on triggers to track the edit changes.
- The volume of changes from appendmight be quite large for the syncing process and it will be better for the client to re-create the replica afterappend.
Attempting to set the upsert  parameter to true will return an error if sync or change tracking are enabled.
Feature service layer views
The Append  capability can be enabled on feature service layer views.
Preserve feature
The source feature  (Object  or Global ) are only preserved when upsert  is set to true . When upsert  is false , all rows created will have new Object  or Global  values allocated by the system.
Feature service metadata
The feature service metadata is updated after adding or updating data using the append  operation. The last  of the feature service will be updated. The extent  will also be updated for ArcGIS Online feature services.
Geocoding (ArcGIS Online)
The append  operation supports geocoding geometry from CSV and Excel data. The cost and billing of geocoding is the same cost and billing of geocoding during publishing data as a feature service.
Editor tracking and ownership-based access control (OBAC)
Editor tracking is currently supported with feature service append  API. The Creation , Edit , Editor , and Creator  are populated based on the user who is calling append . Editor tracking fields are set when inserting or updating existing features. The creator and the editor fields will be set to the append  user. Service owners and administrators will bypass any OBAC set on the feature service. For nonowners, if "allows  is set to false  on the feature service, the append  user can only update their features or features owned by anonymous users.
Appending multipatch data (ArcGIS Online)
Appending/upserting data to a multipatch feature service is supported. In ArcGIS Online, the client can turn on Append  capability on a multipatch feature service using the feature service update  operation. Similar to a nonmultipatch feature service, Object , Global , or any other fields with unique index can be used to upsert data to a multipatch feature service. The append  operation will return an error when a client tries to append nonmultipatch geometry data into a feature service that stores multipatch geometries.
New at 11.5
- This operation is now accessible to reference feature services. Support for this operation is indicated when the supportsproperty set asAppend trueon a reference feature service resource. The service resource will also advertise supported formats with thesupportedproperty.Append Formats 
- Reference feature service layers support the following append formats: file geodatabase and protocol buffers.
New at 11.1
The updates and enhancements below have been added to hosted feature services running on a relational data store in ArcGIS Enterprise:
- The Append capability can now be set for qualifying hosted feature services to allow non-service owners and non-organization administrators with access to the feature service to run this operation. In prior releases, the Append capability could not be set for hosted feature services, limiting the scope of those who could use this operation on a given hosted feature service.
- The esrifield type is now supported.Field Type Blob 
- A field's default value is now applied when a row is added with no provided value when using either this operation or Apply Edits.
Request parameters
| Parameter | Details | 
|---|---|
| 
 | The list of layers and table to upload. Syntax Example  | 
| 
 | This is needed only if the source is a feature service or contains more than one table or if you need to specify field mapping for the destination layer. It is used to map source data to a destination layer. Only one source can be mapped to a layer. The  Syntax Example, shapefile Examples  | 
| 
 | A literal feature collection JSON string to be used as the source data. Example  | 
| 
 (Optional) | Used to specify whether the edits need to be applied as updates if the features already exist. The default value is  Values:  | 
| 
 (Optional) | Specifies whether  Values:  | 
| 
 | The  Example  | 
| 
 | The  Example  | 
| 
 | Filters features from the source file. Source formats that support filtering can be determined by inspecting the service's Syntax Example  | 
| 
 | The  Values:  | 
| 
 (Optional) | Specifies whether the  Value:  | 
| 
 | Introduced at 11.5 for use by reference feature services. Sets the target geodatabse version. Values for this parameter must be a branch version. If the  Syntax Example  | 
| 
 | Introduced at 11.5 for use by reference feature services. Specifies whether the response will report the time attachments were added. If set as  Values:  | 
| 
 | Introduced at 11.5 for use by reference feature services. Indicates to the server whether the client is true curve capable. When set as  Values:  | 
| 
 | Introduced at 11.5 for use by reference feature services. Setting  Its possible to define a service's time zone of date fields as unknown. Setting the time zone as unknown means that date values will be returned as-is from the database, rather than as date values in UTC. Non-hosted feature services can be set to use an unknown time zone using ArcGIS Server Manager. Setting the time zones to unknown also sets the  Most clients released prior to ArcGIS Enterprise 10.9 will not be able to work with feature services that have an unknown time setting. The  Values:  | 
| 
 | The response format. The default value is  Value:  | 
Example usage
Example one: append a shapefile
The following is a sample POST request that demonstrates appending data from a shapefile to a feature service:
POST /<context>/rest/services/USA/FeatureServer/append HTTP/1.1
Host: organization.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: []
layers=0&upsert=false&useGlobalIds=false&appendItemId=0c6b928f590f49ebac04761bab413e49&rollbackonFailure=true&f=pjsonThe above request generates the following response:
{
  "status": "processing",
  "statusMessage": "Job Status for jobId: b62e9db7-507c-443d-3473-8a1f7a7e9fac",
  "itemId": "cc7ddbc1e33440688d3110c885fa0b30"
}The job  from the response can be used to check the job status by making a request of the following form:
https://organization.example.com/<context>/rest/services/USA/FeatureServer/append/jobs/b62e9db7-507c-443d-3473-8a1f7a7e9fac?f=pjsonIf the job is successful, and complete, the above request will return the following response:
{
  "layerName": "CITIES",
  "submissionTime": 1520876908117,
  "lastUpdatedTime": 1520876913647,
  "recordCount": 2,
  "status": "Completed"
}Example two: append a file geodatabase
The following is a sample POST request that demonstrates appending data from a file geodatabase:
POST /<context>/rest/services/USA/FeatureServer/append HTTP/1.1
Host: organization.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: []
layers=0&layerMappings=[{"id":0,"sourceTableName":"USA"}]&upsert=false&userGlobalIds=false&appendUploadId=0c6b928f590f49ebac04761bab413e49&appendUploadformat=filegdb&rollbackonFailure=true&f=pjsonThe above request generates the following response:
{
  "status": "processing",
  "statusMessage": "Job Status for jobId: feeahh1e-e32c-45bf-680c-f4ed70569081",
  "itemId": "aa7gdww1e55200527d3110c634fa0b30"
}