# operation: sketching.capture-geometry
Description: Allows the user to create geometry by sketching on a map. Returns the geometry that was drawn, along with the map that it was drawn on.

**Example:** Get the geometry of a polygon drawn on the map with the snapping plugin disabled.

_Notes:_ If a plugin is enabled globally, setting it as disabled will override and disable the plugin when executing this operation (Web only).

```
{
     "geometryType": "polygon"
     "pluginSettings": {
         "snapping": false
     }
}
```

Inputs: `CaptureGeometryArgs`

CaptureGeometryArgs properties:
```json
{
  "disableFreehand": {
    "description": "Disables freehand sketching during the draw session. Web only.",
    "type": "boolean"
  },
  "editorSettings": {
    "description": "The settings to be applied to the sketch. Mobile only."
  },
  "geometryType": {
    "anyOf": [
      {
        "items": {
          "$ref": "#/definitions/SketchTool"
        },
        "type": "array"
      },
      {
        "enum": [
          "circle",
          "extent",
          "line",
          "multipoint",
          "point",
          "polygon",
          "polyline",
          "square"
        ],
        "type": "string"
      }
    ],
    "description": "The geometry/shape to use for sketching. * Multiple sketch tools are only supported by VertiGIS Studio Web. When multiple sketch tools are provided, the sketch will begin with the first one in the list. If \"point\" is the first of multiple options in the list, click actions will create points while click-and-drag actions will automatically begin the freehand variation of the next included geometry type. The types \"point\", \"line\" and \"square\" are supported only in Web.",
    "isRequired": "true"
  },
  "maps": {
    "description": "The maps to activate drawing on. By default it will be all maps."
  },
  "maxSegments": {
    "description": "The maximum number of segments permitted for a polyline or polygon sketch. Default is no limit. Mobile only.",
    "type": "number"
  },
  "pluginSettings": {
    "description": "Additional settings that are specific to sketching plugins, keyed by plugin ID. The only currently supported plugin is \"snapping\". A boolean value can also be assigned to completely disable, or enable with default settings. Web only."
  },
  "symbol": {
    "anyOf": [
      {
        "$ref": "#/definitions/esri.rest-api.SymbolJson.CIMSymbolJson"
      },
      {
        "$ref": "#/definitions/esri.rest-api.SymbolJson.CIMSymbolReferenceJson"
      },
      {
        "$ref": "#/definitions/esri.rest-api.SymbolJson.PictureFillSymbolJson"
      },
      {
        "$ref": "#/definitions/esri.rest-api.SymbolJson.PictureMarkerSymbolJson"
      },
      {
        "$ref": "#/definitions/esri.rest-api.SymbolJson.SimpleFillSymbolJson"
      },
      {
        "$ref": "#/definitions/esri.rest-api.SymbolJson.SimpleLineSymbolJson"
      },
      {
        "$ref": "#/definitions/esri.rest-api.SymbolJson.SimpleMarkerSymbolJson"
      },
      {
        "$ref": "#/definitions/esri.rest-api.SymbolJson.TextSymbolJson"
      },
      {
        "$ref": "#/definitions/esri.rest-api.SymbolJson.LabelSymbol3DJson"
      },
      {
        "$ref": "#/definitions/esri.rest-api.SymbolJson.LineSymbol3DJson"
      },
      {
        "$ref": "#/definitions/esri.rest-api.SymbolJson.MeshSymbol3DJson"
      },
      {
        "$ref": "#/definitions/esri.rest-api.SymbolJson.PointSymbol3DJson"
      },
      {
        "$ref": "#/definitions/esri.rest-api.SymbolJson.PolygonSymbol3DJson"
      },
      {
        "$ref": "#/definitions/esri.rest-api.SymbolJson.StyleSymbolReferenceJson"
      },
      {
        "$ref": "SymbolSet"
      }
    ],
    "description": "An optional symbol to use. SymbolSets are not supported by VertiGIS Studio Mobile."
  }
}
```

Outputs: `CaptureGeometryResult`

---
# operation: sketching.edit-active-symbol
Description: Allows the user to edit the symbology used by the graphics actively being edited. Web only.

Inputs: `None`

Outputs: `EditSymbolResult`

---
# operation: sketching.edit-geometry
Description: Allows the user to edit an existing geometry by drawing on a map. Returns the geometry that was edited, or the supplied feature with the altered geometry applied, along with the map that it was drawn on.

Inputs: `EditGeometryArgs`

