Skip to content

send_connector_event

send_connector_event(
    connector_id: ConnectorId,
    operation: ConnectorEventOperation,
    *,
    config_overrides: Optional[IoTManagedIntegrationsClientConfig] = None,
    user_id: Optional[ThirdPartyUserId] = None,
    operation_version: Optional[ConnectorEventOperationVersion] = None,
    status_code: Optional[ConnectorEventStatusCode] = None,
    message: Optional[ConnectorEventMessage] = None,
    device_discovery_id: Optional[DeviceDiscoveryId] = None,
    connector_device_id: Optional[ConnectorDeviceId] = None,
    trace_id: Optional[TraceId] = None,
    devices: Optional[Devices] = None,
    matter_endpoint: Optional[MatterEndpoint] = None,
) -> SendConnectorEventResponse

Relays third-party device events for a connector such as a new device or a device state change event.

Parameters:

  • connector_id (ConnectorId) –

    The id of the connector between the third-party cloud provider and IoT managed integrations.

  • user_id (Optional[ThirdPartyUserId], default: None ) –

    The id of the third-party cloud provider.

  • operation (ConnectorEventOperation) –

    The Open Connectivity Foundation (OCF) operation requested to be performed on the managed thing.

    The field op can have a value of "I" or "U". The field "cn" will contain the capability types.

  • operation_version (Optional[ConnectorEventOperationVersion], default: None ) –

    The Open Connectivity Foundation (OCF) security specification version for the operation being requested on the managed thing. For more information, see OCF Security Specification.

  • status_code (Optional[ConnectorEventStatusCode], default: None ) –

    The status code of the Open Connectivity Foundation (OCF) operation being performed on the managed thing.

  • message (Optional[ConnectorEventMessage], default: None ) –

    The device state change event payload.

    This parameter will include the following three fields:

    • uri: schema auc://<PARTNER-DEVICE-ID>/ResourcePath (The Resourcepath corresponds to an OCF resource.)

    • op: For device state changes, this field must populate as n+d.

    • cn: The content depends on the OCF resource referenced in ResourcePath.

  • device_discovery_id (Optional[DeviceDiscoveryId], default: None ) –

    The id for the device discovery job.

  • connector_device_id (Optional[ConnectorDeviceId], default: None ) –

    The third-party device id as defined by the connector. This device id must not contain personal identifiable information (PII).

    This parameter is used for cloud-to-cloud devices only.

  • trace_id (Optional[TraceId], default: None ) –

    The trace request identifier. This is generated by IoT managed integrations and can be used to trace this command and its related operations in CloudWatch.

  • devices (Optional[Devices], default: None ) –

    The list of devices.

  • matter_endpoint (Optional[MatterEndpoint], default: None ) –

    The device endpoint.

Raises:

Examples:

SendConnectorEvent happy path for device discovery

