awsiot/iotidentity.py (204 lines of code) (raw):
# Copyright Amazon.com, Inc. or its affiliates. All rights reserved.
# SPDX-License-Identifier: Apache-2.0.
# This file is generated
import awsiot
import concurrent.futures
import typing
class IotIdentityClient(awsiot.MqttServiceClient):
"""
An AWS IoT service that assists with provisioning a device and installing unique client certificates on it
AWS Docs: https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html
"""
def publish_create_certificate_from_csr(self, request, qos):
# type: (CreateCertificateFromCsrRequest, int) -> concurrent.futures.Future
"""
Creates a certificate from a certificate signing request (CSR). AWS IoT provides client certificates that are signed by the Amazon Root certificate authority (CA). The new certificate has a PENDING_ACTIVATION status. When you call RegisterThing to provision a thing with this certificate, the certificate status changes to ACTIVE or INACTIVE as described in the template.
API Docs: https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#fleet-provision-api
Args:
request: `CreateCertificateFromCsrRequest` instance.
qos: The Quality of Service guarantee of this message
Returns:
A Future whose result will be None if the
request is successfully published. The Future's result will be an
exception if the request cannot be published.
"""
return self._publish_operation(
topic='$aws/certificates/create-from-csr/json',
qos=qos,
payload=request.to_payload())
def publish_create_keys_and_certificate(self, request, qos):
# type: (CreateKeysAndCertificateRequest, int) -> concurrent.futures.Future
"""
Creates new keys and a certificate. AWS IoT provides client certificates that are signed by the Amazon Root certificate authority (CA). The new certificate has a PENDING_ACTIVATION status. When you call RegisterThing to provision a thing with this certificate, the certificate status changes to ACTIVE or INACTIVE as described in the template.
API Docs: https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#fleet-provision-api
Args:
request: `CreateKeysAndCertificateRequest` instance.
qos: The Quality of Service guarantee of this message
Returns:
A Future whose result will be None if the
request is successfully published. The Future's result will be an
exception if the request cannot be published.
"""
return self._publish_operation(
topic='$aws/certificates/create/json',
qos=qos,
payload=None)
def publish_register_thing(self, request, qos):
# type: (RegisterThingRequest, int) -> concurrent.futures.Future
"""
Provisions an AWS IoT thing using a pre-defined template.
API Docs: https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#fleet-provision-api
Args:
request: `RegisterThingRequest` instance.
qos: The Quality of Service guarantee of this message
Returns:
A Future whose result will be None if the
request is successfully published. The Future's result will be an
exception if the request cannot be published.
"""
if not request.template_name:
raise ValueError("request.template_name is required")
return self._publish_operation(
topic='$aws/provisioning-templates/{0.template_name}/provision/json'.format(request),
qos=qos,
payload=request.to_payload())
def subscribe_to_create_certificate_from_csr_accepted(self, request, qos, callback):
# type: (CreateCertificateFromCsrSubscriptionRequest, int, typing.Callable[[CreateCertificateFromCsrResponse], None]) -> typing.Tuple[concurrent.futures.Future, str]
"""
Subscribes to the accepted topic of the CreateCertificateFromCsr operation.
API Docs: https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#fleet-provision-api
Args:
request: `CreateCertificateFromCsrSubscriptionRequest` instance.
qos: The Quality of Service guarantee of this message
callback: Callback to invoke each time the event is received.
The callback should take 1 argument of type `CreateCertificateFromCsrResponse`.
The callback is not expected to return anything.
Returns:
Tuple with two values. The first is a `Future` whose result will be the
`awscrt.mqtt.QoS` granted by the server, or an exception if the
subscription fails. The second value is a topic which may be passed
to `unsubscribe()` to stop receiving messages. Note that messages
may arrive before the subscription is acknowledged.
"""
if not callable(callback):
raise ValueError("callback is required")
return self._subscribe_operation(
topic='$aws/certificates/create-from-csr/json/accepted',
qos=qos,
callback=callback,
payload_to_class_fn=CreateCertificateFromCsrResponse.from_payload)
def subscribe_to_create_certificate_from_csr_rejected(self, request, qos, callback):
# type: (CreateCertificateFromCsrSubscriptionRequest, int, typing.Callable[[ErrorResponse], None]) -> typing.Tuple[concurrent.futures.Future, str]
"""
Subscribes to the rejected topic of the CreateCertificateFromCsr operation.
API Docs: https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#fleet-provision-api
Args:
request: `CreateCertificateFromCsrSubscriptionRequest` instance.
qos: The Quality of Service guarantee of this message
callback: Callback to invoke each time the event is received.
The callback should take 1 argument of type `ErrorResponse`.
The callback is not expected to return anything.
Returns:
Tuple with two values. The first is a `Future` whose result will be the
`awscrt.mqtt.QoS` granted by the server, or an exception if the
subscription fails. The second value is a topic which may be passed
to `unsubscribe()` to stop receiving messages. Note that messages
may arrive before the subscription is acknowledged.
"""
if not callable(callback):
raise ValueError("callback is required")
return self._subscribe_operation(
topic='$aws/certificates/create-from-csr/json/rejected',
qos=qos,
callback=callback,
payload_to_class_fn=ErrorResponse.from_payload)
def subscribe_to_create_keys_and_certificate_accepted(self, request, qos, callback):
# type: (CreateKeysAndCertificateSubscriptionRequest, int, typing.Callable[[CreateKeysAndCertificateResponse], None]) -> typing.Tuple[concurrent.futures.Future, str]
"""
Subscribes to the accepted topic of the CreateKeysAndCertificate operation.
API Docs: https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#fleet-provision-api
Args:
request: `CreateKeysAndCertificateSubscriptionRequest` instance.
qos: The Quality of Service guarantee of this message
callback: Callback to invoke each time the event is received.
The callback should take 1 argument of type `CreateKeysAndCertificateResponse`.
The callback is not expected to return anything.
Returns:
Tuple with two values. The first is a `Future` whose result will be the
`awscrt.mqtt.QoS` granted by the server, or an exception if the
subscription fails. The second value is a topic which may be passed
to `unsubscribe()` to stop receiving messages. Note that messages
may arrive before the subscription is acknowledged.
"""
if not callable(callback):
raise ValueError("callback is required")
return self._subscribe_operation(
topic='$aws/certificates/create/json/accepted',
qos=qos,
callback=callback,
payload_to_class_fn=CreateKeysAndCertificateResponse.from_payload)
def subscribe_to_create_keys_and_certificate_rejected(self, request, qos, callback):
# type: (CreateKeysAndCertificateSubscriptionRequest, int, typing.Callable[[ErrorResponse], None]) -> typing.Tuple[concurrent.futures.Future, str]
"""
Subscribes to the rejected topic of the CreateKeysAndCertificate operation.
API Docs: https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#fleet-provision-api
Args:
request: `CreateKeysAndCertificateSubscriptionRequest` instance.
qos: The Quality of Service guarantee of this message
callback: Callback to invoke each time the event is received.
The callback should take 1 argument of type `ErrorResponse`.
The callback is not expected to return anything.
Returns:
Tuple with two values. The first is a `Future` whose result will be the
`awscrt.mqtt.QoS` granted by the server, or an exception if the
subscription fails. The second value is a topic which may be passed
to `unsubscribe()` to stop receiving messages. Note that messages
may arrive before the subscription is acknowledged.
"""
if not callable(callback):
raise ValueError("callback is required")
return self._subscribe_operation(
topic='$aws/certificates/create/json/rejected',
qos=qos,
callback=callback,
payload_to_class_fn=ErrorResponse.from_payload)
def subscribe_to_register_thing_accepted(self, request, qos, callback):
# type: (RegisterThingSubscriptionRequest, int, typing.Callable[[RegisterThingResponse], None]) -> typing.Tuple[concurrent.futures.Future, str]
"""
Subscribes to the accepted topic of the RegisterThing operation.
API Docs: https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#fleet-provision-api
Args:
request: `RegisterThingSubscriptionRequest` instance.
qos: The Quality of Service guarantee of this message
callback: Callback to invoke each time the event is received.
The callback should take 1 argument of type `RegisterThingResponse`.
The callback is not expected to return anything.
Returns:
Tuple with two values. The first is a `Future` whose result will be the
`awscrt.mqtt.QoS` granted by the server, or an exception if the
subscription fails. The second value is a topic which may be passed
to `unsubscribe()` to stop receiving messages. Note that messages
may arrive before the subscription is acknowledged.
"""
if not request.template_name:
raise ValueError("request.template_name is required")
if not callable(callback):
raise ValueError("callback is required")
return self._subscribe_operation(
topic='$aws/provisioning-templates/{0.template_name}/provision/json/accepted'.format(request),
qos=qos,
callback=callback,
payload_to_class_fn=RegisterThingResponse.from_payload)
def subscribe_to_register_thing_rejected(self, request, qos, callback):
# type: (RegisterThingSubscriptionRequest, int, typing.Callable[[ErrorResponse], None]) -> typing.Tuple[concurrent.futures.Future, str]
"""
Subscribes to the rejected topic of the RegisterThing operation.
API Docs: https://docs.aws.amazon.com/iot/latest/developerguide/provision-wo-cert.html#fleet-provision-api
Args:
request: `RegisterThingSubscriptionRequest` instance.
qos: The Quality of Service guarantee of this message
callback: Callback to invoke each time the event is received.
The callback should take 1 argument of type `ErrorResponse`.
The callback is not expected to return anything.
Returns:
Tuple with two values. The first is a `Future` whose result will be the
`awscrt.mqtt.QoS` granted by the server, or an exception if the
subscription fails. The second value is a topic which may be passed
to `unsubscribe()` to stop receiving messages. Note that messages
may arrive before the subscription is acknowledged.
"""
if not request.template_name:
raise ValueError("request.template_name is required")
if not callable(callback):
raise ValueError("callback is required")
return self._subscribe_operation(
topic='$aws/provisioning-templates/{0.template_name}/provision/json/rejected'.format(request),
qos=qos,
callback=callback,
payload_to_class_fn=ErrorResponse.from_payload)
class CreateCertificateFromCsrRequest(awsiot.ModeledClass):
"""
Data needed to perform a CreateCertificateFromCsr operation.
All attributes are None by default, and may be set by keyword in the constructor.
Keyword Args:
certificate_signing_request (str): The CSR, in PEM format.
Attributes:
certificate_signing_request (str): The CSR, in PEM format.
"""
__slots__ = ['certificate_signing_request']
def __init__(self, *args, **kwargs):
self.certificate_signing_request = kwargs.get('certificate_signing_request')
# for backwards compatibility, read any arguments that used to be accepted by position
for key, val in zip(['certificate_signing_request'], args):
setattr(self, key, val)
def to_payload(self):
# type: () -> typing.Dict[str, typing.Any]
payload = {} # type: typing.Dict[str, typing.Any]
if self.certificate_signing_request is not None:
payload['certificateSigningRequest'] = self.certificate_signing_request
return payload
class CreateCertificateFromCsrResponse(awsiot.ModeledClass):
"""
Response payload to a CreateCertificateFromCsr request.
All attributes are None by default, and may be set by keyword in the constructor.
Keyword Args:
certificate_id (str): The ID of the certificate.
certificate_ownership_token (str): The token to prove ownership of the certificate during provisioning.
certificate_pem (str): The certificate data, in PEM format.
Attributes:
certificate_id (str): The ID of the certificate.
certificate_ownership_token (str): The token to prove ownership of the certificate during provisioning.
certificate_pem (str): The certificate data, in PEM format.
"""
__slots__ = ['certificate_id', 'certificate_ownership_token', 'certificate_pem']
def __init__(self, *args, **kwargs):
self.certificate_id = kwargs.get('certificate_id')
self.certificate_ownership_token = kwargs.get('certificate_ownership_token')
self.certificate_pem = kwargs.get('certificate_pem')
# for backwards compatibility, read any arguments that used to be accepted by position
for key, val in zip(['certificate_id', 'certificate_ownership_token', 'certificate_pem'], args):
setattr(self, key, val)
@classmethod
def from_payload(cls, payload):
# type: (typing.Dict[str, typing.Any]) -> CreateCertificateFromCsrResponse
new = cls()
val = payload.get('certificateId')
if val is not None:
new.certificate_id = val
val = payload.get('certificateOwnershipToken')
if val is not None:
new.certificate_ownership_token = val
val = payload.get('certificatePem')
if val is not None:
new.certificate_pem = val
return new
class CreateCertificateFromCsrSubscriptionRequest(awsiot.ModeledClass):
"""
Data needed to subscribe to the responses of the CreateCertificateFromCsr operation.
This class has no attributes.
"""
__slots__ = []
def __init__(self, *args, **kwargs):
# for backwards compatibility, read any arguments that used to be accepted by position
for key, val in zip([], args):
setattr(self, key, val)
class CreateKeysAndCertificateRequest(awsiot.ModeledClass):
"""
Data needed to perform a CreateKeysAndCertificate operation.
This class has no attributes.
"""
__slots__ = []
def __init__(self, *args, **kwargs):
# for backwards compatibility, read any arguments that used to be accepted by position
for key, val in zip([], args):
setattr(self, key, val)
class CreateKeysAndCertificateResponse(awsiot.ModeledClass):
"""
Response payload to a CreateKeysAndCertificate request.
All attributes are None by default, and may be set by keyword in the constructor.
Keyword Args:
certificate_id (str): The certificate id.
certificate_ownership_token (str): The token to prove ownership of the certificate during provisioning.
certificate_pem (str): The certificate data, in PEM format.
private_key (str): The private key.
Attributes:
certificate_id (str): The certificate id.
certificate_ownership_token (str): The token to prove ownership of the certificate during provisioning.
certificate_pem (str): The certificate data, in PEM format.
private_key (str): The private key.
"""
__slots__ = ['certificate_id', 'certificate_ownership_token', 'certificate_pem', 'private_key']
def __init__(self, *args, **kwargs):
self.certificate_id = kwargs.get('certificate_id')
self.certificate_ownership_token = kwargs.get('certificate_ownership_token')
self.certificate_pem = kwargs.get('certificate_pem')
self.private_key = kwargs.get('private_key')
# for backwards compatibility, read any arguments that used to be accepted by position
for key, val in zip(['certificate_id', 'certificate_ownership_token', 'certificate_pem', 'private_key'], args):
setattr(self, key, val)
@classmethod
def from_payload(cls, payload):
# type: (typing.Dict[str, typing.Any]) -> CreateKeysAndCertificateResponse
new = cls()
val = payload.get('certificateId')
if val is not None:
new.certificate_id = val
val = payload.get('certificateOwnershipToken')
if val is not None:
new.certificate_ownership_token = val
val = payload.get('certificatePem')
if val is not None:
new.certificate_pem = val
val = payload.get('privateKey')
if val is not None:
new.private_key = val
return new
class CreateKeysAndCertificateSubscriptionRequest(awsiot.ModeledClass):
"""
Data needed to subscribe to the responses of the CreateKeysAndCertificate operation.
This class has no attributes.
"""
__slots__ = []
def __init__(self, *args, **kwargs):
# for backwards compatibility, read any arguments that used to be accepted by position
for key, val in zip([], args):
setattr(self, key, val)
class ErrorResponse(awsiot.ModeledClass):
"""
Response document containing details about a failed request.
All attributes are None by default, and may be set by keyword in the constructor.
Keyword Args:
error_code (str): Response error code
error_message (str): Response error message
status_code (int): Response status code
Attributes:
error_code (str): Response error code
error_message (str): Response error message
status_code (int): Response status code
"""
__slots__ = ['error_code', 'error_message', 'status_code']
def __init__(self, *args, **kwargs):
self.error_code = kwargs.get('error_code')
self.error_message = kwargs.get('error_message')
self.status_code = kwargs.get('status_code')
# for backwards compatibility, read any arguments that used to be accepted by position
for key, val in zip(['error_code', 'error_message', 'status_code'], args):
setattr(self, key, val)
@classmethod
def from_payload(cls, payload):
# type: (typing.Dict[str, typing.Any]) -> ErrorResponse
new = cls()
val = payload.get('errorCode')
if val is not None:
new.error_code = val
val = payload.get('errorMessage')
if val is not None:
new.error_message = val
val = payload.get('statusCode')
if val is not None:
new.status_code = val
return new
class RegisterThingRequest(awsiot.ModeledClass):
"""
Data needed to perform a RegisterThing operation.
All attributes are None by default, and may be set by keyword in the constructor.
Keyword Args:
certificate_ownership_token (str): The token to prove ownership of the certificate. The token is generated by AWS IoT when you create a certificate over MQTT.
parameters (typing.Dict[str, str]): Optional. Key-value pairs from the device that are used by the pre-provisioning hooks to evaluate the registration request.
template_name (str): The provisioning template name.
Attributes:
certificate_ownership_token (str): The token to prove ownership of the certificate. The token is generated by AWS IoT when you create a certificate over MQTT.
parameters (typing.Dict[str, str]): Optional. Key-value pairs from the device that are used by the pre-provisioning hooks to evaluate the registration request.
template_name (str): The provisioning template name.
"""
__slots__ = ['certificate_ownership_token', 'parameters', 'template_name']
def __init__(self, *args, **kwargs):
self.certificate_ownership_token = kwargs.get('certificate_ownership_token')
self.parameters = kwargs.get('parameters')
self.template_name = kwargs.get('template_name')
# for backwards compatibility, read any arguments that used to be accepted by position
for key, val in zip(['certificate_ownership_token', 'parameters', 'template_name'], args):
setattr(self, key, val)
def to_payload(self):
# type: () -> typing.Dict[str, typing.Any]
payload = {} # type: typing.Dict[str, typing.Any]
if self.certificate_ownership_token is not None:
payload['certificateOwnershipToken'] = self.certificate_ownership_token
if self.parameters is not None:
payload['parameters'] = self.parameters
return payload
class RegisterThingResponse(awsiot.ModeledClass):
"""
Response payload to a RegisterThing request.
All attributes are None by default, and may be set by keyword in the constructor.
Keyword Args:
device_configuration (typing.Dict[str, str]): The device configuration defined in the template.
thing_name (str): The name of the IoT thing created during provisioning.
Attributes:
device_configuration (typing.Dict[str, str]): The device configuration defined in the template.
thing_name (str): The name of the IoT thing created during provisioning.
"""
__slots__ = ['device_configuration', 'thing_name']
def __init__(self, *args, **kwargs):
self.device_configuration = kwargs.get('device_configuration')
self.thing_name = kwargs.get('thing_name')
# for backwards compatibility, read any arguments that used to be accepted by position
for key, val in zip(['device_configuration', 'thing_name'], args):
setattr(self, key, val)
@classmethod
def from_payload(cls, payload):
# type: (typing.Dict[str, typing.Any]) -> RegisterThingResponse
new = cls()
val = payload.get('deviceConfiguration')
if val is not None:
new.device_configuration = val
val = payload.get('thingName')
if val is not None:
new.thing_name = val
return new
class RegisterThingSubscriptionRequest(awsiot.ModeledClass):
"""
Data needed to subscribe to the responses of the RegisterThing operation.
All attributes are None by default, and may be set by keyword in the constructor.
Keyword Args:
template_name (str): Name of the provisioning template to listen for RegisterThing responses for.
Attributes:
template_name (str): Name of the provisioning template to listen for RegisterThing responses for.
"""
__slots__ = ['template_name']
def __init__(self, *args, **kwargs):
self.template_name = kwargs.get('template_name')
# for backwards compatibility, read any arguments that used to be accepted by position
for key, val in zip(['template_name'], args):
setattr(self, key, val)