ring-client-api
Version:
Unofficial API for Ring doorbells, cameras, security alarm system and smart lighting
1,080 lines (1,079 loc) • 33.4 kB
TypeScript
type Firmware = string | 'Up To Date';
export declare const RingDeviceType: {
readonly BaseStation: "hub.redsky";
readonly BaseStationPro: "hub.kili";
readonly Keypad: "security-keypad";
readonly SecurityPanel: "security-panel";
readonly ContactSensor: "sensor.contact";
readonly MotionSensor: "sensor.motion";
readonly FloodFreezeSensor: "sensor.flood-freeze";
readonly FreezeSensor: "sensor.freeze";
readonly TemperatureSensor: "sensor.temperature";
readonly WaterSensor: "sensor.water";
readonly TiltSensor: "sensor.tilt";
readonly GlassbreakSensor: "sensor.glassbreak";
readonly RangeExtender: "range-extender.zwave";
readonly ZigbeeAdapter: "adapter.zigbee";
readonly AccessCodeVault: "access-code.vault";
readonly AccessCode: "access-code";
readonly SmokeAlarm: "alarm.smoke";
readonly CoAlarm: "alarm.co";
readonly SmokeCoListener: "listener.smoke-co";
readonly MultiLevelSwitch: "switch.multilevel";
readonly Fan: "switch.multilevel";
readonly MultiLevelBulb: "switch.multilevel.bulb";
readonly Switch: "switch";
readonly BeamsMotionSensor: "motion-sensor.beams";
readonly BeamsSwitch: "switch.beams";
readonly BeamsMultiLevelSwitch: "switch.multilevel.beams";
readonly BeamsLightGroupSwitch: "group.light-group.beams";
readonly BeamsTransformerSwitch: "switch.transformer.beams";
readonly BeamsDevice: "device.beams";
readonly RetrofitBridge: "bridge.flatline";
readonly RetrofitZone: "sensor.zone";
readonly Thermostat: "temperature-control.thermostat";
readonly Sensor: "sensor";
readonly RingNetAdapter: "adapter.ringnet";
readonly CodeVault: "access-code.vault";
readonly SecurityAccessCode: "access-code";
readonly ZWaveAdapter: "adapter.zwave";
readonly ZWaveExtender: "range-extender.zwave";
readonly PanicButton: "security-panic";
readonly UnknownZWave: "unknown.zwave";
readonly OnvifCamera: "onvif_camera";
readonly ThirdPartyGarageDoorOpener: "third_party_gdo";
readonly IntercomHandsetAudio: "intercom_handset_audio";
readonly WaterValve: "valve.water";
};
export type RingDeviceType = (typeof RingDeviceType)[keyof typeof RingDeviceType];
export declare const RingDeviceCategory: {
readonly Outlets: 1;
readonly Lights: 2;
readonly Sensors: 5;
readonly Appliances: 7;
readonly Locks: 10;
readonly Thermostats: 11;
readonly Cameras: 12;
readonly Alarms: 15;
readonly Fans: 17;
readonly Security: 22;
readonly Unknown: 29;
readonly SensorsMotion: 30;
readonly Controller: 31;
readonly RangeExtenders: 32;
readonly Keypads: 33;
readonly Sirens: 34;
readonly PanicButtons: 35;
readonly WaterValves: 37;
};
export type RingDeviceCategory = (typeof RingDeviceCategory)[keyof typeof RingDeviceCategory];
export declare const RingCameraKind: {
readonly doorbot: "doorbot";
readonly doorbell: "doorbell";
readonly doorbell_v3: "doorbell_v3";
readonly doorbell_v4: "doorbell_v4";
readonly doorbell_v5: "doorbell_v5";
readonly doorbell_oyster: "doorbell_oyster";
readonly doorbell_portal: "doorbell_portal";
readonly doorbell_scallop: "doorbell_scallop";
readonly doorbell_scallop_lite: "doorbell_scallop_lite";
readonly doorbell_graham_cracker: "doorbell_graham_cracker";
readonly lpd_v1: "lpd_v1";
readonly lpd_v2: "lpd_v2";
readonly lpd_v4: "lpd_v4";
readonly jbox_v1: "jbox_v1";
readonly stickup_cam: "stickup_cam";
readonly stickup_cam_v3: "stickup_cam_v3";
readonly stickup_cam_elite: "stickup_cam_elite";
readonly stickup_cam_longfin: "stickup_cam_longfin";
readonly stickup_cam_lunar: "stickup_cam_lunar";
readonly spotlightw_v2: "spotlightw_v2";
readonly hp_cam_v1: "hp_cam_v1";
readonly hp_cam_v2: "hp_cam_v2";
readonly stickup_cam_v4: "stickup_cam_v4";
readonly floodlight_v1: "floodlight_v1";
readonly floodlight_v2: "floodlight_v2";
readonly floodlight_pro: "floodlight_pro";
readonly cocoa_camera: "cocoa_camera";
readonly cocoa_doorbell: "cocoa_doorbell";
readonly cocoa_doorbell_v2: "cocoa_doorbell_v2";
readonly cocoa_doorbell_v3: "cocoa_doorbell_v3";
readonly cocoa_floodlight: "cocoa_floodlight";
readonly cocoa_spotlight: "cocoa_spotlight";
readonly stickup_cam_mini: "stickup_cam_mini";
readonly onvif_camera: "onvif_camera";
};
export type RingCameraKind = (typeof RingCameraKind)[keyof typeof RingCameraKind];
export declare const RingCameraModel: {
readonly [P in RingCameraKind]: string;
};
export type AlarmMode = 'all' | 'some' | 'none';
export type ThermostatMode = 'heat' | 'cool' | 'off' | 'aux';
export type MessageType = 'RoomGetList' | 'SessionInfo' | 'DeviceInfoDocGetList' | 'DeviceInfoSet';
export type MessageDataType = 'RoomListV2Type' | 'SessionInfoType' | 'DeviceInfoDocType' | 'DeviceInfoSetType' | 'HubDisconnectionEventType';
export interface SocketIoMessage {
msg: MessageType;
datatype: MessageDataType;
src: string;
body: any[];
}
export type AssetKind = 'base_station_v1' | 'beams_bridge_v1' | 'floodlight_v2' | string;
export interface AssetSession {
assetUuid: string;
connectionStatus: 'unknown' | 'cell-backup' | 'online';
doorbotId: number;
kind: AssetKind;
sessionId: number;
}
export type AlarmState = 'burglar-alarm' | 'entry-delay' | 'fire-alarm' | 'co-alarm' | 'panic' | 'user-verified-burglar-alarm' | 'user-verified-co-or-fire-alarm' | 'burglar-accelerated-alarm' | 'fire-accelerated-alarm';
export declare const allAlarmStates: AlarmState[];
export interface RingDeviceData {
zid: string;
name: string;
deviceType: RingDeviceType;
categoryId: number;
batteryLevel?: number;
batteryStatus: 'full' | 'charged' | 'ok' | 'low' | 'none' | 'charging';
batteryBackup?: 'charged' | 'charging' | 'inUse';
acStatus?: 'error' | 'ok';
manufacturerName?: string;
serialNumber?: string;
tamperStatus: 'ok' | 'tamper';
faulted?: boolean;
locked?: 'jammed' | 'locked' | 'unlocked' | 'unknown';
roomId?: number;
volume?: number;
mode?: AlarmMode | ThermostatMode;
transitionDelayEndTimestamp?: number | null;
alarmInfo?: {
state: AlarmState;
faultedDevices?: string[];
timestamp?: number;
uuid?: string;
};
siren?: {
state: 'on' | 'off';
};
alarmStatus?: 'active';
co?: {
alarmStatus?: 'active';
};
smoke?: {
alarmStatus?: 'active';
};
flood?: {
faulted?: boolean;
};
freeze?: {
faulted?: boolean;
};
motionStatus?: 'clear' | 'faulted';
groupId?: string;
tags: ('hidden' | 'sleepy' | 'ota-lock' | 'scanned' | 'kitted' | string)[];
on?: boolean;
level?: number;
hs?: {
hue?: number;
sat?: number;
};
ct?: number;
status?: 'enabled' | 'disabled';
parentZid?: string;
rootDevice?: string;
relToParentZid?: string;
celsius?: number;
faultHigh?: number;
faultLow?: number;
setPoint?: number;
setPointMax?: number;
setPointMin?: number;
basicValue?: number;
componentDevices?: {
rel: string;
zid: string;
}[];
motionSensorEnabled?: boolean;
brightness?: number;
valveState?: 'open' | 'closed';
}
export declare const deviceTypesWithVolume: RingDeviceType[];
export interface BaseStation {
address: string;
alerts: any[];
description: string;
device_id: string;
features: null;
firmware_version: Firmware;
id: number;
kind: string;
latitude: number;
location_id: string;
longitude: number;
owned: boolean;
owner?: {
id: number;
email: string;
first_name: string;
last_name: string;
};
ring_id: null;
settings: null;
stolen: boolean;
time_zone: string;
}
export interface BeamBridge {
created_at: string;
description: string;
hardware_id: string;
id: number;
kind: string;
location_id: string;
metadata: {
ethernet: boolean;
legacy_fw_migrated: boolean;
};
owner_id: number;
role: string;
updated_at: string;
}
export type ChimeKind = 'chime' | 'chime_pro' | 'chime_v2' | 'chime_pro_v2';
export declare const ChimeModel: {
readonly [P in ChimeKind]: string;
};
export interface ChimeData {
id: number;
description: string;
device_id: string;
time_zone: string;
firmware_version: Firmware;
kind: ChimeKind;
latitude: number;
longitude: number;
address: string;
settings: {
volume: number;
ding_audio_user_id: string;
ding_audio_id: string;
motion_audio_user_id: string;
motion_audio_id: string;
};
features: {
ringtones_enabled: boolean;
};
owned: boolean;
alerts: {
connection: string;
rssi: string;
};
do_not_disturb: {
seconds_left: number;
};
stolen: boolean;
location_id: string;
ring_id: null;
owner: {
id: number;
first_name: string;
last_name: string;
email: string;
};
}
export type ChimeSoundKind = 'motion' | 'ding';
export interface ChimeUpdate {
description?: string;
latitude?: number;
longitude?: number;
address?: string;
settings?: {
volume?: number;
ding_audio_user_id?: string;
ding_audio_id?: string;
motion_audio_user_id?: string;
motion_audio_id?: string;
};
}
export interface RingtoneOptions {
default_ding_user_id: string;
default_ding_id: string;
default_motion_user_id: string;
default_motion_id: string;
audios: [
{
user_id: string;
id: string;
description: string;
kind: string;
url: string;
checksum: string;
available: string;
}
];
}
export interface LocationAddress {
address1: string;
address2: string;
cross_street: string;
city: string;
state: string;
timezone: string;
zip_code: string;
}
export interface UserLocation {
address: LocationAddress;
created_at: string;
geo_coordinates: {
latitude: string;
longitude: string;
};
geo_service_verified: 'address_only' | string;
location_id: string;
name: string;
owner_id: number;
updated_at: string;
user_verified: boolean;
}
export interface TicketAsset {
doorbotId: number;
kind: AssetKind;
onBattery: boolean;
status: 'online' | 'offline';
uuid: string;
}
export declare const DoorbellType: {
readonly Mechanical: 0;
readonly Digital: 1;
readonly None: 2;
};
export type DoorbellType = (typeof DoorbellType)[keyof typeof DoorbellType];
export interface BaseCameraData {
alerts: {
connection: 'online' | 'offline' | string;
battery?: 'low' | string;
ota_status?: 'timeout' | string;
};
created_at: string;
deactivated_at: null | string;
description: string;
device_id: string;
features: {
motions_enabled: boolean;
show_recordings: boolean;
advanced_motion_enabled: boolean;
people_only_enabled: boolean;
shadow_correction_enabled: boolean;
motion_message_enabled: boolean;
night_vision_enabled: boolean;
};
id: number;
is_sidewalk_gateway: boolean;
location_id: string;
motion_snooze: null | {
scheduled: boolean;
};
night_mode_status: 'unknown' | 'true' | 'false';
owned: boolean;
ring_net_id: null;
settings: {
enable_vod: boolean | 1;
motion_zones: {
enable_audio: false;
active_motion_filter: number;
sensitivity: number;
advanced_object_settings: any;
zone1: any;
zone2: any;
zone3: any;
};
motion_snooze_preset_profile: string;
live_view_preset_profile: string;
live_view_presets: string[];
motion_snooze_presets: string[];
doorbell_volume: number;
chime_settings?: {
type: DoorbellType;
enable: boolean;
duration: number;
};
video_settings: any;
motion_announcement: boolean;
stream_setting: number;
advanced_motion_detection_enabled: boolean;
advanced_motion_detection_human_only_mode: boolean;
luma_night_threshold: number;
enable_audio_recording: boolean | null;
people_detection_eligible: false;
pir_settings?: any;
pir_motion_zones?: number[];
floodlight_settings?: {
priority: number;
duration: number;
brightness?: number;
always_on: boolean;
always_on_duration: null | number;
};
light_schedule_settings?: any;
luma_light_threshold?: number;
live_view_disabled?: boolean;
motion_detection_enabled?: boolean;
power_mode?: 'battery' | 'wired';
sheila_settings: {
cv_processing_enabled: boolean | null;
local_storage_enabled: boolean | null;
};
server_settings: {
ring_media_server_enabled: boolean;
};
};
subscribed: boolean;
subscribed_motions: boolean;
time_zone: string;
motion_detection_enabled?: boolean;
camera_location_indoor?: boolean;
facing_window?: boolean;
enable_ir_led?: boolean;
owner: {
id: number;
email: string;
first_name: string;
last_name: string;
};
led_status?: 'on' | 'off';
ring_cam_light_installed?: 'true' | 'false';
ring_cam_setup_flow?: 'floodlight';
siren_status?: {
started_at?: string;
duration?: string;
ends_at?: string;
seconds_remaining: number;
};
health: {
device_type: RingCameraKind;
last_update_time: number;
connected: boolean;
rss_connected: boolean;
vod_enabled: boolean;
sidewalk_connection: boolean;
floodlight_on: boolean;
siren_on?: boolean;
white_led_on: boolean;
night_mode_on: boolean;
hatch_open: boolean;
packet_loss: number;
packet_loss_category: 'good' | string;
rssi: number;
battery_voltage: number;
wifi_is_ring_network: boolean;
supported_rpc_commands: string[];
ota_status: 'successful' | string;
ext_power_state?: 0 | number;
pref_run_mode?: 'low_power' | string;
run_mode?: 'low_power' | 'full_power' | string;
network_connection_value: 'wifi' | string;
ac_power: number;
battery_present?: boolean;
external_connection: boolean;
battery_percentage?: number;
battery_percentage_category: 'very_good' | 'unknown' | string;
firmware_version: string;
rssi_category: 'good' | string;
battery_voltage_category: 'very_good' | string;
second_battery_voltage_category: 'unknown' | string;
second_battery_percentage?: number;
second_battery_percentage_category: 'unknown' | string;
battery_save: boolean;
firmware_version_status: 'Up to Date';
tx_rate: number;
ptz_connected?: 'penguin';
};
}
export interface CameraData extends BaseCameraData {
kind: Omit<RingCameraKind, typeof RingCameraKind.onvif_camera>;
address: string;
battery_life: number | string | null;
battery_life_2?: number | string | null;
battery_voltage?: number;
battery_voltage_2?: number;
external_connection: boolean;
firmware_version: Firmware;
latitude: number;
longitude: number;
ring_id: null;
stolen: boolean;
}
export interface OnvifCameraData extends BaseCameraData {
kind: typeof RingCameraKind.onvif_camera;
metadata: {
legacy_fw_migrated: boolean;
imported_from_amazon: boolean;
is_sidewalk_gateway: boolean;
third_party_manufacturer: string;
third_party_model: string;
third_party_dsn: string;
third_party_properties: {
amzn_dsn: string;
uuid: string;
};
};
owner_id: number;
updated_at: string;
}
export interface ThirdPartyGarageDoorOpener {
id: number;
kind: typeof RingDeviceType.ThirdPartyGarageDoorOpener;
description: string;
location_id: string;
owner_id: number;
hardware_id: string;
created_at: string;
updated_at: string;
role: 'owner' | string;
metadata: {
is_sidewalk_gateway: boolean;
third_party_manufacturer: string;
third_party_model: string;
third_party_properties: {
key_access_point_associated: 'true' | 'false';
};
integration_type: 'Key by Amazon' | string;
};
ring_net_id: null;
is_sidewalk_gateway: boolean;
}
export interface IntercomHandsetAudioData {
id: number;
description: string;
device_id: string;
kind: typeof RingDeviceType.IntercomHandsetAudio;
function: {
name: null;
};
settings: {
show_recordings: boolean;
recording_ttl: number;
recording_enabled: boolean;
keep_alive: null;
chime_settings: {
type: number;
enable: boolean;
duration: number;
};
intercom_settings: {
predecessor: string;
config: string;
ring_to_open: boolean;
intercom_type: 'DF' | string;
unlock_mode: number;
replication: number;
};
keep_alive_auto: number;
doorbell_volume: number;
enable_chime: number;
theft_alarm_enable: number;
use_cached_domain: number;
use_server_ip: number;
server_domain: 'fw.ring.com' | string;
server_ip: null;
enable_log: number;
forced_keep_alive: null;
mic_volume: number;
voice_volume: number;
};
features: {
motion_zone_recommendation: boolean;
motions_enabled: boolean;
show_recordings: boolean;
show_vod_settings: boolean;
rich_notifications_eligible: boolean;
show_24x7_lite: boolean;
show_offline_motion_events: boolean;
cfes_eligible: boolean;
sheila_camera_eligible: null | boolean;
sheila_camera_processing_eligible: null | boolean;
chime_auto_detect_capable: boolean;
};
owned: boolean;
owner: {
id: number;
first_name: string;
last_name: string;
email: string;
};
alerts: {
connection: 'online' | 'offline' | string;
ota_status?: 'no_ota' | string;
};
firmware_version: 'Up to Date' | string;
location_id: string;
time_zone: string;
created_at: string;
ring_net_id: null;
is_sidewalk_gateway: boolean;
subscribed: boolean;
deactivated_at: null | string;
battery_life: string;
metadata: {
ethernet: boolean;
legacy_fw_migrated: boolean;
imported_from_amazon: boolean;
is_sidewalk_gateway: boolean;
key_access_point_associated: boolean;
};
}
export interface UnknownDevice {
id: number;
kind: unknown;
description: string;
}
export interface CvDetectionType {
enabled: boolean;
mode: string;
notification: boolean;
}
export interface DayNightConfig {
day: number;
night: number;
}
export interface CameraDeviceSettingsData {
advanced_motion_settings: {
active_motion_filter: number;
advanced_object_settings: {
human_detection_confidence: DayNightConfig;
motion_zone_overlap: DayNightConfig;
object_size_maximum: DayNightConfig;
object_size_minimum: DayNightConfig;
object_time_overlap: DayNightConfig;
};
};
chime_settings: {
duration: number;
enable: boolean;
enable_ext: boolean;
type: number;
};
motion_settings: {
enable_audio: boolean;
motion_detection_enabled: boolean;
enable_ir_led: boolean;
advanced_motion_detection_enabled: boolean;
advanced_motion_detection_mode: string;
advanced_motion_detection_human_only_mode: boolean;
advanced_motion_detection_loitering_mode: boolean;
motion_snooze_privacy_timeout: number;
advanced_motion_zones_enabled: boolean;
advanced_motion_zones_type: string;
enable_indoor_mode: boolean;
enable_pir_validation: boolean;
loitering_threshold: number;
enable_rlmd: boolean;
enable_recording: boolean;
end_detection: number;
advanced_motion_recording_human_mode: boolean;
advanced_motion_glance_enabled: boolean;
};
video_settings: {
exposure_control: number;
night_color_enable: boolean;
hdr_enable: boolean;
clip_length_max: number;
clip_length_min: number;
ae_mode: number;
ae_mask: string;
};
vod_settings: {
enable: boolean;
toggled_at: string;
use_cached_vod_domain: boolean;
};
volume_settings: {
doorbell_volume: number;
mic_volume: number;
voice_volume: number;
};
cv_settings: {
detection_types: {
human: CvDetectionType;
loitering: CvDetectionType;
motion: CvDetectionType;
moving_vehicle: CvDetectionType;
nearby_pom: CvDetectionType;
other_motion: CvDetectionType;
package_delivery: CvDetectionType;
package_pickup: CvDetectionType;
};
threshold: {
loitering: number;
package_delivery: number;
};
};
general_settings: {
enable_audio_recording: boolean;
lite_24x7_enabled: boolean;
offline_motion_event_enabled: boolean;
lite_24x7_subscribed: boolean;
offline_motion_event_subscribed: boolean;
firmwares_locked: boolean;
utc_offset: string;
theft_alarm_enable: boolean;
use_wrapup_domain: boolean;
power_mode: 'battery' | 'wired';
data_collection_enabled: boolean;
};
keep_alive_settings: {
keep_alive_auto: number;
};
pir_settings: {
sensitivity_1: number;
sensitivity_2: number;
sensitivity_3: number;
zone_enable: number;
};
snapshot_settings: {
frequency_secs: number;
lite_24x7_resolution_p: number;
ome_resolution_p: number;
max_upload_kb: number;
frequency_after_secs: number;
period_after_secs: number;
close_container: number;
};
client_device_settings: {
ringtones_enabled: boolean;
people_only_enabled: boolean;
advanced_motion_enabled: boolean;
motion_message_enabled: boolean;
shadow_correction_enabled: boolean;
night_vision_enabled: boolean;
light_schedule_enabled: boolean;
rich_notifications_eligible: boolean;
show_24x7_lite: boolean;
show_offline_motion_events: boolean;
cfes_eligible: boolean;
show_radar_data: boolean;
motion_zone_recommendation: boolean;
};
concierge_settings?: {
alexa_settings?: {
delay_ms: number;
};
autoreply_settings?: {
delay_ms: number;
};
mode?: string;
};
}
type HealthCategory = 'very_poor' | 'poor' | 'good' | 'very_good' | 'unknown' | 'NA' | string | null;
export interface ChimeHealth {
id: number;
wifi_name: string;
battery_percentage: HealthCategory;
battery_percentage_category: HealthCategory;
battery_voltage: number | null;
battery_voltage_category: HealthCategory;
latest_signal_strength: number;
latest_signal_category: HealthCategory;
average_signal_strength: number;
average_signal_category: HealthCategory;
firmware: Firmware;
updated_at: 'string';
wifi_is_ring_network: boolean;
packet_loss_category: HealthCategory;
packet_loss_strength: number;
}
export interface CameraHealth extends ChimeHealth {
transformer_voltage?: number;
transformer_voltage_category?: 'good';
ext_power_state?: number;
}
export type DingKind = 'motion' | 'ding' | 'on_demand' | 'alarm' | 'on_demand_link' | 'door_activity' | 'key_access' | 'DELETED_FOOTAGE' | 'OFFLINE_FOOTAGE' | 'OFFLINE_MOTION';
export interface CameraEvent {
created_at: string;
cv_properties: {
detection_type: null | any;
person_detected: null | any;
stream_broken: null | any;
};
ding_id: number;
ding_id_str: string;
doorbot_id: number;
favorite: boolean;
kind: DingKind;
recorded: false;
recording_status: 'ready' | 'audio_ready';
state: 'timed_out' | 'completed';
}
export interface CameraEventResponse {
events: CameraEvent[];
meta: {
pagination_key: string;
};
}
export interface CameraEventOptions {
limit?: number;
kind?: DingKind;
state?: 'missed' | 'accepted' | 'person_detected';
favorites?: boolean;
olderThanId?: string;
pagination_key?: string;
}
export interface VideoSearchResult {
ding_id: string;
created_at: number;
hq_url: null | string;
lq_url: string;
preroll_duration: null | unknown;
thumbnail_url: string;
untranscoded_url: string;
kind: DingKind;
state: 'timed_out' | 'completed';
had_subscription: boolean;
favorite: boolean;
duration: number;
cv_properties: {
person_detected: null | unknown;
stream_broken: null | unknown;
detection_type: null | unknown;
};
}
export interface VideoSearchResponse {
video_search: VideoSearchResult[];
}
export interface PeriodicalFootage {
start_ms: number;
end_ms: number;
playback_ms: number;
kind: 'online_periodical' | 'offline_periodical';
url: string;
deleted: boolean;
snapshots: number[];
}
export interface PeriodicFootageResponse {
meta: {
pagination_key: number;
butch_size: number;
};
data: PeriodicalFootage[];
responseTimestamp: number;
}
export interface HistoryOptions {
limit?: number;
offset?: number;
category?: 'alarm' | 'beams';
maxLevel?: number;
}
export interface RingDeviceHistoryEvent {
msg: 'DataUpdate';
datatype: MessageDataType;
body: any;
}
export type DingState = 'ringing' | 'connected' | 'timed_out' | 'completed';
export declare const NotificationDetectionType: {
readonly Human: "human";
readonly Loitering: "loitering";
readonly Motion: "motion";
readonly OtherMotion: "other_motion";
readonly NotAvailable: "null";
readonly StreamBroken: "stream_broken";
};
export type NotificationDetectionType = (typeof NotificationDetectionType)[keyof typeof NotificationDetectionType];
export declare const PushNotificationAction: {
readonly Ding: "com.ring.pn.live-event.ding";
readonly Motion: "com.ring.pn.live-event.motion";
readonly IntercomDing: "com.ring.pn.live-event.intercom";
readonly IntercomUnlock: "com.ring.push.INTERCOM_UNLOCK_FROM_APP";
readonly AlarmModeNone: "com.ring.push.HANDLE_NEW_SECURITY_PANEL_MODE_NONE_NOTICE";
readonly AlarmModeSome: "com.ring.push.HANDLE_NEW_SECURITY_PANEL_MODE_SOME_NOTICE";
readonly AlarmSoundSiren: "com.ring.push.HANDLE_NEW_USER_SOUND_SIREN";
readonly AlarmSilenceSiren: "com.ring.push.HANDLE_NEW_NON_ALARM_SIREN_SILENCED";
};
export type PushNotificationAction = (typeof PushNotificationAction)[keyof typeof PushNotificationAction];
export interface PushNotificationDingV2 {
version: '2.0.0' | string;
android_config: {
category: PushNotificationAction | string;
body: string;
};
analytics: {
server_correlation_id: string;
server_id: 'com.ring.pns' | string;
subcategory: string;
triggered_at: number;
sent_at: number;
referring_item_type: string;
referring_item_id: string;
};
data: {
device: {
e2ee_enabled: boolean;
id: number;
kind: RingCameraKind | typeof RingDeviceType.IntercomHandsetAudio;
name: string;
};
event: {
ding: {
id: string;
created_at: string;
subtype: 'other_motion' | 'motion' | 'ding' | 'human' | string;
detection_type?: NotificationDetectionType;
};
eventito: {
type: NotificationDetectionType;
timestamp: number;
};
riid: string;
is_sidewalk: boolean;
live_session: {
streaming_data_hash: string;
active_streaming_profile: 'rms' | string;
default_audio_route: string;
max_duration: number;
};
};
location: {
id: string;
};
};
img?: {
snapshot_uuid: string;
};
}
interface PushNotificationAlarm {
aps: {
alert: string;
};
action: PushNotificationAction | string;
alarm_meta: {
device_zid: number;
location_id: string;
};
}
export interface PushNotificationAlarmV2 {
data: {
gcmData: PushNotificationAlarm;
};
}
interface PushNotificationIntercomUnlock {
aps: {
alert: string;
};
action: typeof PushNotificationAction.IntercomUnlock;
alarm_meta: {
device_zid: number;
location_id: string;
};
}
export interface PushNotificationIntercomUnlockV2 {
data: {
gcmData: PushNotificationIntercomUnlock;
};
}
export type PushNotification = PushNotificationDingV2 | PushNotificationAlarmV2 | PushNotificationIntercomUnlockV2;
export interface SocketTicketResponse {
ticket: string;
responseTimestampe: number;
}
export interface AuthTokenResponse {
access_token: string;
expires_in: number;
refresh_token: string;
scope: 'client';
token_type: 'Bearer';
}
export type TwoStageVerificationState = 'sms' | 'email' | 'totp';
export type Auth2faResponse = {
error?: string | unknown;
error_description?: string;
} | {
next_time_in_secs: number;
phone: string;
tsv_state: TwoStageVerificationState;
};
export interface ProfileResponse {
profile: {
id: number;
email: string;
first_name: string;
last_name: string;
phone_number: string;
authentication_token: string;
features: {
[name: string]: boolean | number | string | string[];
};
user_preferences: {
settings: any;
preferences: any;
};
hardware_id: string;
explorer_program_terms: null;
user_flow: 'ring' | string;
app_brand: string;
country: string;
status: 'legacy' | string;
created_at: string;
tfa_enabled: boolean;
tfa_phone_number: null | string;
account_type: 'ring' | string;
};
}
export type SessionResponse = ProfileResponse;
export interface AccountMonitoringStatus {
accountUuid: string;
externalServiceConfigType: 'rrms' | string;
accountState: 'PROFESSIONAL' | string;
eligibleForDispatch: boolean;
addressComplete: boolean;
contactsComplete: boolean;
codewordComplete: boolean;
alarmSignalSent: boolean;
professionallyMonitored: boolean;
userAcceptDispatch: boolean;
installationDate: number;
externalId: string;
vrRequired: false;
vrUserOptIn: false;
cmsMonitoringType: 'full' | string;
dispatchSetupComplete: boolean;
}
export declare const DispatchSignalType: {
readonly Burglar: "user-verified-burglar-xa";
readonly Fire: "user-verified-fire-xa";
};
export type DispatchSignalType = (typeof DispatchSignalType)[keyof typeof DispatchSignalType];
export type LocationModeInput = 'home' | 'away' | 'disarmed';
export type LocationMode = LocationModeInput | 'disabled' | 'unset';
export declare const disabledLocationModes: LocationMode[];
export interface LocationModeResponse {
mode: LocationMode;
lastUpdateTimeMS: number;
securityStatus: {
lu?: number;
md: 'none' | string;
returnTopic: string;
};
readOnly: boolean;
notYetParticipatingInMode?: {
deviceId: number;
deviceIdType: 'doorbot' | string;
}[];
}
export type LocationModeAction = 'disableMotionDetection' | 'enableMotionDetection' | 'blockLiveViewLocally' | 'allowLiveViewLocally';
export interface LocationModeSetting {
deviceId: string;
deviceIdType: 'doorbot' | string;
actions: LocationModeAction[];
}
export interface LocationModeSettings {
disarmed: LocationModeSetting[];
home: LocationModeSetting[];
away: LocationModeSetting[];
}
export interface LocationModeSettingsResponse extends LocationModeSettings {
lastUpdateTimeMS: number;
}
export interface LocationModeSharing {
sharedUsersEnabled: boolean;
lastUpdateTimeMS: number;
}
export declare function isWebSocketSupportedAsset({ kind }: {
kind: AssetKind;
}): boolean;
export {};