Layer (Feature Service)

Description

The layer resource represents a single feature layer or a nonspatial table in a feature service. A feature layer is a table or view with at least one spatial column.

For tables, it provides basic information about the table such as its ID, name, fields, types, and templates. For feature layers, in addition to the table information, it provides information such as its geometry type, min and max scales, and spatial reference. Each type includes information about the type, such as the type ID, name, and definition expression. Types also include a default symbol and a list of feature templates. Each feature template includes a template name, description, and prototypical feature.

The property capabilities return Query, Create, Delete, Update, Editing, Sync, Uploads and Extract capabilities. The Editing capability will be included if Create, Delete, or Update is enabled for a feature service.

The geometryType property returns the geometry type of the layer. Five geometry types are supported: point (esriGeometryPoint), multipoint (esriGeometryMultipoint), polyline (esriGeometryPolyline), polygon (esriGeometryPolygon), and envelope (esriGeometryEnvelope). To learn more about these supported geometry types, see Geometry objects.

The maxRecordCount property returns the maximum number of records that will be returned at once for a query.

The Layer resource returns relatedTableId, cardinality, role, keyField, and composite for all relationships. In addition, the relationshiptableId and keyFieldInRelationshipTable properties are returned for attributed relationships only.

The effectiveMinScale and effectiveMaxScale properties represent the effective minimum and maximum scales at which the layer is visible. Effective minimum and maximum scale are calculated based on the minScale and maxScale values of the current layer and its ancestors.

The Layer resource supports an input parameter returnUpdates that accepts a Boolean value. Pass this parameter to retrieve updated timeExtent for the layer.

The field property nullable indicates whether the field can accept null values.

If a layer has attachments, its hasAttachments property will be true.

If the layer objectIdField does not have a length property or the length property is set to 4, the objectIdField is 32-bit. If the objectIdField has a length of 8, the objectIdField is 64-bit.

The geometryField property describes settings of the geometry field itself and includes the name, nullable, and editable sub-properties. Other sub-properties such as modelName may or may not be provided. It is possible to have a geometry field that is not editable. For features in layers where editable = false, the geometry values are system maintained and cannot be edited directly even by the data owner or administrator (for example, utility network dirty area layers). This is different from the allowGeometryUpdates property, which allows the service owner or administrator to control whether or not nonowner/nonadministrator users can make geometry updates. Owners or administrators can make geometry updates even when allowGeometryUpdates is false as long as the geometry field is editable.

The supportsSQLExpression property is true when a layer supports the ability to use SQL expressions within outStatistics, groupBy, or orderBy. When using SQL expressions on a feature layer, you can configure your outStatistics parameter like this: [{"statisticType":"AVG","onStatisticField":"str_angle*100","outStatisticFieldName":"avg"}]. The supportsOutFieldSqlExpression property is true when a layer supports SQL expressions in the outFields. An example of using SQL expressions in outFields can be casting aliases: outFields = County as CountyAlias, Elevation as ElevationAlias.

NoteNote:

supportsOutFieldSqlExpression is currently only supported in ArcGIS Online and Enterprise hosted feature services on a relational data store starting at 10.9."

The SupportsLOD property indicates if the ability to do lod queries can be turned on for a feature service layer. Lod queries have been turned on and can be queried when the layer includes an lodInfos property.

New at 10.9.1

  • Response caching, introduced with ArcGIS Enterprise 10.9, is no longer supported with 10.9.1. Services with response caching enabled will continue to function after upgrading to 10.9.1, though queries will no longer be cached.
  • The layer resource includes a supportedExportFormats property that describes the formats supported when exporting data. Data can be exported when the extract or sync capability is enabled and the createReplica operation is called with the syncModel parameter set as none.
  • A supportedSpatialRelationships property may be provided on the layer resource. This property describes the spatial relationships supported when querying a layer.
  • Non-spatial table templates can be authored in ArcGIS Pro and published to a feature service layer. Note that table templates have the drawingTool property as esriFeatureEditToolNone.
  • A getEstimates operation has been added for feature service layers. The operation returns up to date approximations for feature extent and row count. getEstimates is supported if the layer contains an infoInEstimates array property.
  • Layers from a location tracking service have the isLocationTrackingLayer property set as true.
  • Hosted feature service attachment resources support the w parameter, which returns attachments resized to a pixel width matching the w parameter's value. The supportsAttachmentResizing layer property will be set as true when the w parameter is supported.
  • The queryAnalytic operation is supported by non-hosted feature services that reference an enterprise geodatabase data and are published from ArcGIS Pro. This includes support for linear regression. Services that support queryAnalytic have the supportsQueryAnalytic property as true, under advancedQueryCapabilities.
    NoteNote:

    Hosted feature service from a relational data store in ArcGIS Enterprise started supporting queryAnalytic with ArcGIS Enterprise 10.9, but have added support for linear regression at 10.9.1.

  • The following is a list of advanced queryAnalytic capabilities included with 10.9.1. To see which advanced capabilities are supported for a service, check the advancedQueryAnalyticCapabilities layer property. If an advanced capability is not listed, it may not be supported.
    • supportsLinearRegression: Is true if queryAnalytic supports linear regression ("analyticType": "LinRegR2")
    • supportsAsync: Is true if queryAnalytic supports asynchronous processing (the async parameter).
    • supportsPercentileAnalytic: Is true if the queryAnalytic operation supports percentiles (analyticType="PERCENTILE_CONT" or analyticType="PERCENTILE_DISC").
  • The layer level applyEdits operation for hosted feature services in ArcGIS Online, and non-hosted feature services in ArcGIS Enterprise, includes an option to process requests asynchronously. This option is ideal for longer running edit operations that may timeout otherwise. The async parameter can be used if the layer resource has supportsAsyncApplyEdits at true under advancedEditingCapabilities.
  • The queryAttachments operation for hosted feature services supports a returnCountOnly parameter for getting the count of attachments per feature. The returnCountOnly parameter is supported when the supportsQueryAttachmentsCountOnly property is true under advancedQueryCapabilities.

New at 10.9

The following items are new or updated at 10.9:

  • Response caching can be enabled for hosted feature service layers running on the relational data store. Response caching improves performance and scalability for certain types of queries. Enabling response caching requires first configuring an object store. See the updateDefinition operation for details on response caching and how to enable it. The following layer property is set when response caching is enabled:
    • "supportsQueryWithCacheHint": true: indicates that layer queries support the cacheHint parameter.
    When the object store is configured, hosted feature layers on the relational data store include the following property, regardless of whether response caching is enabled:
    • "editingInfo": ("lastEditDate": <dateValue>): indicates the date of the last time edits were made on the layer. For example, "editingInfo": ("lastEditDate": 1609896851105). The <dateValue> is an epoch date in milliseconds.
    NoteNote:

    Online hosted feature service layers also have "supportsQueryWithCacheHint": true and include "editingInfo": ("lastEditDate": <date value>)

  • At 10.9, Bidirectional syncing with another service in ArcGIS Enterprise is supported. For bidirectional syncing, replica tracking must be enabled on the data. Replica tracking is enabled on a layer when the isDataReplicaTracked property is true. To enable replica tracking on ArcGIS Enterprise geodatabase data, see Enable Replica Tracking.
    NoteNote:

    Starting at 10.9, replica tracking is automatically enabled when sync is enabled on hosted feature services.

  • Preferred time zones can now be set to allow service authors to define the time zones intended for clients to use when working with a service's date field values. Preferred time zones are used by more recent clients, such as ArcGIS Pro 2.7 (and above). Newer clients may default to working with date values in the preferred time reference. The preferred time zone is exposed through the preferredTimeReference layer property. Its value can be set on the service with ArcGIS Server Manager for non-hosted feature services. For hosted feature services, preferredTimeReference can be set using the updateDefinition operation.
    • It's 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 datesInUnknownTimezone layer property as true. Currently, hosted feature services do not support this setting. Unknown time zones do not apply to editor tracking date fields. Editor tracking date fields are in UTC even when the service's time is set to unknown..

      Most clients released previously to ArcGIS Enterprise 10.9 will not be able to work with feature services that have the unknown time zone setting. ArcGIS Pro 2.7 or newer can work with these feature services, In order for clients to perform query, edit and or other operations, the timeReferenceUnknownClient parameter must be set to true on these operations. Setting timeReferenceUnknownClient=true indicates that the client is capable of working with unknown date values that are not in UTC. Layer operations that include the timeReferenceUnknownClient parameter include: query, applyEdits, addFeatures, updateFeatures, queryRelatedRecords, calculate, and feature resources. Service operations that include the timeReferenceUnknownClient parameter include: query, applyEdits, createReplica, synchronizeReplica, and extractChanges.

      .
  • A new layer type, Trace Network Layer, is created when Trace Networks are published as feature services. These layers can be consumed directly in ArcGIS Pro starting at version 2.7, but are not currently supported in other ArcGIS clients. Trace Network layers are composite layers that reference subLayers and describe systemLayers that are used to support diagrams and other trace network-specific behavior. are. For an example, see the Trace Network layer response below.
  • The layer query multipatchOption parameter supports a new extent value. Extent is used to return the 3D extent of multipatch features. This parameter is supported when extent is listed under supportedMultipatchOptions property in advancedQueryCapabilities:
    ...
    "supportedMultipatchOptions": [
      "embedMaterials",
      "xyFootprint",
      "externalizeTextures",
      "stripMaterials",
      "extent"
    ],
    ...
    
  • Non-hosted feature services published from ArcGIS Pro support edit mode for quantization when the layer's supportsQuantizationEditMode property is set as true.
  • Non-hosted feature services published from ArcGIS Pro support LOD queries if the underlying feature classes have had feature binning enabled. The layers include a supportsLod property, set as true, under advancedQueryCapabilities as well as an lodInfos property to describe the bins.
  • ArcGIS Enterprise feature services may now include keywords and exifInfo attachment properties. These properties are included with non-hosted feature services published from ArcGIS Pro where the upgrade attachments GP tool (ArcGIS Pro 2.7 or higher) has been run on layer attachments. Non-hosted feature services support keywords (isEnabled is true) but not exifInfo (isEnabled is false).
  • Non-hosted feature services published from ArcGIS Pro will now return the content of fields with "type": "esriFieldTypeBlob" as base64. These fields can also be edited using base64 encoding. Hosted feature services on a relational data store already support querying and editing blob columns.
  • Hosted feature services on a relational data store support SQL expressions for the outStatistics, groupBy, and orderBy layer query parameters when the feature layer's supportsSqlExpression property, under advancedQueryCapabilities, is true. Hosted feature services in ArcGIS Online, and non-hosted feature services in ArcGIS Enterprise, already support this functionality.
  • Hosted feature services on a relational data store support the queryAnalytic operation when the supportsQueryAnalytic property, under advancedQueryCapabilities, is true. Percentile analytics are not currently supported ("supportsPercentileAnalytic": false). Hosted feature services in ArcGIS Online also support this functionality.
  • Hosted feature services running on a relational data store support SQL expressions on the layer query outFields parameter when the supportsOutFieldSqlExpression property, under advancedQueryCapabilities, is true. Hosted feature services in ArcGIS Online also support this functionality.
  • Hosted feature services on a spatiotemporal data store support the calculate operation when the supportsCalculate property is true.
  • A new layer based operation called queryDateBins has been added for hosted feature services on a spatiotemporal data store. When run, the result of the operation is a set of values representing a histogram of features divided into bins based upon a date field. The response can include statistical aggregations for each bin such as count or sum, and may include the aggregated geometries (i.e., centroid) for point layers. This operation is supported if the service property supportsQueryDateBins is true.

New at 10.8.1

