TTlockClient.Types (TTlockClient v2.1.0)

Type definitions and records for TTLock client library.

Summary

Functions

Creates authentication credentials with MD5 hashed password.

Creates lock detail request parameters.

Creates passcode delete request parameters.

Creates a new token info record from OAuth response.

Checks if a token is expired or will expire within the given buffer seconds.

Checks if a token info record has valid token data.

Types

auth_credentials()

@type auth_credentials() ::
  {:auth_credentials, username :: String.t(), password_hash :: String.t()}

auth_result()

@type auth_result() :: {:ok, oauth_response()} | {:error, oauth_error() | atom()}

client_config()

@type client_config() ::
  {:client_config, client_id :: String.t(), client_secret :: String.t(),
   base_url :: String.t()}

lock_api_result()

@type lock_api_result() ::
  {:ok, lock_list_response() | lock_detail_response()}
  | {:error, oauth_error() | atom()}

lock_detail_params()

@type lock_detail_params() :: {:lock_detail_params, lock_id :: integer()}

lock_detail_response()

@type lock_detail_response() :: %{
  lockId: integer(),
  lockName: String.t(),
  lockAlias: String.t(),
  lockMac: String.t(),
  noKeyPwd: String.t(),
  electricQuantity: integer(),
  featureValue: String.t(),
  timezoneRawOffset: integer(),
  modelNum: String.t(),
  hardwareRevision: String.t(),
  firmwareRevision: String.t(),
  autoLockTime: integer(),
  lockSound: integer(),
  privacyLock: integer(),
  tamperAlert: integer(),
  resetButton: integer(),
  openDirection: integer(),
  passageMode: integer(),
  passageModeAutoUnlock: integer(),
  date: integer()
}

lock_list_params()

@type lock_list_params() ::
  {:lock_list_params, page_no :: integer(), page_size :: integer(),
   lock_alias :: String.t() | nil, group_id :: integer() | nil}

lock_list_response()

@type lock_list_response() :: %{
  list: [lock_record()],
  pageNo: integer(),
  pageSize: integer(),
  pages: integer(),
  total: integer()
}

lock_record()

@type lock_record() :: %{
  lockId: integer(),
  lockName: String.t(),
  lockAlias: String.t(),
  lockMac: String.t(),
  electricQuantity: integer(),
  featureValue: String.t(),
  hasGateway: integer(),
  lockData: String.t(),
  groupId: integer(),
  groupName: String.t(),
  date: integer()
}

oauth_error()

@type oauth_error() :: %{error_code: integer(), description: String.t()}

oauth_response()

@type oauth_response() :: %{
  access_token: String.t(),
  refresh_token: String.t(),
  expires_in: integer(),
  uid: integer()
}

passcode_add_params()

@type passcode_add_params() ::
  {:passcode_add_params, lock_id :: integer(), keyboard_pwd :: integer(),
   keyboard_pwd_name :: String.t() | nil, keyboard_pwd_type :: integer(),
   start_date :: integer() | nil, end_date :: integer() | nil,
   add_type :: integer()}

passcode_add_response()

@type passcode_add_response() :: %{keyboardPwdId: integer()}

passcode_api_result()

@type passcode_api_result() ::
  {:ok,
   passcode_add_response()
   | passcode_list_response()
   | passcode_delete_response()
   | passcode_change_response()}
  | {:error, oauth_error() | atom()}

passcode_change_params()

@type passcode_change_params() ::
  {:passcode_change_params, lock_id :: integer(), keyboard_pwd_id :: integer(),
   keyboard_pwd_name :: String.t() | nil, new_keyboard_pwd :: integer() | nil,
   start_date :: integer() | nil, end_date :: integer() | nil,
   change_type :: integer()}

passcode_change_response()

@type passcode_change_response() :: %{errcode: integer(), errmsg: String.t()}

passcode_delete_params()

@type passcode_delete_params() ::
  {:passcode_delete_params, lock_id :: integer(), keyboard_pwd_id :: integer()}

passcode_delete_response()

@type passcode_delete_response() :: %{errcode: integer(), errmsg: String.t()}

passcode_list_params()

@type passcode_list_params() ::
  {:passcode_list_params, lock_id :: integer(), search_str :: String.t() | nil,
   page_no :: integer(), page_size :: integer(), order_by :: integer()}

passcode_list_response()

@type passcode_list_response() :: %{
  list: [passcode_record()],
  pageNo: integer(),
  pageSize: integer(),
  pages: integer(),
  total: integer()
}

passcode_record()

@type passcode_record() :: %{
  keyboardPwdId: integer(),
  lockId: integer(),
  keyboardPwd: String.t(),
  keyboardPwdName: String.t(),
  keyboardPwdType: String.t(),
  startDate: integer(),
  endDate: integer(),
  sendDate: integer(),
  isCustom: integer(),
  senderUsername: String.t()
}

token_info()

