:doc:`ManagedintegrationsforIoTDeviceManagement <../../iot-managed-integrations>` / Client / start_device_discovery

**********************
start_device_discovery
**********************



.. py:method:: ManagedintegrationsforIoTDeviceManagement.Client.start_device_discovery(**kwargs)

  

  This API is used to start device discovery for hub-connected and third-party-connected devices. The authentication material (install code) is delivered as a message to the controller instructing it to start the discovery.

  

  See also: `AWS API Documentation <https://docs.aws.amazon.com/goto/WebAPI/iot-managed-integrations-2025-03-03/StartDeviceDiscovery>`_  


  **Request Syntax**
  ::

    response = client.start_device_discovery(
        DiscoveryType='ZWAVE'|'ZIGBEE'|'CLOUD'|'CUSTOM'|'CONTROLLER_CAPABILITY_REDISCOVERY',
        CustomProtocolDetail={
            'string': 'string'
        },
        ControllerIdentifier='string',
        ConnectorAssociationIdentifier='string',
        AccountAssociationId='string',
        AuthenticationMaterial='string',
        AuthenticationMaterialType='ZWAVE_INSTALL_CODE',
        ClientToken='string',
        Tags={
            'string': 'string'
        },
        ConnectorDeviceIdList=[
            'string',
        ],
        Protocol='ZWAVE'|'ZIGBEE'|'CUSTOM',
        EndDeviceIdentifier='string'
    )
    
  :type DiscoveryType: string
  :param DiscoveryType: **[REQUIRED]** 

    The discovery type supporting the type of device to be discovered in the device discovery task request.

    

  
  :type CustomProtocolDetail: dict
  :param CustomProtocolDetail: 

    Additional protocol-specific details required for device discovery, which vary based on the discovery type.

     

    .. note::

      

      For a ``DiscoveryType`` of ``CUSTOM``, the string-to-string map must have a key value of ``Name`` set to a non-empty-string.

      

    

  
    - *(string) --* 

    
      - *(string) --* 

      


  :type ControllerIdentifier: string
  :param ControllerIdentifier: 

    The id of the end-user's IoT hub.

    

  
  :type ConnectorAssociationIdentifier: string
  :param ConnectorAssociationIdentifier: 

    The id of the connector association.

    

  
  :type AccountAssociationId: string
  :param AccountAssociationId: 

    The identifier of the cloud-to-cloud account association to use for discovery of third-party devices.

    

  
  :type AuthenticationMaterial: string
  :param AuthenticationMaterial: 

    The authentication material required to start the local device discovery job request.

    

  
  :type AuthenticationMaterialType: string
  :param AuthenticationMaterialType: 

    The type of authentication material used for device discovery jobs.

    

  
  :type ClientToken: string
  :param ClientToken: 

    An idempotency token. If you retry a request that completed successfully initially using the same client token and parameters, then the retry attempt will succeed without performing any further actions.

    

  
  :type Tags: dict
  :param Tags: 

    A set of key/value pairs that are used to manage the device discovery request.

    

  
    - *(string) --* 

    
      - *(string) --* 

      


  :type ConnectorDeviceIdList: list
  :param ConnectorDeviceIdList: 

    Used as a filter for PLA discoveries.

    

  
    - *(string) --* 

    

  :type Protocol: string
  :param Protocol: 

    The protocol type for capability rediscovery (ZWAVE, ZIGBEE, or CUSTOM).

     

    .. note::

      

      This parameter is only available when the discovery type is CONTROLLER_CAPABILITY_REDISCOVERY.

      

    

  
  :type EndDeviceIdentifier: string
  :param EndDeviceIdentifier: 

    The unique id of the end device for capability rediscovery.

     

    .. note::

      

      This parameter is only available when the discovery type is CONTROLLER_CAPABILITY_REDISCOVERY.

      

    

  
  
  :rtype: dict
  :returns: 
    
    **Response Syntax**

    
    ::

      {
          'Id': 'string',
          'StartedAt': datetime(2015, 1, 1)
      }
      
    **Response Structure**

    

    - *(dict) --* 
      

      - **Id** *(string) --* 

        The id of the device discovery job request.

        
      

      - **StartedAt** *(datetime) --* 

        The timestamp value for the start time of the device discovery.

        
  
  **Exceptions**
  
  *   :py:class:`ManagedintegrationsforIoTDeviceManagement.Client.exceptions.AccessDeniedException`

  
  *   :py:class:`ManagedintegrationsforIoTDeviceManagement.Client.exceptions.ValidationException`

  
  *   :py:class:`ManagedintegrationsforIoTDeviceManagement.Client.exceptions.InternalServerException`

  
  *   :py:class:`ManagedintegrationsforIoTDeviceManagement.Client.exceptions.UnauthorizedException`

  
  *   :py:class:`ManagedintegrationsforIoTDeviceManagement.Client.exceptions.ConflictException`

  
  *   :py:class:`ManagedintegrationsforIoTDeviceManagement.Client.exceptions.ServiceUnavailableException`

  
  *   :py:class:`ManagedintegrationsforIoTDeviceManagement.Client.exceptions.ResourceNotFoundException`

  
  *   :py:class:`ManagedintegrationsforIoTDeviceManagement.Client.exceptions.ThrottlingException`

  