EditGeometryArgs properties:
```json
{
  "features": {
    "description": "The features containing geometries to edit. The features will pass through and be assigned the altered geometries. Not supported in Mobile."
  },
  "geometry": {
    "description": "The geometries to edit."
  },
  "graphics": {
    "description": "The graphics containing geometries to edit. The graphics will pass through and be assigned the altered geometries. Not supported in Mobile."
  },
  "isMeasurement": {
    "description": "Flag all inputs as measured geometries. Geometry operations will show measurements for in progress operations. Not supported in Mobile.",
    "type": "boolean"
  },
  "maps": {
    "description": "The maps to activate editing on. By default it will be all maps."
  },
  "options": {
    "description": "The options for this edit operation. Not supported in Mobile. Web only."
  },
  "pluginSettings": {
    "description": "Web only. Additional settings that are specific to sketching plugins, keyed by plugin ID. The only currently supported plugin is \"snapping\". A boolean value can also be assigned to completely disable, or enable with default settings."
  },
  "symbol": {
    "anyOf": [
      {
        "$ref": "#/definitions/@arcgis.core.symbols.PictureFillSymbol.PictureFillSymbol"
      },
      {
        "$ref": "#/definitions/@arcgis.core.symbols.PictureMarkerSymbol.PictureMarkerSymbol"
      },
      {
        "$ref": "#/definitions/@arcgis.core.symbols.SimpleFillSymbol.SimpleFillSymbol"
      },
      {
        "$ref": "#/definitions/@arcgis.core.symbols.SimpleLineSymbol.SimpleLineSymbol"
      },
      {
        "$ref": "#/definitions/@arcgis.core.symbols.SimpleMarkerSymbol.SimpleMarkerSymbol"
      },
      {
        "$ref": "#/definitions/@arcgis.core.symbols.TextSymbol.TextSymbol"
      },
      {
        "$ref": "Symbol"
      }
    ],
    "description": "An optional symbol to use while editing."
  }
}
```

Outputs: `EditGeometryResult`

---
# operation: sketching.get-active-points
Description: Returns the active point graphics of the active sketch or edit session on a map. Web only.

Inputs: `Maps`

Maps properties:
```json
{
  "maps": {
    "description": "Map(s) to use for the command/operation."
  }
}
```

Outputs: `GetActivePointsResult`

---
# operation: sketching.get-active-sketch
Description: Returns the active sketch graphic from a map. Web only.

Inputs: `None`

Outputs: `GetActiveSketchResult`

---
# operation: sketching.get-adjacent-point
Description: Return the adjacent point graphic(s), relative to a given vertex that's a part of an active editing or sketching session. This operation is only supported for Polyline and Polygon geometries. Web only.

Inputs: `GetAdjacentPointArgs`

GetAdjacentPointArgs properties:
```json
{
  "maps": {
    "description": "Map(s) to use for the command/operation."
  },
  "referencePoint": {
    "description": "A point geometry that represents a vertex within an active editing graphic.",
    "isRequired": "true"
  },
  "relativeOffset": {
    "description": "Specifies if the desired point comes before or after the referencePoint. Defaults to 'after'."
  }
}
```

Outputs: `GetActiveSketchResult`

---
# operation: sketching.move-geometry
Description: Allows the user to move an existing geometry by a specified amount. Returns the altered geometry or the supplied feature with altered geometry applied. Will also pass through any map or symbol associated with the command chain, but only the map is required for this operation. Web only.

Inputs: `MoveGeometryArgs`

MoveGeometryArgs properties:
```json
{
  "distance": {
    "description": "An amount to move the geometry on the X and Y axes.",
    "isRequired": "true"
  },
  "features": {
    "description": "The features containing geometries to edit. The features will pass through and be assigned the altered geometries. Not supported in Mobile."
  },
  "geometry": {
    "description": "The geometries to edit."
  },
  "graphics": {
    "description": "The graphics containing geometries to edit. The graphics will pass through and be assigned the altered geometries. Not supported in Mobile."
  },
  "isMeasurement": {
    "description": "Flag all inputs as measured geometries. Geometry operations will show measurements for in progress operations. Not supported in Mobile.",
    "type": "boolean"
  },
  "maps": {
    "description": "The maps to activate editing on. By default it will be all maps."
  },
  "symbol": {
    "anyOf": [
      {
        "$ref": "#/definitions/@arcgis.core.symbols.PictureFillSymbol.PictureFillSymbol"
      },
      {
        "$ref": "#/definitions/@arcgis.core.symbols.PictureMarkerSymbol.PictureMarkerSymbol"
      },
      {
        "$ref": "#/definitions/@arcgis.core.symbols.SimpleFillSymbol.SimpleFillSymbol"
      },
      {
        "$ref": "#/definitions/@arcgis.core.symbols.SimpleLineSymbol.SimpleLineSymbol"
      },
      {
        "$ref": "#/definitions/@arcgis.core.symbols.SimpleMarkerSymbol.SimpleMarkerSymbol"
      },
      {
        "$ref": "#/definitions/@arcgis.core.symbols.TextSymbol.TextSymbol"
      },
      {
        "$ref": "Symbol"
      }
    ],
    "description": "An optional symbol to use while editing."
  },
  "units": {
    "description": "The units of the above distance. Optional, will default to the units used by the measurement service associated with the map."
  }
}
```

Outputs: `GeometryOperationBase`