>>> client.send_connector_event(connector_id='MockConnectorId', user_id='MockThirdPartyUserId', operation='DEVICE_DISCOVERY', operation_version='1.0', status_code=200, message='Sample ConnectorEventMessage', device_discovery_id='358275hbk3qr', devices=[{'ConnectorDeviceId': 'Mock-Connector-DeviceId-1', 'ConnectorDeviceName': 'Sample-User-device-1', 'CapabilityReport': {'version': '1.0.0', 'nodeId': '1', 'endpoints': [{'id': 'EP1', 'deviceTypes': ['Refrigerator'], 'clusters': [{'id': '0x0201', 'revision': 1, 'attributes': [{'id': '0x0000', 'value': 'exampleString'}, {'id': '0x0001'}, {'id': '0x0002'}], 'commands': ['0x00', '0x01'], 'events': []}]}]}}])
SendConnectorEvent happy path for device command response
>>> client.send_connector_event(connector_id='MockConnectorId', user_id='MockThirdPartyUserId', operation='DEVICE_COMMAND_RESPONSE', operation_version='1.0', status_code=200, message='Sample ConnectorEventMessage', trace_id='9b75f3839b6140f=_1', matter_endpoint={'id': '1', 'clusters': [{'id': '0x1003', 'attributes': {'0x0000': [73], '0x15570003': 'exampleString'}, 'commands': {'0x03': {}}}]})
SendConnectorEvent happy path for device event
>>> client.send_connector_event(connector_id='MockConnectorId', user_id='MockThirdPartyUserId', operation='DEVICE_EVENT', operation_version='1.0', status_code=200, message='Sample ConnectorEventMessage', trace_id='TraceId-Sample', matter_endpoint={'id': '1', 'clusters': [{'id': '0x1003', 'attributes': {'0x0000': 73}}]})
Source code in docs_src/capo_iot_managed_integrations/_services/io_t_managed_integrations.py
def send_connector_event(
    self,
    connector_id: "capo_iot_managed_integrations.types.connector_id.ConnectorId",
    operation: "capo_iot_managed_integrations.types.connector_event_operation.ConnectorEventOperation",
    *,
    config_overrides: Optional[IoTManagedIntegrationsClientConfig] = None,
    user_id: Optional[
        "capo_iot_managed_integrations.types.third_party_user_id.ThirdPartyUserId"
    ] = None,
    operation_version: Optional[
        "capo_iot_managed_integrations.types.connector_event_operation_version.ConnectorEventOperationVersion"
    ] = None,
    status_code: Optional[
        "capo_iot_managed_integrations.types.connector_event_status_code.ConnectorEventStatusCode"
    ] = None,
    message: Optional[
        "capo_iot_managed_integrations.types.connector_event_message.ConnectorEventMessage"
    ] = None,
    device_discovery_id: Optional[
        "capo_iot_managed_integrations.types.device_discovery_id.DeviceDiscoveryId"
    ] = None,
    connector_device_id: Optional[
        "capo_iot_managed_integrations.types.connector_device_id.ConnectorDeviceId"
    ] = None,
    trace_id: Optional[
        "capo_iot_managed_integrations.types.trace_id.TraceId"
    ] = None,
    devices: Optional["capo_iot_managed_integrations.types.devices.Devices"] = None,
    matter_endpoint: Optional[
        "capo_iot_managed_integrations.types.matter_endpoint.MatterEndpoint"
    ] = None,
) -> "capo_iot_managed_integrations.types.send_connector_event_response.SendConnectorEventResponse":
    """<p>Relays third-party device events for a connector such as a new device or a device state change event.</p>

    Args:
        connector_id: <p>The id of the connector between the third-party cloud provider and IoT managed integrations.</p>
        user_id: <p>The id of the third-party cloud provider.</p>
        operation: <p>The Open Connectivity Foundation (OCF) operation requested to be performed on the managed thing.</p> <note> <p>The field op can have a value of "I" or "U". The field "cn" will contain the capability types.</p> </note>
        operation_version: <p>The Open Connectivity Foundation (OCF) security specification version for the operation being requested on the managed thing. For more information, see <a href="https://openconnectivity.org/specs/OCF_Security_Specification_v1.0.0.pdf">OCF Security Specification</a>.</p>
        status_code: <p>The status code of the Open Connectivity Foundation (OCF) operation being performed on the managed thing.</p>
        message: <p>The device state change event payload.</p> <p>This parameter will include the following three fields:</p> <ul> <li> <p> <code>uri</code>: <code>schema auc://&lt;PARTNER-DEVICE-ID&gt;/ResourcePath</code> (The <code>Resourcepath</code> corresponds to an OCF resource.)</p> </li> <li> <p> <code>op</code>: For device state changes, this field must populate as <code>n+d</code>.</p> </li> <li> <p> <code>cn</code>: The content depends on the OCF resource referenced in <code>ResourcePath</code>.</p> </li> </ul>
        device_discovery_id: <p>The id for the device discovery job.</p>
        connector_device_id: <p>The third-party device id as defined by the connector. This device id must not contain personal identifiable information (PII).</p> <note> <p>This parameter is used for cloud-to-cloud devices only.</p> </note>
        trace_id: <p>The trace request identifier. This is generated by IoT managed integrations and can be used to trace this command and its related operations in CloudWatch.</p>
        devices: <p>The list of devices.</p>
        matter_endpoint: <p>The device endpoint.</p>

    Raises:
        capo_iot_managed_integrations.errors.access_denied_exception.AccessDeniedException: <p>User is not authorized.</p>
        capo_iot_managed_integrations.errors.internal_server_exception.InternalServerException: <p>Internal error from the service that indicates an unexpected error or that the service is unavailable.</p>
        capo_iot_managed_integrations.errors.resource_not_found_exception.ResourceNotFoundException: <p>The specified resource does not exist.</p>
        capo_iot_managed_integrations.errors.service_unavailable_exception.ServiceUnavailableException: <p>The service is temporarily unavailable.</p>
        capo_iot_managed_integrations.errors.throttling_exception.ThrottlingException: <p>The rate exceeds the limit.</p>
        capo_iot_managed_integrations.errors.validation_exception.ValidationException: <p>A validation error occurred when performing the API request.</p>
        capo_iot_managed_integrations.errors.UnknownServiceError: The service returned an error code this client does not model.

    Examples:
        SendConnectorEvent happy path for device discovery

        >>> client.send_connector_event(connector_id='MockConnectorId', user_id='MockThirdPartyUserId', operation='DEVICE_DISCOVERY', operation_version='1.0', status_code=200, message='Sample ConnectorEventMessage', device_discovery_id='358275hbk3qr', devices=[{'ConnectorDeviceId': 'Mock-Connector-DeviceId-1', 'ConnectorDeviceName': 'Sample-User-device-1', 'CapabilityReport': {'version': '1.0.0', 'nodeId': '1', 'endpoints': [{'id': 'EP1', 'deviceTypes': ['Refrigerator'], 'clusters': [{'id': '0x0201', 'revision': 1, 'attributes': [{'id': '0x0000', 'value': 'exampleString'}, {'id': '0x0001'}, {'id': '0x0002'}], 'commands': ['0x00', '0x01'], 'events': []}]}]}}])
        SendConnectorEvent happy path for device command response

        >>> client.send_connector_event(connector_id='MockConnectorId', user_id='MockThirdPartyUserId', operation='DEVICE_COMMAND_RESPONSE', operation_version='1.0', status_code=200, message='Sample ConnectorEventMessage', trace_id='9b75f3839b6140f=_1', matter_endpoint={'id': '1', 'clusters': [{'id': '0x1003', 'attributes': {'0x0000': [73], '0x15570003': 'exampleString'}, 'commands': {'0x03': {}}}]})
        SendConnectorEvent happy path for device event

        >>> client.send_connector_event(connector_id='MockConnectorId', user_id='MockThirdPartyUserId', operation='DEVICE_EVENT', operation_version='1.0', status_code=200, message='Sample ConnectorEventMessage', trace_id='TraceId-Sample', matter_endpoint={'id': '1', 'clusters': [{'id': '0x1003', 'attributes': {'0x0000': 73}}]})
    """

    def _handler(
        req: "OperationRequest[capo_iot_managed_integrations.types.send_connector_event_request.SendConnectorEventRequest]",
    ) -> OperationResponse[
        "capo_iot_managed_integrations.types.send_connector_event_response.SendConnectorEventResponse"
    ]:
        import capo_iot_managed_integrations._operations.iot_managed_integrations.send_connector_event

        output, http_response = (
            capo_iot_managed_integrations._operations.iot_managed_integrations.send_connector_event.send_connector_event(
                req.options, req.input
            )
        )
        return OperationResponse(output=output, response=http_response)

    def _redact_input(
        input_: "capo_iot_managed_integrations.types.send_connector_event_request.SendConnectorEventRequest",
    ) -> dict[str, Any]:
        import capo_iot_managed_integrations.types.send_connector_event_request

        return capo_iot_managed_integrations.types.send_connector_event_request.redact_sensitive(
            input_
        )

    interceptors_, options_ = self.operation_options(
        config_overrides,
        OperationLogging("SendConnectorEvent", redact_input=_redact_input),
    )
    input_: capo_iot_managed_integrations.types.send_connector_event_request.SendConnectorEventRequest = {
        "connector_id": connector_id,
        "operation": operation,
    }
    if user_id is not None:
        input_["user_id"] = user_id
    if operation_version is not None:
        input_["operation_version"] = operation_version
    if status_code is not None:
        input_["status_code"] = status_code
    if message is not None:
        input_["message"] = message
    if device_discovery_id is not None:
        input_["device_discovery_id"] = device_discovery_id
    if connector_device_id is not None:
        input_["connector_device_id"] = connector_device_id
    if trace_id is not None:
        input_["trace_id"] = trace_id
    if devices is not None:
        input_["devices"] = devices
    if matter_endpoint is not None:
        input_["matter_endpoint"] = matter_endpoint

    response = execute_pipeline(
        OperationRequest(input=input_, options=options_),
        handler=_handler,
        interceptors=list(interceptors_),
    )
    response.response.close()
    return response.output