<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_device(self, **kwargs):
 """Add a new device to catalog. .. code-block:: python device = { "mechanism": "connector", "certificate_fingerprint": "<certificate>", "name": "New device name", "certificate_issuer_id": "<id>" } resp = api.add_device(**device) print(resp.created_at) :param str certificate_fingerprint: Fingerprint of the device certificate :param str certificate_issuer_id: ID of the issuer of the certificate :param str name: The name of the device :param str account_id: The owning Identity and Access Managment (IAM) account ID :param obj custom_attributes: Up to 5 custom JSON attributes :param str description: The description of the device :param str device_class: Class of the device :param str id: The ID of the device :param str manifest_url: URL for the current device manifest :param str mechanism: The ID of the channel used to communicate with the device :param str mechanism_url: The address of the connector to use :param str serial_number: The serial number of the device :param str state: The current state of the device :param int trust_class: The device trust class :param str vendor_id: The device vendor ID :param str alias: The alias of the device :parama str device_type: The endpoint type of the device - e.g. if the device is a gateway :param str host_gateway: The endpoint_name of the host gateway, if appropriate :param datetime bootstrap_certificate_expiration: :param datetime connector_certificate_expiration: Expiration date of the certificate used to connect to connector server :param int device_execution_mode: The device class :param str firmware_checksum: The SHA256 checksum of the current firmware image :param datetime manifest_timestamp: The timestamp of the current manifest version :return: the newly created device object. :rtype: Device """

        api = self._get_api(device_directory.DefaultApi)
        device = Device._create_request_map(kwargs)
        device = DeviceData(**device)
        return Device(api.device_create(device))