The following items are new or updated at 10.8.1:

  • Hosted feature services on a relational data store supports configuring a layer to allow LOD queries when the supportsLOD property, under advancedQueryCapabilities, is true. To allow LOD queries, the updateDefinition administrator operation must be run to set the lodInfos property that describes the bins.
  • The layer resource now returns the isDataReplicaTracked property. This property, when true, indicates that replica tracking has been enabled for the feature service layer. This property is required for sync with named branch versioning. For more information, see Enable Replica Tracking.
  • The layer query operation supports percentile as a statisticType when using outStatistics for feature services published from ArcGIS Pro that reference enterprise geodatabase data. Layers that support percentiles will have the advancedQueryCapabilities object's supportsPercentileStatistics property as true.
  • Multipatch data can be queried with externalizeTextures and f as pbf for feature services published from ArcGIS Pro.
  • Hosted and non-hosted feature services running on a federated server include a serviceItemId property. This describes the id of the associated feature layer item in the home app. ArcGIS Enterprise hosted feature services have supported this property since 10.7.
  • Hosted feature services on relational and spatiotemporal data stores in ArcGIS Enterprise support edit mode for quantization. This is indicated with the layer property supportsQuantizationEditMode set as true
  • Prior to 10.7.1, when publishing data that was archive enabled, traditional versioned, branch versioned, or participated in a controller dataset (geometric network, topology, utility network, etc) the calculate operation was not supported. As of 10.7.1, the calculate operation is supported with all of the above for feature services that allow updates.

Layers that have hasAttachments and supportsQueryAttachments both as true have the following features at 10.8.1:

NoteNote:

These features apply to both hosted and non-hosted feature services published from ArcGIS Pro.

  • The attachmentProperties object is included for ArcGIS Enterprise feature services. This was already a feature for ArcGIS Online hosted feature services.
  • A new fieldname property that can be used with the queryAttachments operation's attachmentsDefinitionExpression parameter to limit results based on values in the attachment table.
  • Enterprise hosted feature services support both keywords and exifInfo (isEnabled as true). These columns are added automatically when publishing a new feature services with attachments, or enabling attachments on an existing layer. If upgrading from an earlier release, the keywords and exifInfo columns will not be available. However, they can be added using the updateDefinition operation. Hosted feature services in ArcGIS Online already support attachment columns.
  • New attachment properties, id and globalid, have been added for all feature service layers that support attachments, including ArcGIS Online hosted feature services.
  • A new attachmentFields object lists information about the attachment fields, such as the type and length. The attachmentFields name property can be matched to the attachmentProperties fieldName property. This information can be used to properly format queries and understand limits in the field length response. Only fields that match properties with isEnabled as true will be listed in attachmentFields.
  • Field names are now returned in addition to the field properties in the queryAttachments operation response. If the field name and property name match, including case, only one value is returned in the response to represent both field and property. As best practice, it is best to go by the fieldname rather than the property when consuming this in an application.

Feature services now support topology layers, introduced at 10.8.1. Topology layers are composite layers that reference subLayers and do not have any capabilities. The subLayer references describe the layer's error features and dirty areas. These same are layers as are also listed in the topology layer's systemLayers object. The systemLayers are always read only (i.e., they never have editing capabilities) and are subLayers of the topology layer. The topology systems layer resources also include a reference to the topology layer as follows.

"parentLayer": {
  "id": 0,
  "name": "topo_1081.GDB.topo_2"
},
...

In clients like ArcGIS Pro 2.6, topology layers are used in conjunction with the validation service to support topology validation and error feature correction.

New at 10.8

The following is new at 10.8:

  • The feature layer resource now returns a supportsDatumTransformation property. This property is true if the feature service layer supports the addition of datum transformations. If true, the layer-level Query, Query Related, and layer-level Apply Edits operations will allow datum transformations. In addition, the supportsQueryWithDatumTransformation layer property in advancedQueryCapabilities will be true if the layer-level Query operation supports the datumTransformation parameter.
  • The layer property standardMaxRecordCountNoGeometry defines the max record count when querying a layer with returnGeometry as false and resultType as standard.
  • The supportsFieldDescriptionProperty layer property is true if the field description property is supported. The field description property allows for storing value types and descriptions with fields in a layer. Hosted feature layers' Update Definition operation can be used to add or set a field description. For more information on setting field descriptions and field type values through the home app UI, see Describe attribute fields.
  • System maintained area and length columns named SHAPE_Area and SHAPE_Length are now supported on hosted feature services (relational data store) in Enterprise. The geometryProperties shapeAreaFieldName, shapeLengthFieldName, and units have been added to describe the SHAPE_Area and SHAPE_Length fields. These fields names are reserved. If data is published that already has fields with these names, the original fields may be dropped or renamed.
    NoteNote:

    The casing of field names may vary by service.

  • The supportsQueryAttachments and supportsQueryAttachmentsWithReturnUrl properties are now supported on hosted feature services (relational data store) in Enterprise. These indicate that, if the layer's hasAttachments property is true, the Query Attachments operation can be used and, optionally, return attachments via reference URL.
  • The supportedSqlFormatsInCalculate includes the formats supported with calculate.
  • The userTypeExtension property indicates if the layer is part of a parcelFabric or utilityNetwork.
  • The layer query option supports percentile as a statisticType when using outStatistics for hosted feature services in ArcGIS Online or ArcGIS Enterprise when run on a relational data store. Layers that support percentiles include the supportsPercentileStatistics as true in the advancedQueryCapabilities layer object.
  • The referenceScale property represents the scale at which a participating layer's symbol size and text is fixed at. This property is only available if canScaleSymbols is true.

New at 10.7.1

The following is new in 10.7.1:

  • New layer properties exposed on a feature service layer:
    • The feature layer now supports the query attachments operation if supportsQueryAttachments is true and hasAttachments is true on the layer.
      • The url of the attachment can now be returned within the query attachments response ifsupportsQueryAttachmentsWithReturnUrl is true and supportsQueryAttachments is true on the layer.
  • Prior to 10.7.1, the calculate operation was not supported when publishing data that had archived enabled, was traditionally versioned, branch versioned, or participated in a controller dataset (geometric network, topology, utility network, etc). As of 10.7.1, the calculate operation is supported for all of the above for feature services that allow updates.

New at 10.7

The following is new in 10.7:

  • New layer properties exposed on a feature service layer:
    • Editor tracking fields now may include a dateFieldsTimeReference property within editFieldsInfo. If dateFieldsTimeReference does not appear within editFieldsInfo, the time zone can be assumed to be the same as the time zone for the layer. The layer’s time zone will be UTC, unless otherwise indicated by the layer’s dateFieldsTimeReference property.
    • supportsTopFeaturesQuery is true if a layer supports the queryTopFeatures operation.
    • The sqlParserVersion property is added for hosted feature service layers to indicate the supported SQL 92 syntax for standardized queries. Values include “PG_10.6.1” for relational data store based hosted feature services and “ES_10.6.1” for hosted feature services based in a spatiotemporal ArcGIS Data store. No new query operations have been added for the 10.7 release, which means that all query operations as of the 10.7 release fall under sqlParserVersion 10.6.1. Most of the SQL 92 syntax for standardized queries is supported with relational data store based hosted feature services. Hosted feature services in spatiotemporal ArcGIS Data Stores do support a subset – see the layer query operation where clause help for more information.
    • isUpdatableView is true on a hosted feature service view layer when service definition updates (for example, enabling and disabling capabilities) are allowed on the view layers.
    • supportedQueryFormats property describes the supported response types when querying a feature service layer. Values include json, html, and in 10.7 may also include pbf (protocol buffer), a compact binary encoding for geographic data.
    • isDataBranchVersioned is true when a layer references a feature class or table in an enterprise geodatabase that is branch-versioned. See branch versioning in enterprise geodatabases.
    • The "supportsOrderByOnlyOnLayerFields": true indicates that the orderByFields parameter in the layer query operation takes only fields that are in the layers fields list. Fields generated during the query operation (such as the outStatisticFieldName from outStatistics) can’t be used. The default is false.
    • The properties shapeAreaFieldName, shapeLengthFieldName, and units have been added to describe the Shape__Area and Shape__Length fields.

New at 10.6.1

The following is new in 10.6.1:

  • New layer properties exposed on a feature service layer:
    • supportsHavingClause is true if a layer supports query operations with the having clause parameter.
    • supportsCountDistinct is true if a layer supports query of count with distinct values using returnDistinctValues and returnCountOnly.
    • supportsCoordinatesQuantization is true if a layer supports coordinate quantization.
    • The supportsReturningGeometryCentroid property is true if a layer supports returning the geometry of the center of a polygon feature. Often true when supportsCoordinatesQuantization is true.
    • supportsQueryWithResultType is true if a layer supports query operations using resultType.
    • The geometryField property defines the geometry field properties on the feature layer.
    • The standardMaxRecordCount property defines the maximum number of features a query will return when the query uses resultType = standard.
    • The tileMaxRecordCount property defines the maximum number of features a query will return when the query uses resultType = tile.
    • The maxRecordCountFactor property is used to change the values of standardMaxRecordCount and tileMaxRecordCount for querying.
    • hasMetadata indicates whether a layer contains metadata.

New at 10.6

The following is new in 10.6:

  • Utility Network Layers - A new layer of "type": "Utility Network Layer" is created when Utility Networks are published as feature services. These layers can be consumed directly in ArcGIS Pro starting at version 2.1 but not yet in other ArcGIS clients at the time of the 10.6 release. Utility Network layers are composite layers in that they reference subLayers and do not have capabilities. They also describe systemLayers which are used to support diagrams and other utility network specific behavior. Information about the supported associationTypeValues are also included. See the JSON response example below.
  • Annotation Layers - A new layer of "type": "Annotation Layer" is created when annotation layers are published with feature services from ArcGIS Pro starting at version 2.1. These layers can be consumed directly in ArcGIS Pro 2.1 or later but not yet in other ArcGIS clients at the time of the 10.6 release. Annotation layers are like other layers in that they support query and editing operations. However, annotation layers do not include drawingInfo, types or templates. Annotation layers also support querying and editing the Element column with is of "type": "esriFieldTypeBlob" . As of the time of the 10.6 release, only ArcGIS Pro 2.1 can property work with the annotations.
  • The following are new properties exposed on a feature service layer:
    • modelName is a property that is exposed in both fields and layers. The modelName is provided by the back-end geodatabase tables, feature classes and fields.
    • isDataArchived is true if a layer is archive enabled which allows it to support query with historicMoment.
    • isCoGoEnabled is true if a layer has coordinate geometry enabled.
    • parentLayer references the Utility Network layer from sublayers of the Utility Network layer. For layers not that are not sublayers of a Utility Network layer, the value is null.
    • The fields defaultValue property describes the default value set for the field in the geodatabase.
    • The domain description property is the description set for the domain in the geodatabase. For example, ("domains": {"description":"Elevation ranges"}).
    • The sourceSpatialReference property describes the coordinate system of the feature class in the geodatabase.
    • Both spatialReference and sourceSpatialReference information contain new properties for the (VCS) vertical coordinate system (if defined), tolerance and resolution. The tolerance properties are explicitly listed while other properties are provided to allow a client to calculate the resolution. See JSON response example below.
    • heightModelInfo is a layer property that is exposed when the map is published with a defined vertical coordinate system.
    • sourceHeightModelInfo is a layer property that describes the feature classes vertical coordinate system when defined.
    NoteNote:

    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.

    NoteNote:

    The features listed above are available for nonhosted 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"

Hosted feature services expose the maxResultWindow property on spatiotemporal layers. This was first introduced at 10.5.1:

  • This is the max number of rows that can be returned for a request to a spatiotemporal layer.
  • It is a setting directly from the spatiotemporal data source (elastic search).
  • If the maxRecordCount (standard, tile, or none) is greater than the maxResultWindow, you will only get maxResultWindow number of rows returned in a query.
  • If the maxRecordCount (standard, tile, or none) is less than the maxResultWindow, you will get up to maxRecordCount rows in a query but you can only page as far as the maxResultWindow.
  • You can adjust the value using the Update Definition operation on the hosted feature service admin layer resource. This will adjust the maxResultWindow property on the back and spatiotemporal data source for the layer.
  • Consult the elastic search documentation for best practices and recommendations involving the max_result_window setting.

New at 10.5