---
# operation: sketching.rotate-geometry
Description: Allows the user to rotate an existing geometry. Returns the altered geometry or the supplied feature with altered geometry applied. Will also pass through any map or symbol associated with the command chain, but they are not required for this operation. Web only.

Inputs: `RotateGeometryArgs`

RotateGeometryArgs properties:
```json
{
  "degrees": {
    "description": "The number of degrees to rotate the geometry.",
    "type": "number",
    "isRequired": "true"
  },
  "features": {
    "description": "The features containing geometries to edit. The features will pass through and be assigned the altered geometries. Not supported in Mobile."
  },
  "geometry": {
    "description": "The geometries to edit."
  },
  "graphics": {
    "description": "The graphics containing geometries to edit. The graphics will pass through and be assigned the altered geometries. Not supported in Mobile."
  },
  "isMeasurement": {
    "description": "Flag all inputs as measured geometries. Geometry operations will show measurements for in progress operations. Not supported in Mobile.",
    "type": "boolean"
  },
  "maps": {
    "description": "The maps to activate editing on. By default it will be all maps."
  },
  "origin": {
    "description": "The origin around which to rotate the geometry. Defaults to the centroid."
  },
  "symbol": {
    "anyOf": [
      {
        "$ref": "#/definitions/@arcgis.core.symbols.PictureFillSymbol.PictureFillSymbol"
      },
      {
        "$ref": "#/definitions/@arcgis.core.symbols.PictureMarkerSymbol.PictureMarkerSymbol"
      },
      {
        "$ref": "#/definitions/@arcgis.core.symbols.SimpleFillSymbol.SimpleFillSymbol"
      },
      {
        "$ref": "#/definitions/@arcgis.core.symbols.SimpleLineSymbol.SimpleLineSymbol"
      },
      {
        "$ref": "#/definitions/@arcgis.core.symbols.SimpleMarkerSymbol.SimpleMarkerSymbol"
      },
      {
        "$ref": "#/definitions/@arcgis.core.symbols.TextSymbol.TextSymbol"
      },
      {
        "$ref": "Symbol"
      }
    ],
    "description": "An optional symbol to use while editing."
  }
}
```

Outputs: `GeometryOperationBase`

---
# operation: sketching.scale-geometry
Description: Allows the user to scale and mirror an existing geometry on either axis. Returns the altered geometry or the supplied feature with altered geometry applied. Will also pass through any map or symbol associated with the command chain, but they are not required for this operation. Web only.

Inputs: `ScaleGeometryArgs`

ScaleGeometryArgs properties:
```json
{
  "features": {
    "description": "The features containing geometries to edit. The features will pass through and be assigned the altered geometries. Not supported in Mobile."
  },
  "geometry": {
    "description": "The geometries to edit."
  },
  "graphics": {
    "description": "The graphics containing geometries to edit. The graphics will pass through and be assigned the altered geometries. Not supported in Mobile."
  },
  "isMeasurement": {
    "description": "Flag all inputs as measured geometries. Geometry operations will show measurements for in progress operations. Not supported in Mobile.",
    "type": "boolean"
  },
  "maps": {
    "description": "The maps to activate editing on. By default it will be all maps."
  },
  "scale": {
    "anyOf": [
      {
        "$ref": "#/definitions/Vector2D"
      },
      {
        "type": "number"
      }
    ],
    "description": "The amount to scale the geometry, specified either uniformly or independently on the x and y axis. Point geometries will not be modified by this operation.",
    "isRequired": "true"
  },
  "symbol": {
    "anyOf": [
      {
        "$ref": "#/definitions/@arcgis.core.symbols.PictureFillSymbol.PictureFillSymbol"
      },
      {
        "$ref": "#/definitions/@arcgis.core.symbols.PictureMarkerSymbol.PictureMarkerSymbol"
      },
      {
        "$ref": "#/definitions/@arcgis.core.symbols.SimpleFillSymbol.SimpleFillSymbol"
      },
      {
        "$ref": "#/definitions/@arcgis.core.symbols.SimpleLineSymbol.SimpleLineSymbol"
      },
      {
        "$ref": "#/definitions/@arcgis.core.symbols.SimpleMarkerSymbol.SimpleMarkerSymbol"
      },
      {
        "$ref": "#/definitions/@arcgis.core.symbols.TextSymbol.TextSymbol"
      },
      {
        "$ref": "Symbol"
      }
    ],
    "description": "An optional symbol to use while editing."
  }
}
```

Outputs: `GeometryOperationBase`

---
# operation: sketching.stop
Description: Stops geometry capturing or editing on a given map. Returns the current geometry. If validateGeometry parameter is true and geometry is invalid, the operation will return null.

Inputs: `( StopGeometryEditArgs )`

StopGeometryEditArgs properties:
```json
{
  "maps": {
    "description": "The maps on which to stop editing geometry.",
    "isRequired": "true"
  },
  "validateGeometry": {
    "description": "Whether to validate the geometry before returning it. Defaults to true if not set.",
    "type": "boolean"
  }
}
```

Outputs: `CaptureGeometryResult`

---
