ESRI ArcGIS · Schema

ArcGIS Feature

JSON Schema for an ArcGIS feature as returned by feature services. Represents a geographic feature with geometry and attributes.

GISGeospatialMappingLocationSpatial Analysis

Properties

Name Type Description
attributes object Feature attributes as key-value pairs corresponding to layer field definitions
geometry object The geometry of the feature. Type depends on the layer geometry type.
View JSON Schema on GitHub

JSON Schema

esri-arcgis-feature-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://api-evangelist.github.io/esri-arcgis/json-schema/esri-arcgis-feature-schema.json",
  "title": "ArcGIS Feature",
  "description": "JSON Schema for an ArcGIS feature as returned by feature services. Represents a geographic feature with geometry and attributes.",
  "type": "object",
  "properties": {
    "attributes": {
      "type": "object",
      "description": "Feature attributes as key-value pairs corresponding to layer field definitions",
      "additionalProperties": true
    },
    "geometry": {
      "description": "The geometry of the feature. Type depends on the layer geometry type.",
      "oneOf": [
        { "$ref": "#/$defs/Point" },
        { "$ref": "#/$defs/Polyline" },
        { "$ref": "#/$defs/Polygon" }
      ]
    }
  },
  "required": ["attributes"],
  "$defs": {
    "SpatialReference": {
      "type": "object",
      "description": "Coordinate reference system definition",
      "properties": {
        "wkid": {
          "type": "integer",
          "description": "Well-Known ID of the spatial reference (e.g. 4326 for WGS84, 102100 for Web Mercator)"
        },
        "latestWkid": {
          "type": "integer"
        },
        "wkt": {
          "type": "string",
          "description": "Well-Known Text representation of the spatial reference"
        }
      }
    },
    "Point": {
      "type": "object",
      "description": "A single geographic point",
      "properties": {
        "x": { "type": "number", "description": "X coordinate (longitude for geographic)" },
        "y": { "type": "number", "description": "Y coordinate (latitude for geographic)" },
        "z": { "type": "number", "description": "Z coordinate (elevation)" },
        "m": { "type": "number", "description": "Measure value" },
        "spatialReference": { "$ref": "#/$defs/SpatialReference" }
      },
      "required": ["x", "y"]
    },
    "Polyline": {
      "type": "object",
      "description": "A geographic polyline consisting of one or more paths",
      "properties": {
        "paths": {
          "type": "array",
          "description": "Array of paths, each path is an array of coordinate pairs",
          "items": {
            "type": "array",
            "items": {
              "type": "array",
              "items": { "type": "number" },
              "minItems": 2,
              "maxItems": 4
            }
          }
        },
        "spatialReference": { "$ref": "#/$defs/SpatialReference" }
      },
      "required": ["paths"]
    },
    "Polygon": {
      "type": "object",
      "description": "A geographic polygon consisting of one or more rings",
      "properties": {
        "rings": {
          "type": "array",
          "description": "Array of rings; first ring is exterior, additional rings are interior (holes)",
          "items": {
            "type": "array",
            "items": {
              "type": "array",
              "items": { "type": "number" },
              "minItems": 2,
              "maxItems": 4
            },
            "minItems": 4
          }
        },
        "spatialReference": { "$ref": "#/$defs/SpatialReference" }
      },
      "required": ["rings"]
    },
    "FeatureServiceLayer": {
      "type": "object",
      "description": "Metadata for a feature service layer",
      "properties": {
        "id": { "type": "integer" },
        "name": { "type": "string" },
        "type": {
          "type": "string",
          "enum": ["Feature Layer", "Table"]
        },
        "geometryType": {
          "type": "string",
          "enum": ["esriGeometryPoint", "esriGeometryPolyline", "esriGeometryPolygon", "esriGeometryMultipoint", "esriGeometryEnvelope"]
        },
        "objectIdField": { "type": "string" },
        "globalIdField": { "type": "string" },
        "fields": {
          "type": "array",
          "items": { "$ref": "#/$defs/Field" }
        },
        "extent": { "$ref": "#/$defs/Envelope" },
        "spatialReference": { "$ref": "#/$defs/SpatialReference" }
      }
    },
    "Field": {
      "type": "object",
      "description": "Field definition for a feature layer",
      "properties": {
        "name": { "type": "string" },
        "type": {
          "type": "string",
          "enum": [
            "esriFieldTypeSmallInteger",
            "esriFieldTypeInteger",
            "esriFieldTypeSingle",
            "esriFieldTypeDouble",
            "esriFieldTypeString",
            "esriFieldTypeDate",
            "esriFieldTypeOID",
            "esriFieldTypeGeometry",
            "esriFieldTypeBlob",
            "esriFieldTypeRaster",
            "esriFieldTypeGUID",
            "esriFieldTypeGlobalID"
          ]
        },
        "alias": { "type": "string" },
        "length": { "type": "integer" },
        "nullable": { "type": "boolean" },
        "editable": { "type": "boolean" },
        "domain": {
          "type": ["object", "null"]
        }
      },
      "required": ["name", "type"]
    },
    "Envelope": {
      "type": "object",
      "description": "Bounding box (envelope) for a geographic extent",
      "properties": {
        "xmin": { "type": "number" },
        "ymin": { "type": "number" },
        "xmax": { "type": "number" },
        "ymax": { "type": "number" },
        "spatialReference": { "$ref": "#/$defs/SpatialReference" }
      },
      "required": ["xmin", "ymin", "xmax", "ymax"]
    }
  }
}