@type token_info() ::
  {:token_info, access_token :: String.t() | nil,
   refresh_token :: String.t() | nil, expires_at :: DateTime.t() | nil,
   uid :: integer() | nil}

Functions

auth_credentials(args \\ [])

(macro)

auth_credentials(record, args)

(macro)

client_config(args \\ [])

(macro)

client_config(record, args)

(macro)

expired_token_error()

lock_detail_params(args \\ [])

(macro)

lock_detail_params(record, args)

(macro)

lock_list_params(args \\ [])

(macro)

lock_list_params(record, args)

(macro)

new_auth_credentials(username, password)

@spec new_auth_credentials(String.t(), String.t()) :: auth_credentials()

Creates authentication credentials with MD5 hashed password.

new_client_config(client_id, client_secret, base_url \\ "https://euapi.ttlock.com")

@spec new_client_config(String.t(), String.t(), String.t()) :: client_config()

Creates a new client configuration record.

new_lock_detail_params(lock_id)

@spec new_lock_detail_params(integer()) :: lock_detail_params()

Creates lock detail request parameters.

new_lock_list_params(page_no \\ 1, page_size \\ 20, lock_alias \\ nil, group_id \\ nil)

@spec new_lock_list_params(integer(), integer(), String.t() | nil, integer() | nil) ::
  lock_list_params()

Creates lock list request parameters.

new_passcode_add_params(lock_id, keyboard_pwd, keyboard_pwd_name \\ nil, keyboard_pwd_type \\ 3, start_date \\ nil, end_date \\ nil, add_type \\ 1)

@spec new_passcode_add_params(
  integer(),
  integer(),
  String.t() | nil,
  integer(),
  integer() | nil,
  integer() | nil,
  integer()
) :: passcode_add_params()

Creates passcode add request parameters.

Parameters

  • lock_id - The lock ID to add the passcode to
  • keyboard_pwd - The passcode (4-9 digits)
  • keyboard_pwd_name - Optional name/alias for the passcode
  • keyboard_pwd_type - Passcode type: 2 = permanent, 3 = period (default 3)
  • start_date - Start time in milliseconds (required if type = 3)
  • end_date - End time in milliseconds (required if type = 3)
  • add_type - Add method: 1 = Bluetooth, 2 = Gateway/WiFi (default 1)

new_passcode_change_params(lock_id, keyboard_pwd_id, keyboard_pwd_name \\ nil, new_keyboard_pwd \\ nil, start_date \\ nil, end_date \\ nil, change_type \\ 2)

@spec new_passcode_change_params(
  integer(),
  integer(),
  String.t() | nil,
  integer() | nil,
  integer() | nil,
  integer() | nil,
  integer()
) :: passcode_change_params()

Creates passcode change request parameters.

Parameters

  • lock_id - The lock ID containing the passcode
  • keyboard_pwd_id - The passcode ID to change
  • keyboard_pwd_name - Optional new name for the passcode
  • new_keyboard_pwd - Optional new passcode value (4-9 digits)
  • start_date - Optional new start time in milliseconds
  • end_date - Optional new end time in milliseconds
  • change_type - Change method: 2 = Gateway/WiFi (default 2)

new_passcode_delete_params(lock_id, keyboard_pwd_id)

@spec new_passcode_delete_params(integer(), integer()) :: passcode_delete_params()

Creates passcode delete request parameters.

Parameters

  • lock_id - The lock ID containing the passcode
  • keyboard_pwd_id - The passcode ID to delete

new_passcode_list_params(lock_id, search_str \\ nil, page_no \\ 1, page_size \\ 20, order_by \\ 1)

@spec new_passcode_list_params(
  integer(),
  String.t() | nil,
  integer(),
  integer(),
  integer()
) ::
  passcode_list_params()

Creates passcode list request parameters.

Parameters

  • lock_id - The lock ID to get passcodes for
  • search_str - Optional search keyword (fuzzy search by name or exact match by passcode)
  • page_no - Page number (default 1)
  • page_size - Items per page (default 20, max 200)
  • order_by - Sorting: 0 = by name, 1 = reverse by time, 2 = reverse by name (default 1)

new_token_info(map)

@spec new_token_info(oauth_response()) :: token_info()

Creates a new token info record from OAuth response.

passcode_add_params(args \\ [])

(macro)

passcode_add_params(record, args)

(macro)

passcode_change_params(args \\ [])

(macro)

passcode_change_params(record, args)

(macro)

passcode_delete_params(args \\ [])

(macro)

passcode_delete_params(record, args)

(macro)

passcode_list_params(args \\ [])

(macro)

passcode_list_params(record, args)

(macro)

token_expired?(token_info, buffer \\ 300)

@spec token_expired?(token_info(), integer()) :: boolean()

Checks if a token is expired or will expire within the given buffer seconds.

token_info(args \\ [])

(macro)

token_info(record, args)

(macro)

valid_token_info?(arg1)

@spec valid_token_info?(token_info()) :: boolean()

Checks if a token info record has valid token data.