---
name: Perform Touch ID
short_description: Simulate a [touch id](https://support.apple.com/en-ca/ht201371) event (iOS Simulator only)
description:
  |
    To enable this feature, the `allowTouchIdEnroll` desired capability must be set to true and the Simulator
    must be [enrolled](https://support.apple.com/en-ca/ht201371). 

    When you set `allowTouchIdEnroll` to true, it will set the Simulator to be enrolled by default. 
    The enrollment state can be [toggled](/docs/en/commands/device/simulator/toggle-touch-id-enrollment.md)

    This call will only work if Appium process or its parent application (e.g. Terminal.app or Appium.app) has access to Mac OS accessibility in System Preferences > Security & Privacy > Privacy > Accessibility list


example_usage:
  java:
    |
      driver.performTouchID(false); // Simulates a failed touch
      driver.performTouchID(true); // Simulates a passing touch
  python:
    |
      self.driver.touch_id(false); # Simulates a failed touch
      self.driver.touch_id(true); # Simulates a passing touch
  javascript_wd:
    |
      await driver.touchId(false); // Simulates a failed touch
      await driver.touchId(true); // Simulates a failed touch
  javascript_wdio:
    |
      driver.touchId(false); // Simulates a failed touch
      driver.touchId(true); // Simulates a passing touch
  ruby:
    |
      @driver.touch_id(false) # Simulates a failed touch
      @driver.touch_id(true) # Simulates a passing touch
  php:
    |
      // TODO PHP sample
  csharp:
    |
      // TODO C# sample

client_docs:
  java: "http://appium.github.io/java-client/io/appium/java_client/ios/PerformsTouchID.html#performTouchID-boolean-"
  python: "https://github.com/appium/python-client/blob/master/appium/webdriver/webdriver.py#L661"
  javascript_wdio: "http://webdriver.io/api/mobile/touchId.html"
  javascript_wd: "https://github.com/admc/wd/blob/master/lib/commands.js#L3133"
  ruby: "http://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Ios/Device#touch_id-instance_method"
  php: "https://github.com/appium/php-client/" # TODO PHP documentation link
  csharp: "https://github.com/appium/appium-dotnet-driver/" # TODO Dotnet documentation link

# Driver support by platform
driver_support:
  ios:
    xcuitest: true
    uiautomation: false
  android:
    uiautomator2: false
    uiautomator: false
  mac:
    mac: false
  windows:
    windows: false
client_support:
  java: true
  python: true
  ruby: true
  php: true
  csharp: true
  javascript_wd: true
  javascript_wdio: true
  

# Information about the HTTP endpoints
endpoint:
  url: /session/:session_id/appium/simulator/touch_id
  method: 'POST'
  url_parameters:
    - name: session_id
      description: ID of the session to route the command to
  json_parameters:
    - name: match
      type: boolean
      description: Are we simulating a successful touch (true) or a failed touch (false)

# Links to specifications. Should link to at least one specification
specifications: 
  jsonwp: https://github.com/appium/appium-base-driver/blob/master/lib/mjsonwp/routes.js#L424

links:
  - name: Appium Docs
    url: https://github.com/appium/appium-xcuitest-driver/blob/master/docs/touch-id.md