The following is new in 10.5:

  • returnDomainNames is a parameter on the layer resource where domain information includes only the domain name. The domain names can be matched with the full domain information as returned by the queryDomains operation. This approach is a more efficient way to work with domains as it requires returning the full domain information only once instead of with each layer.
  • subtypeField is a layer property that is set to the name of the subtype field. If the layer does not have subtypes, it is set to empty string ("subtypeField": "").
  • defaultSubtypeCode a layer property that is set to the default subtype code if the layer has subtypes.
  • subtypes is an array that describes the subtypes in a layer and is always included if the layer has subtypes. The domains in the types array will match the domains in the subtype array for layers that have a unique value renderer based on the subtype column.
  • The mergePolicy and splitPolicy are included with the full domain information.
  • Templates will include a thumbnail when the Feature Service layer is published from a layer with a dictionary renderer. Clients can use the base 64 image in the thumbnail when displaying a template picker. The thumbnail is optional and will not be provided in templates of other Feature Service layers. See JSON response example below.
  • If allowTrueCurvesUpdates is true and onlyAllowTrueCurveUpdatesByTrueCurveClients is true, features with true curves can by updated by true curve capable clients (for example, 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 in which 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.
  • archivingInfo indicates the archiving status of the layer:
    • supportsQueryWithHistoricMoment indicates whether historic moment queries can be performed on the layer. A layer must be archiving-enabled to support these type of queries.
    • startArchivingMoment indicates the time archiving was enabled on the layer.
  • 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 to edit the geometry of m-aware data.

Changes prior to 10.5

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

  • useStandardizedQueries will be true to indicate that the layer requires the use of standardized queries. Learn more about standardized queries.
  • supportsRollbackOnFailureParameter will be true to indicate the support for the rollbackOnFailure parameter in edit operations (for example, apply edits, add features, update features, and delete features). The supportsRollbackOnFailureParameter will be true if the data is simple and nonversioned. If supportsRollbackOnFailureParameter is false , rollbackOnFailure will be true during edit operations such as applyEdits.
  • syncCanReturnChanges will be true if the data is versioned and has global IDs; this indicates the server has the ability to return changes only. If syncCanReturnChanges is false, the server will include all data for each layer in the response.
  • isDataVersioned will be true if the layer is versioned.
  • editFieldsInfo identifies the editor tracking fields and realm as follows:
    • creationDateField indicates the field that stores the date and time the feature was created.
    • creatorField indicates the field that stores the user who created the feature.
    • editDateField indicates the field that stores the date and time the feature was last edited.
    • editorField indicates the field that stores the user who last edited the feature.
    • realm will be appended to the name of the user who makes the edit. For example, consider the case that logged-in user Sarah adds a new feature. The creator is set in the geodatabase as Sarah. If you configure the feature service to use the realm @server, subsequent edits appear in the database under the name Sarah@server.
  • editingInfo if present, specifies information about editing.
    • lastEditDate indicates the last time a layer was edited. This value gets updated every time the layer data is edited or when any of the layer properties change.
  • ownershipBasedAccessControlForFeatures identifies the ownership-based access control settings of the feature service. The following properties indicate the operations allowed on features created by other users. The creatorField identifies the creator/owner of the feature.
    • allowOthersToUpdate will be true if users can update features created by others.
    • allowOthersToDelete will be true if users can delete features created by others.
    • allowOthersToQuery will be true if users can query features created by others.
  • supportsStatistics indicates whether the layer supports statistical functions in a query operation. This property is deprecated at 10.3. Starting at 10.3, refer to the new supportsStatistics property found within advancedQueryCapabilities.
  • supportsAdvancedQueries indicates whether the layer supports orderBy and groupBy in a query operation. This property is deprecated at 10.3. Starting at 10.3, refer to the new advancedQueryCapabilities for this information.
  • Advanced query capabilities of a layer are listed in advancedQueryCapabilities (new at 10.3), which contains the following properties:
    • supportsPagination will be true if the layer supports pagination in the query operation.
    • supportsQueryWithDistance will be true if the layer supports providing a distance parameter in the query operation.
    • supportsReturningQueryExtent will be true if the layer supports returnExtentOnly in the query operation.
    • supportsStatistics indicates whether the layer supports statistical functions in a query operation.
    • supportsOrderBy will be true if the layer supports the orderByFields parameter in the query operation.
    • supportsDistinct will be true if the layer supports the returnDistinctValues parameter in the query operation.
  • supportedQueryFormats returns the formats in which query results can be returned.
  • hasZ returns true if the features in the layer have Z values.
  • hasM returns true if the features in the layer have M values.
  • allowGeometryUpdates returns true if the geometry of the features in the layer can be edited.
  • supportsCalculate will be true if the layers supports the calculate operation.
  • supportsAttachmentsByUploadId will be true if the layer supports uploading attachments by uploadId.
  • supportsApplyEditsWithGlobalIds will be true if the layer supports applying edits where globalid values provided by the client are used. For supportsApplyEditsWithGlobalIds to be true, layers must have a globalid column and have isDataVersioned as false. Layers with hasAttachments as true additionally require attachments with a globalid and attachments related to features via the features globalid.
NoteNote:
A unique index is also required on the globalid column for supportsApplyEditsWithGlobalIds to be true. These columns may not already have a unique index. You can use the add attribute index geoprocessing tool to create a new unique index on the globalid column in ArcGIS Pro and ArcGIS desktop. You can also remove the non-unique index using the remove attribute index geoprocessing tool. For services that support it, the Add To Definition operation from the services admin API can also be used to add the index.
  • Fields display SQL TYPE in addition to field types for ArcGIS Online hosted feature service layers. While developing application these SQL types should not be relied upon and field types should be used instead. The table below describes these SQL types.

SqlType

FieldType

Result database column type

Not specified

esriFieldTypeOID

[int]

sqlTypeBigInt

esriFieldTypeOID

[bigint] - not currently supported

sqlTypeBigInt

esriFieldTypeInteger

[bigint]

sqlTypeInteger

esriFieldTypeInteger

[int]

sqlTypeBit

esriFieldTypeSmallInteger

[bit]

sqlTypeTinyInt

esriFieldTypeSmallInteger

[tinyint]

sqlTypeInteger

esriFieldTypeSmallInteger

[smallint]

NA

esriFieldTypeDate

columnSize = 4 [smalldatatime]

NA

esriFieldTypeDate

columnSize = 10 [datetimeoffset]

NA

esriFieldTypeDate

columnSize = 8 or none [datetime2]

sqlTypeTime

esriFieldTypeString

[time]

sqlTypeTimestamp

esriFieldTypeString

[timestamp]

none

esriFieldTypeString

nvarchar

Request parameters

Parameter

Details

returnUpdates

This parameter was added at 10.1.

If value is true, an updated time extent is returned. If the layer is not time-aware, an empty response is returned.

Values: true | false

returnDomainNames

This parameter was added at 10.5.

If value is true, then domain information provided in the layer includes only the domain name. To get the full domain information, use the queryDomains operation in the service resource. This domains included in the layer can be used to linked to the full domain information via the domain name. If the value is false or not set, then full domain information is included in the layer as it was in past releases.

Values: true | false

f

The response format. The default response format is html.

Values: html | json | pjson

Example usage

Below is a sample request URL for a feature layer:

https://machine.domain.com/webadaptor/rest/services/USA/FeatureServer/0?f=json

JSON Response syntax

{
  "currentVersion": <currentVersion>, //Added at 10.0 SP1
  //properties applicable to both feature layers and tables
  "id": <layerOrTableId>,
  "name": "<layerOrTableName>",
  "type": "<layerOrTableType>", //"Feature Layer" or "Table"
  "parentLayer": <parentLayerID>, //Added at 10.6
  "displayField": "<field name>"
  "description": "<description>",
  "copyrightText": "<copyrightText>",
  "subtypeField": "<subtypeField>",	//Added at 10.5
  "defaultSubtypeCode": <defaultSubtypeCode>, //Added at 10.5
  "defaultVisibility": <true | false>, //Added at 10.1
  //Added at 10.1
  "editFieldsInfo": {
    "creationDateField": "<creationDateField>",
    "creatorField": "<creatorField>",
    "editDateField": "<editDateField>",
    "editorField": "<editorField>",
    "realm":"<realm>",
    //Added at 10.7
    "dateFieldsTimeReference": {
      "timeZone": "<timeZone>",
      "respectsDaylightSaving": <true | false>
    }
  },
  //Added at 10.1
  "ownershipBasedAccessControlForFeatures": {
    "allowOthersToUpdate": <true | false>,
    "allowOthersToDelete": <true | false>,
    "allowOthersToQuery": <true | false>
  },
  //Added at 10.1
  "syncCanReturnChanges": <true | false>,
  "relationships": [
    {
      "id": <relationshipId1>,
      "name": "<relationshipName1>",
      "relatedTableId": <relatedTableId1>,
      "cardinality": "<esriRelCardinalityOneToOne>|<esriRelCardinalityOneToMany>|<esriRelCardinalityManyToMany>",//Added at 10.1
      "role": "<esriRelRoleOrigin>|<esriRelRoleDestination>",//Added at 10.1
      "keyField": "<keyFieldName2>",//Added at 10.1
      "composite": <true>|<false>,//Added at 10.1
      "relationshipTableId": <attributedRelationshipClassTableId>,  //Added in 10.1. Returned only for attributed relationships
      "keyFieldInRelationshipTable": "<key field in AttributedRelationshipClass table that matches keyField>" //Added in 10.1. Returned only for attributed relationships
    },
    {
      "id": <relationshipId2>,
      "name": "<relationshipName2>",
      "relatedTableId": <relatedTableId2>,
      "cardinality": "<esriRelCardinalityOneToOne>|<esriRelCardinalityOneToMany>|<esriRelCardinalityManyToMany>",//Added at 10.1
      "role": "<esriRelRoleOrigin>|<esriRelRoleDestination>",//Added at 10.1
      "keyField": "<keyFieldName2>",//Added at 10.1
      "composite": <true>|<false>,//Added at 10.1
      "relationshipTableId": <attributedRelationshipClassTableId>,  //Added in 10.1. Returned only for attributed relationships
      "keyFieldInRelationshipTable": "<key field in AttributedRelationshipClass table that matches keyField>" //Added in 10.1. Returned only for attributed relationships
    }
  ],
  "isDataVersioned": <true | false>, //Added at 10.1
  "isDataArchived": <true | false>, //Added at 10.6
  "isDataBranchVersioned": <true | false>,  //Added at 10.7
  "isDataReplicaTracked": <true | false>, //Added at 10.8.1
  "isCoGoEnabled": <true | false>, //Added at 10.6
  "supportsRollbackOnFailureParameter": <true | false>, //Added at 10.1
  "dateFieldsTimeReference": {
    "timeZone": <Time Zone>,
    "respectsDaylightSaving": <true | false>
  },
  "preferredTimeReference": { //Added at 10.9
    "timeZone": <Time Zone>,
    "respectsDaylightSaving": <true | false>
  },
  "datesInUnknownTimezone": <true | false> //Added at 10.9
  "archivingInfo": {
    "supportsQueryWithHistoricMoment": <true | false>,
    "startArchivingMoment": <startArchivingMoment>
  }, //Added at 10.5
  "supportsStatistics": <true | false>, //Added at 10.1
  "supportsAdvancedQueries": <true | false>, //Added at 10.1
  "supportsCoordinatesQuantization": <true | false>, //Added at 10.6.1
  "supportsDatumTransformation": <true | false>, //Added at 10.8
  //properties applicable to feature layers only
  "geometryType" : "<geometryType>",
  //Added at 10.7
  "geometryProperties": {
    "shapeAreaFieldName": "<shapeAreaFieldName>", 
    "shapeLengthFieldName": "<shapeLengthFieldName>", 
    "units": "<units>"
  },
  "minScale": <minScale>,
  "maxScale": <maxScale>,
  "effectiveMinScale": <effectiveMinScale>,
  "effectiveMaxScale": <effectiveMaxScale>,
  "supportsQuantizationEditMode": <true | false>,
		"advancedQueryCapabilities": {
    "supportsPagination": <true | false>,
    "supportsTrueCurve": <true | false>,
    "supportsQueryWithDistance": <true | false>,
    "supportsLod": <true | false>,
    "supportsReturningQueryExtent": <true | false>,
    "supportsStatistics": <true | false>,
    "supportsHavingClause": <true | false>, //Added at 10.6.1
    "supportsOrderBy": <true | false>,
    "supportsDistinct": <true | false>,
    "supportsCountDistinct": <true | false>, //Added at 10.6.1
    "supportsPaginationOnAggregatedQueries": <true | false>,
    "supportsQueryWithResultType": <true | false>, //Added at 10.6.1
    "supportsReturningGeometryCentroid": <true | false>, //Added at 10.6.1
    "supportsSqlExpression": <true | false>,
    "supportsOutFieldsSqlExpression": <true | false>,
    "supportsTopFeaturesQuery": <true | false>,  //Added at 10.7
    "supportsOrderByOnlyOnLayerFields": <true | false>,  //Added at 10.7,
    "supportsQueryWithDatumTransformation": <true | false>, //Added at 10.8
    "supportsPercentileStatistics": <true | false>, //Added at 10.8
    "supportsQueryAttachments": <true | false>, //Added at 10.7.1
    "supportsQueryAttachmentsWithReturnUrl": <true | false>, //Added at 10.7.1
    "supportsQueryAnalytic": <true | false> //Added to online and hosted feature services at 10.9
    "supportedMultipatchOptions": [ //Added at 10.9
      "embedMaterials",
      "xyFootprint",
      "externalizeTextures",
      "stripMaterials",
      "extent"
    ]
  },
  "standardMaxRecordCountNoGeometry": <maxRecordCount>, //Added at 10.8
  "supportsAsyncCalculate": <true | false>, //Added at 10.8
  "supportsFieldDescriptionProperty": <true | false>,
  "advancedEditingCapabilities": {
    "supportedSqlFormatesInCalculate": [
      <formats>
    ]
  },
  "advancedQueryAnalyticCapabilities": { //Added at online and hosted feature services at 10.9
    "supportsPercentileAnalytic": <true | false>
  },
  "userTypeExtensions": [ //Added at 10.8
    <Extension Types>
  ],
  "extent":  {
    "xmin": <xmin>, "ymin": <ymin>, "xmax": <xmax>, "ymax": <ymax>,
    "spatialReference": {
      "wkid": <wkid>,
      "latestWkid": <latestWkid>,
      //Added at 10.6 when map is published with a vertical coordinate system
      "vcsWkid": <vcsWkid>, 
      "latestVcsWkid": <latestVcsWkid>,
      "xyTolerance": <xyTolerance>,
      "zTolerance": <zTolerance>,
      "mTolerance": <mTolerance>,
      "falseX": <falseX>,
      "falseY": <falseY>,
      "xyUnits": <xyUnits>,
      "falseZ": <falseZ>,
      "zUnits": <zUnits>,
      "falseM": <falseM>,
      "mUnits": <mUnits>
    } 
  },
  //Added at 10.6. Only returned when a map is published with a vertical coordinate system
  "heightModelInfo": { 
    "heightModel": "<heightModel>",
    "vertCRS": "<vertCRS>",
    "heightUnit": "<heightUnit>"
  }, 
  //Added at 10.6. Only returned when source data has a defined vertical coordinate system
  "sourceHeightModelInfo": { 
    "heightModel": "<heightModel>",
    "vertCRS": "<vertCRS>",
    "heightUnit": "<heightUnit>"
  }, //Added at 10.6 
  "sourceSpatialReference": {
    "wkid": <wkid>,
    "latestWkid": <latestWkid>,
    //Added at 10.6. Returns when source data is published with a vertical coordinate system
    "vcsWkid": <vcsWkid>,
    "latestVcsWkid": <latestVcsWkid>,
    "xyTolerance": <xyTolerance>,
    "zTolerance": <zTolerance>,
    "mTolerance": <mTolerance>,
    "falseX": <falseX>,
    "falseY": <falseY>,
    "xyUnits": <xyUnits>,
    "falseZ": <falseZ>,
    "zUnits": <zUnits>,
    "falseM": <falseM>,
    "mUnits": <mUnits>     
  },  
  //for feature layers only
  "drawingInfo": {
    "renderer": <renderer>,
    "transparency": <transparency>,
    "labelingInfo": <labelingInfo>
  },
  "hasM":  <true | false>, //if the features in the layer have M values, the hasM property will be true
  "hasZ":  <true | false>, //if the features in the layer have Z values, the hasZ property will be true
  //if the layer / table supports querying based on time
  "enableZDefaults": <true | false>,//Added at 10.1
  "zDefault": <zDefaultValue>,//Added at 10.1
  "allowGeometryUpdates": <true | false>,//Added at 10.1
  "timeInfo": {
    "startTimeField": "<startTimeFieldName>",
    "endTimeField": "<endTimeFieldName>",
    "trackIdField": "<trackIdFieldName>",
    "timeExtent": [<startTime>, <endTime>],
    "timeReference": {
      "timeZone": "<timeZone>",
      "respectsDaylightSaving" : <true | false>
    },
    "timeInterval": <timeInterval>,
    "timeIntervalUnits": "<timeIntervalUnits>"
  },
  //if the layer / table has attachments, the hasAttachments property will be true
  "hasAttachments": <true | false>,
  //from 10 onward - indicates whether the layer / table has htmlPopups
  "htmlPopupType": "<esriServerHTMLPopupTypeNone | esriServerHTMLPopupTypeAsURL | esriServerHTMLPopupTypeAsHTMLText>",
  //layer / table fields
  "objectIdField": "<objectIdFieldName>",
  "globalIdField": "<globalIdFieldName>",
  "typeIdField": "<typeIdFieldName>",
  //from 10.0 fields of type (String, Date, GlobalID, GUID and XML) have an additional length property, editable properties
  //from 10.1 fields have an additional nullable property
  //from 10.6 fields have additional defaultValue and modelName properties. defaultValue can be a numeric or string value
  "fields": [
    {
      "name": "<fieldName1>",
      "type": "<fieldType1>",
      "alias": "<fieldAlias1>",
      "domain": <domain1>,
      "editable": "<true | false>",
      "nullable": "<true | false>",
      "length": "<length1>",
      "defaultValue": "<defaultValue1>",
      "modelName": "<modelName1>"
    },
    {
      "name": "<fieldName2>",
      "type": "<fieldType2>",
      "alias": "<fieldAlias1>",
      "domain": <domain1>,
      "editable": "<true | false>",
      "nullable": "<true | false>",
      "length": "<length2>",
      "defaultValue": <defaultValue2>,
      "modelName": "<modelName2>"
    }
  ],
  //Added at 10.6.1
  "geometryField": {
    "name": "<fieldName>",
    "type": "<fieldType>",
    "alias": "<fieldAlias>",
    "domain": <domain>,
    "editable": "<true | false>",
    "nullable": "<true | false>",
    "defaultValue": "<defaultValue>",
    "modelName": "<modelName>"
  },
  //layer / table sub-types
  "types": [
    {
      "id": <typeId1>,
      "name": "<typeName1>",
      "domains": {
        "<domainField11>": <domain11>,
        "<domainField12>": <domain12>,
        "description": "<domainDescription>" //Added in 10.6
      },
      "templates": [
        {
          "name": "<templateName11>",
          "description": "<templateDescription11>",
          "prototype": <prototypicalFeature11>
        },
        {
          "name": "<templateName12>",
          "description": "<templateDescription12>",
          "prototype": <prototypicalFeature12>
        }
      ]
    },
    {
      "id": <typeId2>,
      "name": "<typeName2>",
      "domains": {
        "<domainField11>": <domain21>,
        "<domainField12>": <domain22>,
        "description": "<domainDescription>" //Added in 10.6
      },
      "templates": [
        {
          "name": "<templateName21>",
          "description": "<templateDescription21>",
          "prototype": <prototypicalFeature21>,
          "drawingTool": "esriFeatureEditToolNone | esriFeatureEditToolPoint | esriFeatureEditToolLine | esriFeatureEditToolPolygon |
             esriFeatureEditToolAutoCompletePolygon | esriFeatureEditToolCircle | esriFeatureEditToolEllipse | 
             esriFeatureEditToolRectangle |esriFeatureEditToolFreehand"
        },
        {
          "name": "<templateName22>",
          "description": "<templateDescription22>",
          "prototype": <prototypicalFeature22>,
          "drawingTool": "esriFeatureEditToolNone | esriFeatureEditToolPoint | esriFeatureEditToolLine | esriFeatureEditToolPolygon |
             esriFeatureEditToolAutoCompletePolygon | esriFeatureEditToolCircle | esriFeatureEditToolEllipse | 
             esriFeatureEditToolRectangle | esriFeatureEditToolFreehand"
        }
      ]
    }
  ],
  //layer / table templates - usually present when the layer / table has no types
  "templates": [
    {
      "name": "<templateName1>",
      "description": "<templateDescription1>",
      "prototype": <prototypicalFeature1>,
      "drawingTool": "esriFeatureEditToolNone | esriFeatureEditToolPoint | esriFeatureEditToolLine | esriFeatureEditToolPolygon |
             esriFeatureEditToolAutoCompletePolygon | esriFeatureEditToolCircle | esriFeatureEditToolEllipse | 
             esriFeatureEditToolRectangle | esriFeatureEditToolFreehand"
    },
    {
      "name": "<templateName2>",
      "description": "<templateDescription2>",
      "prototype": <prototypicalFeature2>,
      "drawingTool": "esriFeatureEditToolNone | esriFeatureEditToolPoint | esriFeatureEditToolLine | esriFeatureEditToolPolygon |
             esriFeatureEditToolAutoCompletePolygon | esriFeatureEditToolCircle | esriFeatureEditToolEllipse | 
             esriFeatureEditToolRectangle | esriFeatureEditToolFreehand"
       
    },
  ],
  "subtypes": [
    {
      "code": <SubtypeCode1>,
      "name": "<SubtypeDescription1>",
      "defaultValues": {
        "<fieldName1>": <default1>,
        "<fieldName2>": "<default2>"
      },
      "domains": {         
        "<fieldName1>": <domain11>,
        "<fieldName2>": <domain12>
      }
    },
    {
      "code": <SubtypeCode2>,
      "name": "<SubtypeDescription2>",
      "defaultValues": {
        "<fieldName1>": <default3>,
        "<fieldName2>": "<default4>"
      },
      "domains": {
        "<fieldName1>": <domain21>,
        "<fieldName2>": <domain22>
      }
    }
  ],
  //Maximum number of records returned in a query result
  "maxRecordCount": <maxRecordCount>, //Added at 10.1
  "standardMaxRecordCount ": <standardMaxRecordCount>, //Added at 10.6.1
  "tileMaxRecordCount": <tileMaxRecordCount>, //Added at 10.6.1
  "maxRecordCountFactor": <maxRecordCountFactor>, //Added at 10.6.1
  "supportedQueryFormats": "<supportedQueryFormats>", //Added at 10.1
  "supportedExportFormats": "<supported formats>", //Added at 10.9.1
  "supportedSpatialRelationships": [<supported spatial relationships>] //Added at 10.9.1
  "hasMetadata": <true | false>, //Added at 10.6.1
  "hasStaticData": <true | false>,
  "sqlParserVersion": "<sqlParserVersion>", //Added at 10.7
  "isUpdatableView": <true | false>, //Added at 10.7
  //comma separated list of supported capabilities - e.g. "Create,Delete,Query,Update,Editing"
  "capabilities": "<capabilities>"
}

JSON Response examples

Example one: Feature service layer

Example two: Layer subtypes | returnDomainNames=false

Example three: Layer subtypes | returnDomainNames=true

Example four: Template and thumbnail

Example five: maxRecordCount point data

Example six: maxRecordCount polyilne data

Example seven: maxRecordCount polygon data

Example eight: maxRecordCount table

Example nine: Utility Network layer

Example ten: Spatial references

Example eleven: Topology layers

Example twelve: attachmentProperties and attachmentFields

Example thirteen: Trace Network layer

Example one

{
  "id": 0,
  "name": "Incidents",
  "type": "Feature Layer",
  "parentLayer": null,
  "displayField": "req_id",
  "description": "",
  "copyrightText": "",
  "subtypeField": "",
  "defaultSubtypeCode": 0,
  "defaultVisibility": True,
  "editFieldsInfo": {
    "creationDateField": "created_date",
    "creatorField": "created_user",
    "editDateField": "last_edited_date",
    "editorField": "last_edited_user",
    "dateFieldsTimeReference": {
      "timeZone": "UTC",
      "respectsDaylightSaving": false
    },
    "preferredTimeReference": {
      "timeZone": "Eastern Standard Time",
      "respectsDaylightSaving": true
    },
    "datesInUnknownTimezone": false,
  },
  "isDataArchived": false,
  "isDataBranchVersioned": false,
  "isDataReplicaTracker": false,
  "isCoGoEnabled": false,
  "parentLayer": null,
  "minScale": 0,
  "maxScale": 0,
  "geometryType": "esriGeometryPoint",
  "geometryProperties": {
    "shapeAreaFieldName": "Shape__Area", 
    "shapeLengthFieldName": "Shape__Length", 
    "units": "esriMeters"
  },
  "supportsCoordinatesQuantization": true,
  "supportsDatumTransformation": true,
  "supportsRollbackOnFailureParameter": true,
  "supportsQuantizationEditMode": true,
  "advancedQueryCapabilities": {
    "supportsPagination": true,
    "supportsTrueCurve": true,
    "supportsQueryWithDistance": true,
    "supportsLod": false,
    "supportsPaginationOnAggregatedQueries": true,
    "supportsReturningQueryExtent": true,
    "supportsStatistics": true,
    "supportsHavingClause": true,
    "supportsOrderBy": true,
    "supportsDistinct": true,
    "supportsCountDistinct": true,
    "supportsQueryWithResultType": true,
    "supportsReturningGeometryCentroid": false,
    "supportsSqlExpression": true,
    "supportsOutFieldSqlExpression": false,
    "supportsTopFeaturesQuery": true,
    "supportsOrderByOnlyOnLayerFields": true,
    "supportsQueryWithDatumTransformation": true,
    "supportsPercentileStatistics": true,
    "supportsQueryAttachments": true,
    "supportsQueryAttachmentsWithReturnUrl": true,
    "supportsQueryAnalytic": true,
    "supportedMultipatchOptions": [
      "embedMaterials",
      "xyFootprint",
      "externalizeTextures",
      "stripMaterials",
      "extent"
    ]
  },
  "standardMaxRecordCountNoGeometry": 3200,
  "supportsAsyncCalculate": true,
  "supportsFieldDescriptionProperty": true,
  "advancedEditingCapabilities": {
    "supportedSqlFormatsInCalculate": [
      "standard"
    ]
  },
  "advancedQueryAnalyticCapabilities": {
    "supportsPercentileAnalytic": false
  },
  "userTypeExtensions": [
    "utilityNetwork"
  ],
  "extent": {
    "xmin": -122.514435102,
    "ymin": 5.6843418860808E-14,
    "xmax": 138.625776397,
    "ymax": 67.1577965990001,
    "spatialReference": {
      "wkid": 4326,
      "latestWkid": 3857,
      "vcsWkid": 5702,
      "latestVcsWkid": 5702,
      "xyTolerance": 0.001,
      "zTolerance": 0.001,
      "mTolerance": 0.001,
      "falseX": -20037700,
      "falseY": -30241100,
      "xyUnits": 10000,
      "falseZ": -100000,
      "zUnits": 10000,
      "falseM": -100000,
      "mUnits": 10000
    }
  },
  "heightModelInfo": {
    "heightModel": "gravity_related_height",
    "vertCRS": "NGVD_1929",
    "heightUnit": "us-foot"
  },
  "sourceSpatialReference": {
    "wkid": 102100,
    "latestWkid": 3857,
    "xyTolerance": 0.001,
    "zTolerance": 0.001,
    "mTolerance": 0.001,
    "falseX": -20037700,
    "falseY": -30241100,
    "xyUnits": 10000,
    "falseZ": -100000,
    "zUnits": 10000,
    "falseM": -100000,
    "mUnits": 10000
  },
  "sourceHeightModelInfo": {
    "heightModel": "ellipsoidal",
    "vertCRS": "ITRF_2000",
    "heightUnit": "meter"
  },
  "drawingInfo": {
    "renderer": {
      "type": "uniqueValue",
      "field1": "req_type",
      "field2": null,
      "field3": null,
      "defaultSymbol": null,
      "defaultLabel": "\u003call other values\u003e",
      "uniqueValueInfos": [
        {
          "value": "Blocked Street or Sidewalk",
          "label": "Blocked Street or Sidewalk",
          "description": "",
          "symbol": {
            "type": "esriPMS",
            "url": "1DD4FC53",
            "imageData": "iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAOxAII=",
            "contentType": "image/png",
            "color": null,
            "width": 19,
            "height": 19,
            "angle": 0,
            "xoffset": 0,
            "yoffset": 0
          }
        },
        {
          "value": "Damaged Property",
          "label": "Damaged Property",
          "description": "",
          "symbol": {
            "type": "esriPMS",
            "url": "DF3100A6",
            "imageData": "iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAAAXNSR0IB2cksfwAAAAlwSFlzAAAOxAII=",
            "contentType": "image/png",
            "color": null,
            "width": 15,
            "height": 9,
            "angle": 0,
            "xoffset": 0,
            "yoffset": 0
          }
        },
        {
          "value": "Graffiti Complaint - Public Property",
          "label": "Graffiti Complaint",
          "description": "",
          "symbol": {
            "type": "esriPMS",
            "url": "B2E6E7A0",
            "imageData": "iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAOxAAg==",
            "contentType": "image/png",
            "color": null,
            "width": 19,
            "height": 19,
            "angle": 0,
            "xoffset": 0,
            "yoffset": 0
          }
        },
        {
          "value": "Graffiti Complaint � Private Property",
          "label": "Graffiti Complaint",
          "description": "",
          "symbol": {
            "type": "esriPMS",
            "url": "B2E6E7A0",
            "imageData": "iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAOxAAAg==",
            "contentType": "image/png",
            "color": null,
            "width": 19,
            "height": 19,
            "angle": 0,
            "xoffset": 0,
            "yoffset": 0
          }
        },
        {
          "value": "Sewer Issues",
          "label": "Sewer Issues",
          "description": "",
          "symbol": {
            "type": "esriPMS",
            "url": "80DC11A7",
            "imageData": "iVBORw0KGgoAAAANSUhEUgAAABYAAAAaCAYAAACzdqxAAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAOxAAAg==",
            "contentType": "image/png",
            "color": null,
            "width": 16,
            "height": 19,
            "angle": 0,
            "xoffset": 0,
            "yoffset": 0
          }
        },
        {
          "value": "Sidewalk and Curb Issues",
          "label": "Sidewalk and Curb Issues",
          "description": "",
          "symbol": {
            "type": "esriPMS",
            "url": "19213DC2",
            "imageData": "iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IB2cksfwAAAAlwSFlzAAAOxAAAII=",
            "contentType": "image/png",
            "color": null,
            "width": 19,
            "height": 19,
            "angle": 0,
            "xoffset": 0,
            "yoffset": 0
          }
        },
        {
          "value": "Tree Maintenance or Damage",
          "label": "Tree Maintenance or Damage",
          "description": "",
          "symbol": {
            "type": "esriPMS",
            "url": "37B62A6C",
            "imageData": "iVBORw0KGgoAAAANSUhEUgAAABcAAAAaCAYAAABctMd+AAAAAXNSR0IB2cksfwAAAAlwSFlzAAAOxAAACC",
            "contentType": "image/png",
            "color": null,
            "width": 17,
            "height": 19,
            "angle": 0,
            "xoffset": 0,
            "yoffset": 0
          }
        }
      ]
    },
    "transparency": 0,
    "labelingInfo": null
  },
  "hasAttachments": false,
  "htmlPopupType": "esriServerHTMLPopupTypeAsHTMLText",
  "objectIdField": "objectid",
  "globalIdField": "",
  "typeIdField": "req_type",
  "fields": [
    {
      "name": "objectid",
      "type": "esriFieldTypeOID",
      "alias": "Object ID",
      "editable": false,
      "nullable": true,
      "domain": null,
      "defaultValue": null,
      "modelName": "OBJECTID"
    },
    {
      "name": "req_id",
      "type": "esriFieldTypeString",
      "alias": "Request ID",
      "editable": true,
      "length": 20,
      "nullable": true,
      "domain": null,
      "defaultValue": null,
      "modelName": "REQ_ID"
    },
    {
      "name": "req_type",
      "type": "esriFieldTypeString",
      "alias": "Request Type",
      "editable": true,
      "length": 40,
      "nullable": true,
      "domain": null,
      "defaultValue": null,
      "modelName": "REQ_TYPE"
    },
    {
      "name": "req_date",
      "type": "esriFieldTypeString",
      "alias": "Request Date",
      "editable": true,
      "length": 30,
      "nullable": true,
      "domain": null,
      "defaultValue": null,
      "modelName": "REQ_DATE"
    },
    {
      "name": "req_time",
      "type": "esriFieldTypeString",
      "alias": "Request Time",
      "editable": true,
      "length": 20,
      "nullable": true,
      "domain": null,
      "defaultValue": null,
      "modelName": "REQ_TIME"
    },
    {
      "name": "address",
      "type": "esriFieldTypeString",
      "alias": "Address",
      "editable": true,
      "length": 60,
      "nullable": true,
      "domain": null,
      "defaultValue": null,
      "modelName": "ADDRESS"
    },
    {
      "name": "x_coord",
      "type": "esriFieldTypeString",
      "alias": "X Coordinate",
      "editable": true,
      "length": 20,
      "nullable": true,
      "domain": null,
      "defaultValue": null,
      "modelName": "X_COORD"
    },
    {
      "name": "y_coord",
      "type": "esriFieldTypeString",
      "alias": "Y Coordinate",
      "editable": true,
      "length": 20,
      "nullable": true,
      "domain": null,
      "defaultValue": null,
      "modelName": "Y_COORD"
    },
    {
      "name": "district",
      "type": "esriFieldTypeString",
      "alias": "District",
      "editable": true,
      "length": 20,
      "nullable": true,
      "domain": null,
      "defaultValue": null,
      "modelName": "DISTRICT"
    },
    {
      "name": "status",
      "type": "esriFieldTypeSmallInteger",
      "alias": "Status",
      "editable": true,
      "nullable": true,
      "domain": {
        "type": "codedValue",
        "name": "StatusCodes",
        "codedValues": [
          {
            "name": "New",
            "code": 1
          },
          {
            "name": "Open",
            "code": 2
          },
          {
            "name": "Closed",
            "code": 3
          }
        ]
      }
    }
  ],
  "geometryField": {
    "name": "Shape",
    "type": "esriFieldTypeGeometry",
    "alias": "Shape",
    "domain": null,
    "editable": true,
    "nullable": true,
    "defaultValue": null,
    "modelName": "Shape"
 },
  "types": [
    {
      "id": "Graffiti Complaint - Private Property",
      "name": "Graffiti Complaint",
      "domains": {
        "description": null
      },
      "templates": [
        {
          "name": "Graffiti Complaint",
          "description": "",
          "drawingTool": "esriFeatureEditToolPoint",
          "prototype": {
            "attributes": {
              "status": 1,
              "req_id": null,
              "req_type": "Graffiti Complaint - Private Property",
              "req_date": null,
              "req_time": null,
              "address": null,
              "x_coord": null,
              "y_coord": null,
              "district": null
            }
          }
        }
      ]
    },
    {
      "id": "Blocked Street or Sidewalk",
      "name": "Blocked Street or Sidewalk",
      "domains": {
        "description": null
      },
      "templates": [
        {
          "name": "Blocked Street or Sidewalk",
          "description": "",
          "drawingTool": "esriFeatureEditToolPoint",
          "prototype": {
            "attributes": {
              "status": 1,
              "req_id": null,
              "req_type": "Blocked Street or Sidewalk",
              "req_date": null,
              "req_time": null,
              "address": null,
              "x_coord": null,
              "y_coord": null,
              "district": null
            }
          }
        }
      ]
    },
    {
      "id": "Damaged Property",
      "name": "Damaged Property",
      "domains": {
        "description": null        
      },
      "templates": [
        {
          "name": "Damaged Property",
          "description": "",
          "drawingTool": "esriFeatureEditToolPoint",
          "prototype": {
            "attributes": {
              "status": 1,
              "req_id": null,
              "req_type": "Damaged Property",
              "req_date": null,
              "req_time": null,
              "address": null,
              "x_coord": null,
              "y_coord": null,
              "district": null
            }
          }
        }
      ]
    },
    {
      "id": "Graffiti Complaint - Public Property",
      "name": "Graffiti Complaint",
      "domains": {
        "description": null        
      },
      "templates": [
        {
          "name": "Graffiti Complaint",
          "description": "",
          "drawingTool": "esriFeatureEditToolPoint",
          "prototype": {
            "attributes": {
              "status": 1,
              "req_id": null,
              "req_type": "Graffiti Complaint - Public Property",
              "req_date": null,
              "req_time": null,
              "address": null,
              "x_coord": null,
              "y_coord": null,
              "district": null
            }
          }
        }
      ]
    },
    {
      "id": "Sewer Issues",
      "name": "Sewer Issues",
      "domains": {
        "description": null        
      },
      "templates": [
        {
          "name": "Sewer Issues",
          "description": "",
          "drawingTool": "esriFeatureEditToolPoint",
          "prototype": {
            "attributes": {
              "status": 1,
              "req_id": null,
              "req_type": "Sewer Issues",
              "req_date": null,
              "req_time": null,
              "address": null,
              "x_coord": null,
              "y_coord": null,
              "district": null
            }
          }
        }
      ]
    },
    {
      "id": "Tree Maintenance or Damage",
      "name": "Tree Maintenance or Damage",
      "domains": {
        "description": null       
      },
      "templates": [
        {
          "name": "Tree Maintenance or Damage",
          "description": "",
          "drawingTool": "esriFeatureEditToolPoint",
          "prototype": {
            "attributes": {
              "status": 1,
              "req_id": null,
              "req_type": "Tree Maintenance or Damage",
              "req_date": null,
              "req_time": null,
              "address": null,
              "x_coord": null,
              "y_coord": null,
              "district": null
            }
          }
        }
      ]
    },
    {
      "id": "Sidewalk and Curb Issues",
      "name": "Sidewalk and Curb Issues",
      "domains": {
        "description": null        
      },
      "templates": [
        {
          "name": "Sidewalk and Curb Issues",
          "description": "",
          "drawingTool": "esriFeatureEditToolPoint",
          "prototype": {
            "attributes": {
              "status": 1,
              "req_id": null,
              "req_type": "Sidewalk and Curb Issues",
              "req_date": null,
              "req_time": null,
              "address": null,
              "x_coord": null,
              "y_coord": null,
              "district": null
            }
          }
        }
      ]
    }
  ],
  "templates": [
    
  ],
  "maxRecordCount" : 2000, 
  "standardMaxRecordCount" : 4000, 
  "tileMaxRecordCount" : 4000, 
  "maxRecordCountFactor" : 1,
  "hasMetadata": false,
  "supportedQueryFormats": "JSON, geoJSON, PBF",
  "supportedExportFormats": "sqlite,filegdb",
  "supportedSpatialRelationships": [
    "esriSpatialRelIntersects",
    "esriSpatialRelContains",
    "esriSpatialRelCrosses",
    "esriSpatialRelEnvelopeIntersects",
    "esriSpatialRelOverlaps",
    "esriSpatialRelTouches",
    "esriSpatialRelWithin"
  ],
  "capabilities": "Create,Delete,Query,Update,Editing",
  "sqlParserVersion": "PG_10.6.1",
  "isUpdatableView": true
}

Example two

Layer that has subtypes and returnDomainNames is false

{
  "currentVersion": 10.8,
  "cimVersion": "1.3.0",
  "id": 1,
  "name": "FC1",
  "parentLayerId": -1,
  "type": "Feature Layer",
  "description": "sync.GDB.FC1_1",
  "copyrightText": "",
  "defaultVisibility": true,
  "editFieldsInfo": null,
  "ownershipBasedAccessControlForFeatures": null,
  "syncCanReturnChanges": false,
  "relationships": [],
  "isDataVersioned": false,
  "supportsRollbackOnFailureParameter": true,
  "archivingInfo": {
    "supportsQueryWithHistoricMoment": false,
    "startArchivingMoment": -1
  },
  "supportsStatistics": true,
  "supportsAdvancedQueries": true,
  "supportsValidateSQL": true,
  "supportsCalculate": true,
  "advancedQueryCapabilities": {
    "supportsPagination": true,
    "supportsTrueCurve": true,
    "supportsQueryWithDistance": true,
    "supportsReturningQueryExtent": true,
    "supportsStatistics": true,
    "supportsOrderBy": true,
    "supportsDistinct": true
  },
  "geometryType": "esriGeometryPolygon",
  "minScale": 0,
  "maxScale": 0,
  "extent": {
    "xmin": -1.11478990548E7,
    "ymin": 5784886.1743,
    "xmax": -1.08927509324E7,
    "ymax": 5970448.445100002,
    "spatialReference": {
      "wkid": 102100,
      "latestWkid": 3857
    }
  },
  "drawingInfo": {
    "renderer": {
      "type": "uniqueValue",
      "field1": "FLD0_SUBT_FC2",
      "field2": null,
      "fieldDelimiter": ", ",
      "defaultSymbol": {
        "type": "esriSFS",
        "style": "esriSFSSolid",
        "color": [
          130,
          130,
          130,
          255
        ],
        "outline": {
          "type": "esriSLS",
          "style": "esriSLSSolid",
          "color": [
            225,
            225,
            225,
            255
          ],
          "width": 0.75
        }
      },
      "defaultLabel": "<all other values>",
      "uniqueValueInfos": [
        {
          "symbol": {
            "type": "esriSFS",
            "style": "esriSFSSolid",
            "color": [
              207,
              246,
              252,
              255
            ],
            "outline": {
              "type": "esriSLS",
              "style": "esriSLSSolid",
              "color": [
                110,
                110,
                110,
                255
              ],
              "width": 0.7
            }
          },
          "value": "1",
          "label": "subtype1",
          "description": ""
        }
      ]
    },
    "transparency": 0,
    "labelingInfo": null
  },
  "hasM": false,
  "hasZ": false,
  "allowGeometryUpdates": true,
  "hasAttachments": false,
  "supportsApplyEditsWithGlobalIds": false,
  "htmlPopupType": "esriServerHTMLPopupTypeAsHTMLText",
  "objectIdField": "OBJECTID",
  "globalIdField": "",
  "displayField": "FLD0_SUBT_FC2",
  "typeIdField": "FLD0_SUBT_FC2",
  "subtypeField": "FLD0_SUBT_FC2",
  "defaultSubtypeCode": 1,
  "fields": [
    {
      "name": "OBJECTID",
      "type": "esriFieldTypeOID",
      "alias": "OBJECTID",
      "domain": null,
      "editable": false,
      "nullable": false
    },
    {
      "name" : "Shape__Area", 
      "type" : "esriFieldTypeDouble", 
      "alias" : "Shape__Area", 
      "sqlType" : "sqlTypeDouble", 
      "nullable" : true, 
      "editable" : false, 
      "domain" : null, 
      "defaultValue" : null
    }, 
   {
      "name" : "Shape__Length", 
      "type" : "esriFieldTypeDouble", 
      "alias" : "Shape__Length", 
      "sqlType" : "sqlTypeDouble", 
      "nullable" : true, 
      "editable" : false, 
      "domain" : null, 
      "defaultValue" : null
    }, 
    {
      "name": "FLD0_SUBT_FC2",
      "type": "esriFieldTypeInteger",
      "alias": "FLD0_SUBT_FC2",
      "domain": null,
      "editable": true,
      "nullable": true
    },
    {
      "name": "FLD1_LONG_FC2",
      "type": "esriFieldTypeInteger",
      "alias": "FLD1_LONG_FC1",
      "domain": {
        "type": "range",
        "name": "RDOM_1",
        "range": [
          1,
          50
        ],
        "mergePolicy": "esriMPTDefaultValue",
        "splitPolicy": "esriSPTDefaultValue"
      },
      "editable": true,
      "nullable": true
    },
    {
      "name": "FLD2_DBL_FC2",
      "type": "esriFieldTypeDouble",
      "alias": "FLD2_DBL_FC2",
      "domain": {
        "type": "range",
        "name": "RDOM_3",
        "range": [
          100,
          150.5
        ],
        "mergePolicy": "esriMPTDefaultValue",
        "splitPolicy": "esriSPTDefaultValue"
      },
      "editable": true,
      "nullable": true
    },
    {
      "name": "FLD3_DBL_FC2",
      "type": "esriFieldTypeDouble",
      "alias": "FLD3_LONG_FC1",
      "domain": {
        "type": "codedValue",
        "name": "CDOM_1",
        "codedValues": [
          {
            "name": "code 1 description",
            "code": 1
          },
          {
            "name": "code 1.5 description",
            "code": 1.5
          },
          {
            "name": "code 2 description",
            "code": 2
          },
          {
            "name": "code 2.5 description",
            "code": 2.5
          }
        ],
        "mergePolicy": "esriMPTDefaultValue",
        "splitPolicy": "esriSPTDefaultValue"
      },
      "editable": true,
      "nullable": true
    },
    {
      "name": "FLD4_TEXT_FC2",
      "type": "esriFieldTypeString",
      "alias": "FLD4_LONG_FC1",
      "domain": {
        "type": "codedValue",
        "name": "CDOM_3",
        "codedValues": [
          {
            "name": "code 100 description",
            "code": "code 100"
          },
          {
            "name": "code 200 description",
            "code": "code 200"
          },
          {
            "name": "code 300 description",
            "code": "code 300"
          }
        ],
        "mergePolicy": "esriMPTDefaultValue",
        "splitPolicy": "esriSPTDefaultValue"
      },
      "editable": true,
      "nullable": true,
      "length": 50
    }
  ],
  "indexes": [
    {
      "name": "R1390_pk",
      "fields": "OBJECTID",
      "isAscending": true,
      "isUnique": true,
      "description": ""
    },
    {
      "name" : "Shape__Area_Index", 
      "fields" : "Shape__Area", 
      "isAscending" : true, 
      "isUnique" : false, 
      "description" : ""
    }, 
    {
      "name" : "Shape__Length_Index", 
      "fields" : "Shape__Length", 
      "isAscending" : true, 
      "isUnique" : false, 
      "description" : ""
    },
    {
      "name": "S1047_idx",
      "fields": "SHAPE",
      "isAscending": true,
      "isUnique": true,
      "description": ""
    }
  ],
  "dateFieldsTimeReference": {
    "timeZone": "UTC",
    "respectsDaylightSaving": false
  },
  "types": [
    {
      "id": 1,
      "name": "subtype1",
      "domains": {
        "FLD1_LONG_FC2": {"type": "inherited"},
        "FLD3_DBL_FC2": {
          "type": "codedValue",
          "name": "CDOM_4",
          "codedValues": [
            {
              "name": "coded 1000.1 desc",
              "code": 1000.1
            },
            {
              "name": "coded 2000.1 desc",
              "code": 2000.2
            },
            {
              "name": "coded 3000.1 desc",
              "code": 3000.3
            }
          ],
          "mergePolicy": "esriMPTDefaultValue",
          "splitPolicy": "esriSPTDefaultValue"
        },
        "FLD4_TEXT_FC2": {"type": "inherited"}
      },
      "templates": [
        {
          "name": "subtype1",
          "description": "",
          "prototype": {
            "attributes": {
              "FLD3_DBL_FC2": 1000.1,
              "FLD4_TEXT_FC2": "code 200",
              "FLD0_SUBT_FC2": 1,
              "FLD1_LONG_FC2": 25,
              "FLD2_DBL_FC2": null
            }
          },
          "drawingTool": "esriFeatureEditToolPolygon"
        }
      ]
    }
  ],
  "templates": [],
  "subtypes": [
    {
      "code": 1,
      "name": "subtype1",
      "defaultValues": {
        "FLD0_SUBT_FC2": 1,
        "FLD1_LONG_FC2": 25,
        "FLD2_DBL_FC2": null,
        "FLD3_DBL_FC2": 1000.1,
        "FLD4_TEXT_FC2": "code 200"
      },
      "domains": {
        "FLD1_LONG_FC2": {"type": "inherited"},
        "FLD3_DBL_FC2": {
          "type": "codedValue",
          "name": "CDOM_4",
          "codedValues": [
            {
               "name": "coded 1000.1 desc",
               "code": 1000.1
            },
            {
               "name": "coded 2000.1 desc",
               "code": 2000.2
            },
            {
               "name": "coded 3000.1 desc",
               "code": 3000.3
            }
          ],
          "mergePolicy": "esriMPTDefaultValue",
          "splitPolicy": "esriSPTDefaultValue"
        },
        "FLD4_TEXT_FC2": {"type": "inherited"}
      }
    }
  ],
  "maxRecordCount" : 2000, 
  "standardMaxRecordCount" : 4000, 
  "tileMaxRecordCount" : 4000, 
  "maxRecordCountFactor" : 1,
  "supportedQueryFormats": "JSON, geoJSON, PBF",
  "capabilities": "Create,Query,Update,Delete,Extract,Uploads,Editing",
  "useStandardizedQueries": true
}

Example three

Layer that has subtypes and returnDomainNames is true

{
  "currentVersion": 10.8,
  "cimVersion": "1.3.0",
  "id": 1,
  "name": "FC1",
  "parentLayerId": -1,
  "type": "Feature Layer",
  "description": "sync.GDB.FC1_1",
  "copyrightText": "",
  "defaultVisibility": true,
  "editFieldsInfo": null,
  "ownershipBasedAccessControlForFeatures": null,
  "syncCanReturnChanges": false,
  "relationships": [],
  "isDataVersioned": false,
  "supportsRollbackOnFailureParameter": true,
  "archivingInfo": {
    "supportsQueryWithHistoricMoment": false,
    "startArchivingMoment": -1
  },
  "supportsStatistics": true,
  "supportsAdvancedQueries": true,
  "supportsValidateSQL": true,
  "supportsCalculate": true,
  "advancedQueryCapabilities": {
    "supportsPagination": true,
    "supportsTrueCurve": true,
    "supportsQueryWithDistance": true,
    "supportsReturningQueryExtent": true,
    "supportsStatistics": true,
    "supportsOrderBy": true,
    "supportsDistinct": true
  },
  "geometryType": "esriGeometryPolygon",
  "minScale": 0,
  "maxScale": 0,
  "extent": {
    "xmin": -1.11478990548E7,
    "ymin": 5784886.1743,
    "xmax": -1.08927509324E7,
    "ymax": 5970448.445100002,
    "spatialReference": {
      "wkid": 102100,
      "latestWkid": 3857
    }
  },
  "drawingInfo": {
    "renderer": {
      "type": "uniqueValue",
      "field1": "FLD0_SUBT_FC2",
      "field2": null,
      "fieldDelimiter": ", ",
      "defaultSymbol": {
        "type": "esriSFS",
        "style": "esriSFSSolid",
        "color": [
          130,
          130,
          130,
          255
        ],
        "outline": {
          "type": "esriSLS",
          "style": "esriSLSSolid",
          "color": [
            225,
            225,
            225,
            255
          ],
          "width": 0.75
        }
      },
      "defaultLabel": "<all other values>",
      "uniqueValueInfos": [
        {
          "symbol": {
            "type": "esriSFS",
            "style": "esriSFSSolid",
            "color": [
              207,
              246,
              252,
              255
            ],
            "outline": {
              "type": "esriSLS",
              "style": "esriSLSSolid",
              "color": [
                110,
                110,
                110,
                255
              ],
              "width": 0.7
            }
          },
          "value": "1",
          "label": "subtype1",
          "description": ""
        }
      ]
    },
    "transparency": 0,
    "labelingInfo": null
  },
  "hasM": false,
  "hasZ": false,
  "allowGeometryUpdates": true,
  "hasAttachments": false,
  "supportsApplyEditsWithGlobalIds": false,
  "htmlPopupType": "esriServerHTMLPopupTypeAsHTMLText",
  "objectIdField": "OBJECTID",
  "globalIdField": "",
  "displayField": "FLD0_SUBT_FC2",
  "typeIdField": "FLD0_SUBT_FC2",
  "subtypeField": "FLD0_SUBT_FC2",
  "defaultSubtypeCode": 1,
  "fields": [
    {
      "name": "OBJECTID",
      "type": "esriFieldTypeOID",
      "alias": "OBJECTID",
      "domain": null,
      "editable": false,
      "nullable": false
    },
    {
      "name": "FLD0_SUBT_FC2",
      "type": "esriFieldTypeInteger",
      "alias": "FLD0_SUBT_FC2",
      "domain": null,
      "editable": true,
      "nullable": true
    },
    {
      "name": "FLD1_LONG_FC2",
      "type": "esriFieldTypeInteger",
      "alias": "FLD1_LONG_FC1",
      "domain": {"name": "RDOM_1"},
      "editable": true,
      "nullable": true
    },
    {
      "name": "FLD2_DBL_FC2",
      "type": "esriFieldTypeDouble",
      "alias": "FLD2_DBL_FC2",
      "domain": {"name": "RDOM_3"},
      "editable": true,
      "nullable": true
    },
    {
      "name": "FLD3_DBL_FC2",
      "type": "esriFieldTypeDouble",
      "alias": "FLD3_LONG_FC1",
      "domain": {"name": "CDOM_1"},
      "editable": true,
      "nullable": true
    },
    {
      "name": "FLD4_TEXT_FC2",
      "type": "esriFieldTypeString",
      "alias": "FLD4_LONG_FC1",
      "domain": {"name": "CDOM_3"},
      "editable": true,
      "nullable": true,
      "length": 50
    }
  ],
  "indexes": [
    {
      "name": "R1390_pk",
      "fields": "OBJECTID",
      "isAscending": true,
      "isUnique": true,
      "description": ""
    },
    {
      "name": "S1047_idx",
      "fields": "SHAPE",
      "isAscending": true,
      "isUnique": true,
      "description": ""
    }
  ],
  "dateFieldsTimeReference": {
    "timeZone": "UTC",
    "respectsDaylightSaving": false
  },
  "types": [
    {
      "id": 1,
      "name": "subtype1",
      "domains": {
        "FLD1_LONG_FC2": {"name": "RDOM_1"},
        "FLD3_DBL_FC2": {"name": "CDOM_4"},
        "FLD4_TEXT_FC2": {"name": "CDOM_3"}
      },
      "templates": [
        {
          "name": "subtype1",
          "description": "",
          "prototype": {
            "attributes": {
              "FLD3_DBL_FC2": 1000.1,
              "FLD4_TEXT_FC2": "code 200",
              "FLD0_SUBT_FC2": 1,
              "FLD1_LONG_FC2": 25,
              "FLD2_DBL_FC2": null
            }
          },
          "drawingTool": "esriFeatureEditToolPolygon"
        }
      ]
    }
  ],
  "templates": [],
  "subtypes": [
    {
      "code": 1,
      "name": "subtype1",
      "defaultValues": {
        "FLD0_SUBT_FC2": 1,
        "FLD1_LONG_FC2": 25,
        "FLD2_DBL_FC2": null,
        "FLD3_DBL_FC2": 1000.1,
        "FLD4_TEXT_FC2": "code 200"
      },
      "domains": {
        "FLD1_LONG_FC2": {"name": "RDOM_1"},
        "FLD3_DBL_FC2": {"name": "CDOM_4"},
        "FLD4_TEXT_FC2": {"name": "CDOM_3"}
      }
    }
  ],
  "maxRecordCount" : 2000, 
  "standardMaxRecordCount" : 4000, 
  "tileMaxRecordCount" : 4000, 
  "maxRecordCountFactor" : 1,
  "supportedQueryFormats": "JSON, geoJSON",
  "capabilities": "Create,Query,Update,Delete,Extract,Uploads,Editing",
  "useStandardizedQueries": true
}

Example four

Layer with a template and thumbnail

{
  ....
  "templates": [
    {
      "name": "template_sample",
      "description": "template with thumbnail",
      "prototype": {
        "attributes": {
          "direction": null,
          "name": null,
          "code": null
        }
      },
      "drawingTool": "esriFeatureEditToolPoint",
      "thumbnail": {
        "imageData":" <base 64>",
        "contentType": "image/png",
        "height": 34,
        "width": 40
      }
    }
  ]
  ....
},
...

Example five

maxRecordCount for point data

{
  "maxRecordCount": 2000, 
  "standardMaxRecordCount": 32000, 
  "tileMaxRecordCount": 8000, 
},
...

Example six

maxRecordCount for polyline data

{
  "maxRecordCount": 2000, 
  "standardMaxRecordCount": 4000, 
  "tileMaxRecordCount": 4000, 
},
...

Example seven

maxRecordCount for polygon data

{
  "maxRecordCount": 2000, 
  "standardMaxRecordCount": 4000, 
  "tileMaxRecordCount": 4000, 
},
...

Example eight

maxRecordCount for table

{
  "maxRecordCount": 2000, 
  "standardMaxRecordCount": 32000, 
  "tileMaxRecordCount": 8000, 
},
...

Example nine

Utility network layer

{
  "currentVersion": 10.8,
  "cimVersion": "2.1.0",
  "id": 8,
  "name": "Electric Utility Network",
  "type": "Utility Network Layer",
  "description": "",
  "geometryType": null,
  "copyrightText": "",
  "parentLayer": null,
  "subLayers": [
    {
      "id": 9,
      "name": "Point Errors"
    },
    {
      "id": 10,
      "name": "Line Errors"
    },
    {
      "id": 11,
      "name": "Polygon Errors"
    },
    {
      "id": 12,
      "name": "Dirty Areas"
    }
  ],
  "minScale": 0,
  "maxScale": 0,
  "defaultVisibility": true,
  "extent": {
    "xmin": 1025871.4390050925,
    "ymin": 1861241.5247562313,
    "xmax": 1037672.4351865175,
    "ymax": 1873159.6725078186,
    "spatialReference": {
      "wkid": 102671,
      "latestWkid": 3435,
      "xyTolerance": 0.00328083333333333,
      "zTolerance": 0.001,
      "mTolerance": 0.001,
      "falseX": -17463800,
      "falseY": -46132600,
      "xyUnits": 3048.0060960121905,
      "falseZ": -100000,
      "zUnits": 10000,
      "falseM": -100000,
      "mUnits": 10000
    }
  },
  "hasAttachments": false,
  "htmlPopupType": "esriServerHTMLPopupTypeNone",
  "displayField": "",
  "typeIdField": null,
  "subtypeFieldName": null,
  "fields": null,
  "indexes": [],
  "subtypes": [],
  "relationships": [],
  "canModifyLayer": false,
  "canScaleSymbols": false,
  "hasLabels": false,
  "supportsStatistics": false,
  "supportsAdvancedQueries": false,
  "supportedQueryFormats": "JSON, geoJSON",
  "ownershipBasedAccessControlForFeatures": {"allowOthersToQuery": true},
  "useStandardizedQueries": true,
  "advancedQueryCapabilities": {
    "useStandardizedQueries": true,
    "supportsStatistics": false,
    "supportsOrderBy": false,
    "supportsDistinct": false,
    "supportsPagination": false,
    "supportsTrueCurve": false,
    "supportsReturningQueryExtent": true,
    "supportsQueryWithDistance": true,
    "supportsSqlExpression": false
  },
  "systemLayers": {
    "dirtyAreasLayerId": 12,
    "lineErrorsLayerId": 10,
    "pointErrorsLayerId": 9,
    "polygonErrorsLayerId": 11,
    "associationsTableId": 500001,
    "subnetworksTableId": 500002,
    "rulesTableId": 500003,
    "diagramEdgeLayerId": 500005,
    "diagramJunctionLayerId": 500006,
    "diagramContainerLayerId": 500007,
    "temporaryDiagramEdgeLayerId": 500008,
    "temporaryDiagramJunctionLayerId": 500009,
    "temporaryDiagramContainerLayerId": 500010
  },
  "associationTypeValues": {
    "connectivity": 1,
    "containment": 2,
    "attachment": 3
  },
  "capabilities": ""
},
...

Example ten

Layer with spatial reference, VCS, tolerance, resolution properties, heigh model info, source spatial reference, and source height model info:

"extent": {
  "xmin": -1.2912538509399999E7,
  "ymin": 4475883.597499996,
  "xmax": -8559568.4057,
  "ymax": 5338447.646700002,
  "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"
},
"sourceSpatialReference": {
  "wkid": 4326,
  "latestWkid": 4326,
  "vcsWkid": 5874,
  "latestVcsWkid": 5874,
  "xyTolerance": 0.001,
  "zTolerance": 0.001,
  "mTolerance": 0.001,
  "falseX": -20037700,
  "falseY": -30241100,
  "xyUnits": 10000,
  "falseZ": -100000,
  "zUnits": 10000,
  "falseM": -100000,
  "mUnits": 10000
},
"sourceHeightModelInfo": {
  "heightModel": "gravity_related_height",
  "vertCRS": "High_Water_Height",
  "heightUnit": "meter"
},
...

Example eleven

Toplogy layer:

{
	 "currentVersion": 10.81,
	 "cimVersion": "2.6.0",
	 "id": 0,
	 "name": "topo_1081.GDB.topo_2",
	 "type": "Topology Layer",
	 "description": "",
	 "geometryType": null,
	 "copyrightText": "",
	 "parentLayer": null,
	 "subLayers": [
    {
			   "id": 1,
			   "name": "Dirty Areas"
		  },
		  {
			   "id": 2,
			   "name": "Point Errors"
		  },
		  {
			   "id": 3,
			   "name": "Line Errors"
		  },
		  {
			   "id": 4,
			   "name": "Polygon Errors"
		  }
	 ],
	 "minScale": 0,
	 "maxScale": 0,
	 "defaultVisibility": true,
	 "extent": {
		  "xmin": -2.0037507842788246E7,
		  "ymin": -3.024097145838615E7,
		  "xmax": 2.0037507842788246E7,
		  "ymax": 3.024097145838615E7,
		  "spatialReference": {
			   "wkid": 102100,
			   "latestWkid": 3857,
			   "xyTolerance": 0.001,
			   "zTolerance": 0.001,
			   "mTolerance": 0.001,
			   "falseX": -20037700,
			   "falseY": -30241100,
			   "xyUnits": 10000,
			   "falseZ": -100000,
			   "zUnits": 10000,
			   "falseM": -100000,
			   "mUnits": 10000
		  }
	 },
	 "hasAttachments": false,
	 "htmlPopupType": "esriServerHTMLPopupTypeNone",
	 "displayField": "",
	 "typeIdField": null,
	 "subtypeFieldName": null,
	 "subtypeField": null,
	 "defaultSubtypeCode": null,
	 "fields": null,
	 "geometryField": {},
	 "indexes": [],
	 "subtypes": [],
	 "relationships": [],
	 "canModifyLayer": false,
	 "canScaleSymbols": false,
	 "hasLabels": false,
	 "supportsStatistics": false,
	 "supportsExceedsLimitStatistics": false,
	 "supportsAdvancedQueries": false,
	 "supportedQueryFormats": "JSON, geoJSON, PBF",
	 "isDataVersioned": false,
	 "ownershipBasedAccessControlForFeatures": {
		  "allowOthersToQuery": true
	 },
	 "useStandardizedQueries": true,
	 "advancedQueryCapabilities": {
	  	"useStandardizedQueries": true,
		  "supportsStatistics": false,
		  "supportsPercentileStatistics": false,
		  "supportsHavingClause": false,
		  "supportsOrderBy": false,
		  "supportsDistinct": false,
		  "supportsCountDistinct": false,
		  "supportsPagination": false,
		  "supportsTrueCurve": true,
		  "supportsQueryWithDatumTransformation": true,
		  "supportsReturningQueryExtent": true,
		  "supportsQueryWithDistance": true,
		  "supportsSqlExpression": false
	 },
	 "supportsDatumTransformation": true,
	 "dateFieldsTimeReference": null,
	 "hasMetadata": true,
	 "isDataArchived": false,
	 "archivingInfo": {
		  "supportsQueryWithHistoricMoment": false,
		  "startArchivingMoment": -1
	 },
	 "supportsCoordinatesQuantization": true,
	 "supportsDynamicLegends": false,
	 "systemLayers": {
		  "dirtyAreasLayerId": 1,
		  "pointErrorsLayerId": 2,
		  "lineErrorsLayerId": 3,
		  "polygonErrorsLayerId": 4
	 },
	 "capabilities": "",
	 "serviceItemId": "76f0e878d04a4d638e73ba3e4ee0f32b"
}

Example twelve

Layer with both attachmentProperties and attachmentFields:

{
	 ...
	 "attachmentProperties": [
    {
			   "name": "id",
			   "fieldName": "attachmentid",
			   "isEnabled": true
		  },
		  {
			   "name": "globalId",
			   "fieldName": "globalid",
			   "isEnabled": true
		  },
		  {
			   "name": "name",
			   "fieldName": "att_name",
			   "isEnabled": true
		  },
		  {
			   "name": "size",
			   "fieldName": "data_size",
			   "isEnabled": true
		  },
		  {
			   "name": "contentType",
			   "fieldName": "content_type",
			   "isEnabled": true
		  },
		  {
			   "name": "keywords",
			   "fieldName": "KEYWORDS",
			   "isEnabled": false
		  },
		  {
			   "name": "exifInfo",
			   "fieldName": "EXIFINFO",
			   "isEnabled": false
		  }
	 ],
	 "attachmentFields": [
    {
			   "name": "attachmentid",
			   "type": "esriFieldTypeOID",
			   "alias": "attachmentid",
			   "domain": null,
			   "editable": false,
			   "nullable": false,
			   "defaultValue": null
		  },
		  {
			   "name": "globalid",
			   "type": "esriFieldTypeGlobalID",
			   "alias": "globalid",
			   "domain": null,
			   "editable": false,
			   "nullable": false,
			   "length": 38,
			   "defaultValue": null
		  },
		  {
			   "name": "att_name",
			   "type": "esriFieldTypeString",
			   "alias": "att_name",
			   "domain": null,
			   "editable": true,
			   "nullable": false,
			   "length": 250,
			   "defaultValue": null
		  },
		  {
			   "name": "data_size",
			   "type": "esriFieldTypeInteger",
			   "alias": "data_size",
			   "domain": null,
			   "editable": true,
			   "nullable": false,
			   "defaultValue": null
		  },
		  {
			   "name": "content_type",
			   "type": "esriFieldTypeString",
			   "alias": "content_type",
			   "domain": null,
			   "editable": true,
			   "nullable": false,
			   "length": 150,
			   "defaultValue": null
		  }
	 ],
	 "standardMaxRecordCount": 32000,
	 "tileMaxRecordCount": 8000,
	 "standardMaxRecordCountNoGeometry": 32000,
	 "maxRecordCountFactor": 1,
	 "serviceItemId": "f96c143856974e4ab5754128783a2377"
}

Example thirteen

Trace Network layer

{
  "currentVersion": 10.9,
  "cimVersion": "2.7.0",
  "id": 3,
  "name": "TNetwork_2D Trace Network",
  "type": "Trace Network Layer",
  "description": "",
  "geometryType": null,
  "copyrightText": "",
  "parentLayer": null,
  "subLayers": [
    {
      "id": 4,
      "name": "Point Errors"
    },
    {
      "id": 5,
      "name": "Line Errors"
    },
    {
      "id": 6,
      "name": "System Junctions"
    },
    {
      "id": 7,
      "name": "Dirty Areas"
    }
  ],
  "minScale": 0,
  "maxScale": 0,
  "defaultVisibility": true,
  "extent": {
    "xmin": -180.00000009,
    "ymin": -90.00000008999996,
    "xmax": 180.00000009000007,
    "ymax": 90.00000009000007,
    "spatialReference": {
      "wkid": 4269,
      "latestWkid": 4269,
      "xyTolerance": 8.983152841195213E-9,
      "zTolerance": 0.001,
      "mTolerance": 0.001,
      "falseX": -400,
      "falseY": -400,
      "xyUnits": 9.999999999999999E8,
      "falseZ": -100000,
      "zUnits": 10000,
      "falseM": -100000,
      "mUnits": 10000
    }
  },
  "hasAttachments": false,
  "htmlPopupType": "esriServerHTMLPopupTypeNone",
  "displayField": "",
  "typeIdField": null,
  "subtypeFieldName": null,
  "subtypeField": null,
  "defaultSubtypeCode": null,
  "fields": null,
  "geometryField": {},
  "indexes": [],
  "subtypes": [],
  "relationships": [],
  "canModifyLayer": false,
  "canScaleSymbols": false,
  "hasLabels": false,
  "supportsStatistics": false,
  "supportsExceedsLimitStatistics": false,
  "supportsAdvancedQueries": false,
  "supportedQueryFormats": "JSON, geoJSON, PBF",
  "isDataVersioned": false,
  "ownershipBasedAccessControlForFeatures": {"allowOthersToQuery": true},
  "useStandardizedQueries": true,
  "advancedQueryCapabilities": {
    "useStandardizedQueries": true,
    "supportsStatistics": false,
    "supportsPercentileStatistics": false,
    "supportsHavingClause": false,
    "supportsOrderBy": false,
    "supportsDistinct": false,
    "supportsCountDistinct": false,
    "supportsPagination": false,
    "supportsLod": false,
    "supportsQueryWithLodSR": false,
    "supportsTrueCurve": true,
    "supportsQueryWithDatumTransformation": true,
    "supportsReturningQueryExtent": true,
    "supportsQueryWithDistance": true,
    "supportsSqlExpression": false,
    "supportsTimeRelation": true,
    "supportsSqlFormat": false
  },
  "supportsDatumTransformation": true,
  "dateFieldsTimeReference": null,
  "preferredTimeReference": null,
  "datesInUnknownTimezone": false,
  "hasMetadata": true,
  "isDataArchived": false,
  "archivingInfo": {
    "supportsQueryWithHistoricMoment": false,
    "startArchivingMoment": -1
  },
  "supportsCoordinatesQuantization": true,
  "supportsDynamicLegends": false,
  "systemLayers": {
    "dirtyAreasLayerId": 7,
    "lineErrorsLayerId": 5,
    "pointErrorsLayerId": 4,
    "systemJunctionLayerId": 6,
    "associationsTableId": 600001,
    "diagramEdgeLayerId": 600002,
    "diagramJunctionLayerId": 600003,
    "diagramContainerLayerId": 600004,
    "temporaryDiagramEdgeLayerId": 600005,
    "temporaryDiagramJunctionLayerId": 600006,
    "temporaryDiagramContainerLayerId": 600007
  },
  "capabilities": "",
  "serviceItemId": "6286495532fa4750b0c4665419d08f96"
}