<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.sensaphone.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Derek</id>
		<title>Sensaphone.net - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.sensaphone.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Derek"/>
		<link rel="alternate" type="text/html" href="https://wiki.sensaphone.net/index.php/Special:Contributions/Derek"/>
		<updated>2026-05-10T16:11:54Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/login&amp;diff=176</id>
		<title>Sensaphone.net API/login</title>
		<link rel="alternate" type="text/html" href="https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/login&amp;diff=176"/>
				<updated>2018-01-05T20:38:02Z</updated>
		
		<summary type="html">&lt;p&gt;Derek: /* Example Call */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[[Sensaphone.net API]]=&lt;br /&gt;
&lt;br /&gt;
The Login API will be used to log in to the Sensaphone.net system. When a user logs in with their username and password they will be assigned a session UUID. The session UUID will have a corresponding time stamp and a timed expiration for their session. The session UUID and statically assigned Account ID will be used as the primary identifier instead of including a username and password in subsequent URI requests. &lt;br /&gt;
&lt;br /&gt;
==Example Call==&lt;br /&gt;
    https://rest.sensaphone.net/api/v1/login/{USERNAME}/{PASSWORD}&lt;br /&gt;
&lt;br /&gt;
==Values==&lt;br /&gt;
*Username&lt;br /&gt;
*Password&lt;br /&gt;
*Session UUID&lt;br /&gt;
*Session Time stamp&lt;br /&gt;
*Session Expiration&lt;br /&gt;
&lt;br /&gt;
==Example Requests==&lt;br /&gt;
===GET===&lt;br /&gt;
'''URI Mode Request URI's:'''&lt;br /&gt;
*Receive Login information &lt;br /&gt;
    '''GET'''  https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSION}/login&lt;br /&gt;
*Receive a Login timestamp for a session &lt;br /&gt;
    '''GET''' https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSION}/login/login_timestamp&lt;br /&gt;
*Receive the number of seconds until a session expires &lt;br /&gt;
    '''GET''' https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSION}/login/session_expiration &lt;br /&gt;
&lt;br /&gt;
'''JSON MODE Request URI:'''&lt;br /&gt;
*Receive Login information &lt;br /&gt;
    '''POST'''  https://rest.sensaphone.net/api/v1/login&lt;br /&gt;
&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Request Property'''  | '''Status''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| acctid                       | Required     | Integer    | Static ID of user&lt;br /&gt;
}}{{TableRowN| session                         | Required     | Integer    | Session ID of user&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Response Property'''          | '''Included''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| login_timestamp                 | Optional     | String     | Time stamp of last log in&lt;br /&gt;
}}{{TableRowN| session_expiration              | Optional     | Integer    | Seconds until log in expiration&lt;br /&gt;
}}{{TableRowN| user_id              | Optional     | Integer    | ID of the logged in user&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
====Example JSON====&lt;br /&gt;
Log in with a username and password using JSON mode.&lt;br /&gt;
*'''Request JSON:'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;:&amp;quot;create&amp;quot;,&lt;br /&gt;
  &amp;quot;resource&amp;quot;: &amp;quot;login&amp;quot;,&lt;br /&gt;
  &amp;quot;user_name&amp;quot;: &amp;quot;myusername&amp;quot;,&lt;br /&gt;
  &amp;quot;password&amp;quot;: &amp;quot;pass123&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*'''Response JSON:'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;result&amp;quot;: {&lt;br /&gt;
   &amp;quot;success&amp;quot;: true,&lt;br /&gt;
   &amp;quot;code&amp;quot;: 0,&lt;br /&gt;
   &amp;quot;message&amp;quot;: &amp;quot;Success&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;response&amp;quot;: {&lt;br /&gt;
   &amp;quot;acctid&amp;quot;: 987654,&lt;br /&gt;
   &amp;quot;session&amp;quot;: &amp;quot;0123-4567-8901&amp;quot;,&lt;br /&gt;
   &amp;quot;login_timestamp&amp;quot;: 1499459402,&lt;br /&gt;
   &amp;quot;session_expiration&amp;quot;: 86400,&lt;br /&gt;
   &amp;quot;user_id&amp;quot;: 00000001&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Receive Login information for a given session UUID.&lt;br /&gt;
&lt;br /&gt;
*'''Request JSON:'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;request_type:&amp;quot;read&amp;quot;,&lt;br /&gt;
  &amp;quot;resource&amp;quot;:&amp;quot;login&amp;quot;,&lt;br /&gt;
  &amp;quot;acctid&amp;quot;:987654,&lt;br /&gt;
  &amp;quot;session&amp;quot;:&amp;quot;0123-4567-8901&amp;quot;,&lt;br /&gt;
  &amp;quot;login&amp;quot;:null&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*'''Response JSON:'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;result&amp;quot;:&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;success: true,&lt;br /&gt;
    &amp;quot;code&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;message&amp;quot;:&amp;quot;OK&amp;quot;,&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;response&amp;quot;:&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;login_timestamp&amp;quot;:&amp;quot;2014-12-31 23:59:59&amp;quot;,&lt;br /&gt;
      &amp;quot;session_expiration&amp;quot;:60&lt;br /&gt;
     }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
===PUT===&lt;br /&gt;
PUT will be used only to update a Login session.&lt;br /&gt;
&lt;br /&gt;
'''URI Mode Request URI:'''&lt;br /&gt;
*Request to update a Login session &lt;br /&gt;
   '''PUT'''  https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSION}/login&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
   '''POST'''  https://rest.sensaphone.net/api/v1/login&lt;br /&gt;
&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Request Property'''  | '''Status''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| acctid                  | Required     | Integer    | Static ID of user&lt;br /&gt;
}}{{TableRowN| session                    | Required     | Integer    | Session ID of user&lt;br /&gt;
}}{{TableRowN| user_name               | Optional     | String     | Username&lt;br /&gt;
}}{{TableRowN| password                | Optional     | String     | Password for username&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Response Property''' | '''Included''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| acctid                  | Conditionally*  | Integer    | Static ID of user&lt;br /&gt;
}}{{TableRowN| session                    | Conditionally*  | Integer    | Session ID of user&lt;br /&gt;
}}{{TableRowN| login_timestamp         | Always         | Integer    | Time stamp of renewed session&lt;br /&gt;
}}{{TableRowN| session_expiration      | Always         | Integer    | Time until new log in session expiration&lt;br /&gt;
}}{{TableRowN| user_id              | Always     | Integer    | ID of the logged in user&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; There may be an instance where the system needs to create a new Session ID and/or Account ID. In which case, it will be outputted in the PUT response.&lt;br /&gt;
&lt;br /&gt;
===POST===&lt;br /&gt;
'''URI Mode Request URI:'''&lt;br /&gt;
*Request for creating a new login session &lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/login/{USERNAME}/{PASSWORD}&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/login&lt;br /&gt;
&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Request Property'''  | '''Status''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| user_name               | Required     | String     | Username&lt;br /&gt;
}}{{TableRowN| password                | Required     | String     | Password for username&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Response Property''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| acctid                  | Integer    | Static ID of user&lt;br /&gt;
}}{{TableRowN| session                    | Integer    | Session ID of user&lt;br /&gt;
}}{{TableRowN| login_timestamp         | Integer    | Time stamp of renewed session&lt;br /&gt;
}}{{TableRowN| session_expiration      | Integer    | Time until new log in expiration&lt;br /&gt;
}}{{TableRowN| user_id               | Integer    | ID of the logged in user&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===DELETE===&lt;br /&gt;
Deleting a login session is the equivalent to logging out. &lt;br /&gt;
&lt;br /&gt;
'''URI Mode Request URI:'''&lt;br /&gt;
*Request to log out of a session &lt;br /&gt;
  '''DELETE''' https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSION}/login&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/login&lt;br /&gt;
&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Request Property'''  | '''Status''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| acctid                  | Required     | Integer    | Static ID of user&lt;br /&gt;
}}{{TableRowN| session                    | Required     | Integer    | Session ID of user&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
==Future==&lt;br /&gt;
In the future the login process will support OAuth for advanced access and authentication.&lt;br /&gt;
&lt;br /&gt;
==Password Reset==&lt;br /&gt;
To reset a pass for a particular email, use the following request:&lt;br /&gt;
&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/login/reset_password/{email_address}&lt;/div&gt;</summary>
		<author><name>Derek</name></author>	</entry>

	<entry>
		<id>https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/history&amp;diff=175</id>
		<title>Sensaphone.net API/history</title>
		<link rel="alternate" type="text/html" href="https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/history&amp;diff=175"/>
				<updated>2017-10-25T14:52:39Z</updated>
		
		<summary type="html">&lt;p&gt;Derek: /* Event Log */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[[Sensaphone.net API]]=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Access==&lt;br /&gt;
The History API allows access to the Audit Log, the Data Log, and the Event Log&lt;br /&gt;
&lt;br /&gt;
==Specifications==&lt;br /&gt;
The URI Mode for the History API is unique because it allows filtering options to be specified in pairs and can be added in any order.  Also, the array values are expressed as a common-separated list.&lt;br /&gt;
  /history/audit_log/var_ids/{1234,9876}/changes/{create}&lt;br /&gt;
&lt;br /&gt;
==Timestamps==&lt;br /&gt;
The history APIs such as the Data Log use Sensaphone encoded timestamps.  This allows the timestamps to be independent of the time zone of the client request, and return results adjusted to the time zone of the device, account, etc.  Seconds, minutes, hours, days, and months are 0-indexed, in other words the range of month values is [0,11].  The year value is 2000-based and limited to 100 years.&lt;br /&gt;
&lt;br /&gt;
In order to create a Sensaphone timestamp given the year, month, day, hours, minutes, and seconds, convert each parameter to its equivalent value in seconds.  For the example, in pseudo-code, a factory method would look as following:&lt;br /&gt;
&lt;br /&gt;
 getSensaphoneTimestamp( year, month, day, hours, minutes, seconds )  {&lt;br /&gt;
  return ((seconds                      % 60)) +&lt;br /&gt;
            ((minutes      * 60)        % 3600) +&lt;br /&gt;
            ((hours        * 3600)      % 86400) +&lt;br /&gt;
            ((day          * 86400)     % 2678400) + &lt;br /&gt;
            ((month        * 2678400)   % 32140800) + &lt;br /&gt;
            ((year % 100   * 32140800));  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==Audit Log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Audit Log Filter Options'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Property'''           |'''Status'''     | '''Type'''               | '''Description'''&lt;br /&gt;
}}{{TableRowN|  var_ids                 | Optional   | Array of Integer          | list of variable ids &lt;br /&gt;
}}{{TableRowN|  user_ids               | Optional   | Array of Integer          | list of user ids&lt;br /&gt;
}}{{TableRowN| changes               | Optional   | Array of String           | list of change types (&amp;quot;create&amp;quot;,&amp;quot;delete&amp;quot;,&amp;quot;update&amp;quot;)&lt;br /&gt;
}}{{TableRowN|  start                     | Optional   | Integer           | the start time (Sensaphone timestamp)&lt;br /&gt;
}}{{TableRowN| end                      | Optional   | Integer           | the end time (Sensaphone timestamp)&lt;br /&gt;
}}{{TableRowN|  begin_offset         | Optional   | Integer           |  the beginning offset of the first record&lt;br /&gt;
}}{{TableRowN|  record_offset        | Optional   | Integer           |  the offset from the beginning&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===GET===&lt;br /&gt;
&lt;br /&gt;
'''Audit Log Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | acctid                   | Integer        | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | session                | String         | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | request_type         | String       | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | history                  | Object      | The History object&lt;br /&gt;
}}{{TableRowN| history                | audit_log                | Object       | Audit Log Filter Options&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''Audit Log Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | history                   | Object        | The history object&lt;br /&gt;
}}{{TableRowN| history                 | audit_log                | Array of Objects         | The returned log&lt;br /&gt;
}}{{TableRowN| audit_log                 |  change              | String         | The change that occurred&lt;br /&gt;
}}{{TableRowN| audit_log                 |  who              | String         |  Who changed it&lt;br /&gt;
}}{{TableRowN| audit_log                 |  what              | String         | What changed&lt;br /&gt;
}}{{TableRowN| audit_log                 |  when              | String         | When it changed&lt;br /&gt;
}}{{TableRowN| audit_log                 |  epoch              | Integer         | The epoch time&lt;br /&gt;
}}{{TableRowN| history                  | audit_log_filter         | Object       | Audit Log Filter Options (Only returned in V2)&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
*Receive all changes for a variable:&lt;br /&gt;
*'''URI Mode:'''&lt;br /&gt;
  '''GET''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/audit_log/var_ids/{1234}&lt;br /&gt;
&lt;br /&gt;
*'''JSON Mode:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/audit_log/&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;: &amp;quot;read&amp;quot;,&lt;br /&gt;
  &amp;quot;history&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;audit_log&amp;quot;: {&lt;br /&gt;
        &amp;quot;var_ids&amp;quot; : [1234]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==Data Log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Data Log Filter Options'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Property'''           |'''Status'''     | '''Type'''               | '''Description'''&lt;br /&gt;
}}{{TableRowN|  log_points                 | Optional   | Array of Integer          | list of variable ids &lt;br /&gt;
}}{{TableRowN|  status               | Optional   | Array of String          | list of AlarmStatus (&amp;quot;normal&amp;quot;, &amp;quot;dependency&amp;quot;, &amp;quot;alarm&amp;quot;)&lt;br /&gt;
}}{{TableRowN|  start                     | Optional   | Integer           | the start time (Sensaphone timestamp)&lt;br /&gt;
}}{{TableRowN| end                      | Optional   | Integer           | the end time (Sensaphone timestamp)&lt;br /&gt;
}}{{TableRowN|  begin_offset         | Optional   | Integer           |  the beginning offset of the first record&lt;br /&gt;
}}{{TableRowN|  record_offset        | Optional   | Integer           |  the offset from the beginning&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===GET===&lt;br /&gt;
&lt;br /&gt;
'''Data Log Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | acctid                   | Integer        | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | session                | String         | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | request_type         | String       | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | history                  | Object      | The History object&lt;br /&gt;
}}{{TableRowN| history                | data_log                | Object       | Data Log Filter Options&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''Data Log Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | history                   | Object        | The history object&lt;br /&gt;
}}{{TableRowN| history                 | data_log                | Array of Objects         | The returned log&lt;br /&gt;
}}{{TableRowN| data_log                 |  record_id              | String         | The id of the record&lt;br /&gt;
}}{{TableRowN| data_log                 |  value              | String         |  The value of the variable&lt;br /&gt;
}}{{TableRowN| data_log                 |  variable              | String         | The variable id&lt;br /&gt;
}}{{TableRowN| data_log                 |  is_alarm              | String         | Is an alarm&lt;br /&gt;
}}{{TableRowN| data_log                 |  epoch              | Integer         | The epoch time&lt;br /&gt;
}}{{TableRowN| history                  | data_log_filter         | Object       | Audit Log Filter Options (Only returned in V2)&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
*Receive the last 50 logged datas for a log point&lt;br /&gt;
*'''URI Mode:'''&lt;br /&gt;
  '''GET''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/data_log/log_points/{1234}/begin_offset/{0}/record_offset/{50}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''JSON Mode:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/data_log&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;: &amp;quot;read&amp;quot;,&lt;br /&gt;
  &amp;quot;history&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;data_log&amp;quot;: {&lt;br /&gt;
        &amp;quot;log_points&amp;quot; : [1234],&lt;br /&gt;
        &amp;quot;begin_offset&amp;quot; : 0,&lt;br /&gt;
        &amp;quot;record_offset&amp;quot; : 50&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==Data Log Points==&lt;br /&gt;
Poll the Data Log Points to get the possible logable points to use for the Data Log&lt;br /&gt;
&lt;br /&gt;
===GET===&lt;br /&gt;
&lt;br /&gt;
'''Data Log Points Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | acctid                   | Integer        | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | session                | String         | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | request_type         | String       | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | history                  | Object      | The History object&lt;br /&gt;
}}{{TableRowN| history                | data_log_points                | Object       | &lt;br /&gt;
}}{{TableRowN| data_log_points                | resource_type                | String       | the name of the resource, e.g. &amp;quot;device&amp;quot;&lt;br /&gt;
}}{{TableRowN| data_log_points                | (id_name)                | Integer       |  The ID of the resource, e.g. &amp;quot;device_id&amp;quot;&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''Data Log Points Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | history                   | Object        | The history object&lt;br /&gt;
}}{{TableRowN| history                 | data_log_points               |  Object         | The returned log&lt;br /&gt;
}}{{TableRowN| data_log_points                | resource_type                | String       | the name of the resource, e.g. &amp;quot;device&amp;quot;&lt;br /&gt;
}}{{TableRowN| data_log_points                | (id_name)                | Integer       |  The ID of the resource, e.g. &amp;quot;device_id&amp;quot;&lt;br /&gt;
}}{{TableRowN| data_log_points                | log_points                | Array of Objects       |  The logable points&lt;br /&gt;
}}{{TableRowN| log_points                        | category                     | String           |  The type of logable point&lt;br /&gt;
}}{{TableRowN| log_points                        | (id_name)                     | Integer           |  The ID of the resource, e.g. &amp;quot;zone_id&amp;quot;&lt;br /&gt;
}}{{TableRowN| log_points                        | log_point                    | Integer           |  The logable point ID&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
*Receive all data logable points for a device:&lt;br /&gt;
*'''URI Mode:'''&lt;br /&gt;
  '''GET''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/data_log_points/resource_type/{device}/device_id/{1234}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''JSON Mode:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/data_log_points&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;: &amp;quot;read&amp;quot;,&lt;br /&gt;
  &amp;quot;history&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;data_log_points&amp;quot;: {&lt;br /&gt;
        &amp;quot;resource_type&amp;quot; : &amp;quot;device&amp;quot;,&lt;br /&gt;
        &amp;quot;device_id&amp;quot; : 1234&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==Event Log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Event Log Filter Options'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Property'''           |'''Status'''     | '''Type'''               | '''Description'''&lt;br /&gt;
}}{{TableRowN|  contact_ids                 | Optional   | Array of Integer          | list of contact ids &lt;br /&gt;
}}{{TableRowN|  device_ids                 | Optional   | Array of Integer          | list of device ids &lt;br /&gt;
}}{{TableRowN|  zone_ids                 | Optional   | Array of Integer          | list of zone ids &lt;br /&gt;
}}{{TableRowN|  user_ids               | Optional   | Array of Integer          | list of user ids&lt;br /&gt;
}}{{TableRowN|  event_types               | Optional   | Array of String          | list of event types&lt;br /&gt;
}}{{TableRowN|  start                     | Optional   | Integer           | the start time (Sensaphone timestamp)&lt;br /&gt;
}}{{TableRowN| end                      | Optional   | Integer           | the end time (Sensaphone timestamp)&lt;br /&gt;
}}{{TableRowN|  begin_offset         | Optional   | Integer           |  the beginning offset of the first record&lt;br /&gt;
}}{{TableRowN|  record_offset        | Optional   | Integer           |  the offset from the beginning&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===GET===&lt;br /&gt;
&lt;br /&gt;
'''Event Log Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | acctid                   | Integer        | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | session                | String         | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | request_type         | String       | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | history                  | Object      | The History object&lt;br /&gt;
}}{{TableRowN| history                | event_log                | Object       | Event Log Filter Options&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''Event Log Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | history                   | Object        | The history object&lt;br /&gt;
}}{{TableRowN| history                 | event_log                | Array of Objects         | The returned log&lt;br /&gt;
}}{{TableRowN| event_log                 |  event              | String         | Which event&lt;br /&gt;
}}{{TableRowN| event_log                 |  when              | String         | When it changed&lt;br /&gt;
}}{{TableRowN| event_log                 |  epoch              | Integer         | The epoch time&lt;br /&gt;
}}{{TableRowN| event_log                 |  type              | String         | The type&lt;br /&gt;
}}{{TableRowN| event_log                 |  source              | Object         | The sources of the event&lt;br /&gt;
}}{{TableRowN| source                 |  &amp;lt;source_name&amp;gt;              | String         | A source&lt;br /&gt;
}}{{TableRowN| history                  | event_log_filter         | Object       | Event Log Filter Options (Only returned in V2)&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
*Receive last 50 &amp;quot;Alarms Events&amp;quot; for a device:&lt;br /&gt;
*'''URI Mode:'''&lt;br /&gt;
  '''GET''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/event_log/device_ids/{1234}/event_types/{alarm}/begin_offset/{0}/record_offset/{50}&lt;br /&gt;
&lt;br /&gt;
*'''JSON Mode:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/event_log&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;: &amp;quot;read&amp;quot;,&lt;br /&gt;
  &amp;quot;history&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;event_log&amp;quot;: {&lt;br /&gt;
        &amp;quot;event_types&amp;quot; : [&amp;quot;alarm&amp;quot;],&lt;br /&gt;
        &amp;quot;device_ids&amp;quot; : [1234],&lt;br /&gt;
        &amp;quot;begin_offset&amp;quot; : 0,&lt;br /&gt;
        &amp;quot;record_offset&amp;quot; : 50&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;/div&gt;</summary>
		<author><name>Derek</name></author>	</entry>

	<entry>
		<id>https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/history&amp;diff=174</id>
		<title>Sensaphone.net API/history</title>
		<link rel="alternate" type="text/html" href="https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/history&amp;diff=174"/>
				<updated>2017-10-25T14:52:18Z</updated>
		
		<summary type="html">&lt;p&gt;Derek: /* Data Log */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[[Sensaphone.net API]]=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Access==&lt;br /&gt;
The History API allows access to the Audit Log, the Data Log, and the Event Log&lt;br /&gt;
&lt;br /&gt;
==Specifications==&lt;br /&gt;
The URI Mode for the History API is unique because it allows filtering options to be specified in pairs and can be added in any order.  Also, the array values are expressed as a common-separated list.&lt;br /&gt;
  /history/audit_log/var_ids/{1234,9876}/changes/{create}&lt;br /&gt;
&lt;br /&gt;
==Timestamps==&lt;br /&gt;
The history APIs such as the Data Log use Sensaphone encoded timestamps.  This allows the timestamps to be independent of the time zone of the client request, and return results adjusted to the time zone of the device, account, etc.  Seconds, minutes, hours, days, and months are 0-indexed, in other words the range of month values is [0,11].  The year value is 2000-based and limited to 100 years.&lt;br /&gt;
&lt;br /&gt;
In order to create a Sensaphone timestamp given the year, month, day, hours, minutes, and seconds, convert each parameter to its equivalent value in seconds.  For the example, in pseudo-code, a factory method would look as following:&lt;br /&gt;
&lt;br /&gt;
 getSensaphoneTimestamp( year, month, day, hours, minutes, seconds )  {&lt;br /&gt;
  return ((seconds                      % 60)) +&lt;br /&gt;
            ((minutes      * 60)        % 3600) +&lt;br /&gt;
            ((hours        * 3600)      % 86400) +&lt;br /&gt;
            ((day          * 86400)     % 2678400) + &lt;br /&gt;
            ((month        * 2678400)   % 32140800) + &lt;br /&gt;
            ((year % 100   * 32140800));  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==Audit Log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Audit Log Filter Options'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Property'''           |'''Status'''     | '''Type'''               | '''Description'''&lt;br /&gt;
}}{{TableRowN|  var_ids                 | Optional   | Array of Integer          | list of variable ids &lt;br /&gt;
}}{{TableRowN|  user_ids               | Optional   | Array of Integer          | list of user ids&lt;br /&gt;
}}{{TableRowN| changes               | Optional   | Array of String           | list of change types (&amp;quot;create&amp;quot;,&amp;quot;delete&amp;quot;,&amp;quot;update&amp;quot;)&lt;br /&gt;
}}{{TableRowN|  start                     | Optional   | Integer           | the start time (Sensaphone timestamp)&lt;br /&gt;
}}{{TableRowN| end                      | Optional   | Integer           | the end time (Sensaphone timestamp)&lt;br /&gt;
}}{{TableRowN|  begin_offset         | Optional   | Integer           |  the beginning offset of the first record&lt;br /&gt;
}}{{TableRowN|  record_offset        | Optional   | Integer           |  the offset from the beginning&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===GET===&lt;br /&gt;
&lt;br /&gt;
'''Audit Log Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | acctid                   | Integer        | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | session                | String         | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | request_type         | String       | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | history                  | Object      | The History object&lt;br /&gt;
}}{{TableRowN| history                | audit_log                | Object       | Audit Log Filter Options&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''Audit Log Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | history                   | Object        | The history object&lt;br /&gt;
}}{{TableRowN| history                 | audit_log                | Array of Objects         | The returned log&lt;br /&gt;
}}{{TableRowN| audit_log                 |  change              | String         | The change that occurred&lt;br /&gt;
}}{{TableRowN| audit_log                 |  who              | String         |  Who changed it&lt;br /&gt;
}}{{TableRowN| audit_log                 |  what              | String         | What changed&lt;br /&gt;
}}{{TableRowN| audit_log                 |  when              | String         | When it changed&lt;br /&gt;
}}{{TableRowN| audit_log                 |  epoch              | Integer         | The epoch time&lt;br /&gt;
}}{{TableRowN| history                  | audit_log_filter         | Object       | Audit Log Filter Options (Only returned in V2)&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
*Receive all changes for a variable:&lt;br /&gt;
*'''URI Mode:'''&lt;br /&gt;
  '''GET''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/audit_log/var_ids/{1234}&lt;br /&gt;
&lt;br /&gt;
*'''JSON Mode:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/audit_log/&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;: &amp;quot;read&amp;quot;,&lt;br /&gt;
  &amp;quot;history&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;audit_log&amp;quot;: {&lt;br /&gt;
        &amp;quot;var_ids&amp;quot; : [1234]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==Data Log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Data Log Filter Options'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Property'''           |'''Status'''     | '''Type'''               | '''Description'''&lt;br /&gt;
}}{{TableRowN|  log_points                 | Optional   | Array of Integer          | list of variable ids &lt;br /&gt;
}}{{TableRowN|  status               | Optional   | Array of String          | list of AlarmStatus (&amp;quot;normal&amp;quot;, &amp;quot;dependency&amp;quot;, &amp;quot;alarm&amp;quot;)&lt;br /&gt;
}}{{TableRowN|  start                     | Optional   | Integer           | the start time (Sensaphone timestamp)&lt;br /&gt;
}}{{TableRowN| end                      | Optional   | Integer           | the end time (Sensaphone timestamp)&lt;br /&gt;
}}{{TableRowN|  begin_offset         | Optional   | Integer           |  the beginning offset of the first record&lt;br /&gt;
}}{{TableRowN|  record_offset        | Optional   | Integer           |  the offset from the beginning&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===GET===&lt;br /&gt;
&lt;br /&gt;
'''Data Log Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | acctid                   | Integer        | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | session                | String         | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | request_type         | String       | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | history                  | Object      | The History object&lt;br /&gt;
}}{{TableRowN| history                | data_log                | Object       | Data Log Filter Options&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''Data Log Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | history                   | Object        | The history object&lt;br /&gt;
}}{{TableRowN| history                 | data_log                | Array of Objects         | The returned log&lt;br /&gt;
}}{{TableRowN| data_log                 |  record_id              | String         | The id of the record&lt;br /&gt;
}}{{TableRowN| data_log                 |  value              | String         |  The value of the variable&lt;br /&gt;
}}{{TableRowN| data_log                 |  variable              | String         | The variable id&lt;br /&gt;
}}{{TableRowN| data_log                 |  is_alarm              | String         | Is an alarm&lt;br /&gt;
}}{{TableRowN| data_log                 |  epoch              | Integer         | The epoch time&lt;br /&gt;
}}{{TableRowN| history                  | data_log_filter         | Object       | Audit Log Filter Options (Only returned in V2)&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
*Receive the last 50 logged datas for a log point&lt;br /&gt;
*'''URI Mode:'''&lt;br /&gt;
  '''GET''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/data_log/log_points/{1234}/begin_offset/{0}/record_offset/{50}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''JSON Mode:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/data_log&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;: &amp;quot;read&amp;quot;,&lt;br /&gt;
  &amp;quot;history&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;data_log&amp;quot;: {&lt;br /&gt;
        &amp;quot;log_points&amp;quot; : [1234],&lt;br /&gt;
        &amp;quot;begin_offset&amp;quot; : 0,&lt;br /&gt;
        &amp;quot;record_offset&amp;quot; : 50&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==Data Log Points==&lt;br /&gt;
Poll the Data Log Points to get the possible logable points to use for the Data Log&lt;br /&gt;
&lt;br /&gt;
===GET===&lt;br /&gt;
&lt;br /&gt;
'''Data Log Points Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | acctid                   | Integer        | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | session                | String         | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | request_type         | String       | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | history                  | Object      | The History object&lt;br /&gt;
}}{{TableRowN| history                | data_log_points                | Object       | &lt;br /&gt;
}}{{TableRowN| data_log_points                | resource_type                | String       | the name of the resource, e.g. &amp;quot;device&amp;quot;&lt;br /&gt;
}}{{TableRowN| data_log_points                | (id_name)                | Integer       |  The ID of the resource, e.g. &amp;quot;device_id&amp;quot;&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''Data Log Points Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | history                   | Object        | The history object&lt;br /&gt;
}}{{TableRowN| history                 | data_log_points               |  Object         | The returned log&lt;br /&gt;
}}{{TableRowN| data_log_points                | resource_type                | String       | the name of the resource, e.g. &amp;quot;device&amp;quot;&lt;br /&gt;
}}{{TableRowN| data_log_points                | (id_name)                | Integer       |  The ID of the resource, e.g. &amp;quot;device_id&amp;quot;&lt;br /&gt;
}}{{TableRowN| data_log_points                | log_points                | Array of Objects       |  The logable points&lt;br /&gt;
}}{{TableRowN| log_points                        | category                     | String           |  The type of logable point&lt;br /&gt;
}}{{TableRowN| log_points                        | (id_name)                     | Integer           |  The ID of the resource, e.g. &amp;quot;zone_id&amp;quot;&lt;br /&gt;
}}{{TableRowN| log_points                        | log_point                    | Integer           |  The logable point ID&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
*Receive all data logable points for a device:&lt;br /&gt;
*'''URI Mode:'''&lt;br /&gt;
  '''GET''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/data_log_points/resource_type/{device}/device_id/{1234}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''JSON Mode:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/data_log_points&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;: &amp;quot;read&amp;quot;,&lt;br /&gt;
  &amp;quot;history&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;data_log_points&amp;quot;: {&lt;br /&gt;
        &amp;quot;resource_type&amp;quot; : &amp;quot;device&amp;quot;,&lt;br /&gt;
        &amp;quot;device_id&amp;quot; : 1234&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==Event Log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Event Log Filter Options'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Property'''           |'''Status'''     | '''Type'''               | '''Description'''&lt;br /&gt;
}}{{TableRowN|  contact_ids                 | Optional   | Array of Integer          | list of contact ids &lt;br /&gt;
}}{{TableRowN|  device_ids                 | Optional   | Array of Integer          | list of device ids &lt;br /&gt;
}}{{TableRowN|  zone_ids                 | Optional   | Array of Integer          | list of zone ids &lt;br /&gt;
}}{{TableRowN|  user_ids               | Optional   | Array of Integer          | list of user ids&lt;br /&gt;
}}{{TableRowN|  event_types               | Optional   | Array of String          | list of event types&lt;br /&gt;
}}{{TableRowN|  start                     | Optional   | Integer           | the start time (unix time)&lt;br /&gt;
}}{{TableRowN| end                      | Optional   | Integer           | the end time (unix time)&lt;br /&gt;
}}{{TableRowN|  begin_offset         | Optional   | Integer           |  the beginning offset of the first record&lt;br /&gt;
}}{{TableRowN|  record_offset        | Optional   | Integer           |  the offset from the beginning&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===GET===&lt;br /&gt;
&lt;br /&gt;
'''Event Log Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | acctid                   | Integer        | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | session                | String         | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | request_type         | String       | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | history                  | Object      | The History object&lt;br /&gt;
}}{{TableRowN| history                | event_log                | Object       | Event Log Filter Options&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''Event Log Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | history                   | Object        | The history object&lt;br /&gt;
}}{{TableRowN| history                 | event_log                | Array of Objects         | The returned log&lt;br /&gt;
}}{{TableRowN| event_log                 |  event              | String         | Which event&lt;br /&gt;
}}{{TableRowN| event_log                 |  when              | String         | When it changed&lt;br /&gt;
}}{{TableRowN| event_log                 |  epoch              | Integer         | The epoch time&lt;br /&gt;
}}{{TableRowN| event_log                 |  type              | String         | The type&lt;br /&gt;
}}{{TableRowN| event_log                 |  source              | Object         | The sources of the event&lt;br /&gt;
}}{{TableRowN| source                 |  &amp;lt;source_name&amp;gt;              | String         | A source&lt;br /&gt;
}}{{TableRowN| history                  | event_log_filter         | Object       | Event Log Filter Options (Only returned in V2)&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
*Receive last 50 &amp;quot;Alarms Events&amp;quot; for a device:&lt;br /&gt;
*'''URI Mode:'''&lt;br /&gt;
  '''GET''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/event_log/device_ids/{1234}/event_types/{alarm}/begin_offset/{0}/record_offset/{50}&lt;br /&gt;
&lt;br /&gt;
*'''JSON Mode:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/event_log&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;: &amp;quot;read&amp;quot;,&lt;br /&gt;
  &amp;quot;history&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;event_log&amp;quot;: {&lt;br /&gt;
        &amp;quot;event_types&amp;quot; : [&amp;quot;alarm&amp;quot;],&lt;br /&gt;
        &amp;quot;device_ids&amp;quot; : [1234],&lt;br /&gt;
        &amp;quot;begin_offset&amp;quot; : 0,&lt;br /&gt;
        &amp;quot;record_offset&amp;quot; : 50&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;/div&gt;</summary>
		<author><name>Derek</name></author>	</entry>

	<entry>
		<id>https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/history&amp;diff=173</id>
		<title>Sensaphone.net API/history</title>
		<link rel="alternate" type="text/html" href="https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/history&amp;diff=173"/>
				<updated>2017-10-25T14:51:56Z</updated>
		
		<summary type="html">&lt;p&gt;Derek: /* Audit Log */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[[Sensaphone.net API]]=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Access==&lt;br /&gt;
The History API allows access to the Audit Log, the Data Log, and the Event Log&lt;br /&gt;
&lt;br /&gt;
==Specifications==&lt;br /&gt;
The URI Mode for the History API is unique because it allows filtering options to be specified in pairs and can be added in any order.  Also, the array values are expressed as a common-separated list.&lt;br /&gt;
  /history/audit_log/var_ids/{1234,9876}/changes/{create}&lt;br /&gt;
&lt;br /&gt;
==Timestamps==&lt;br /&gt;
The history APIs such as the Data Log use Sensaphone encoded timestamps.  This allows the timestamps to be independent of the time zone of the client request, and return results adjusted to the time zone of the device, account, etc.  Seconds, minutes, hours, days, and months are 0-indexed, in other words the range of month values is [0,11].  The year value is 2000-based and limited to 100 years.&lt;br /&gt;
&lt;br /&gt;
In order to create a Sensaphone timestamp given the year, month, day, hours, minutes, and seconds, convert each parameter to its equivalent value in seconds.  For the example, in pseudo-code, a factory method would look as following:&lt;br /&gt;
&lt;br /&gt;
 getSensaphoneTimestamp( year, month, day, hours, minutes, seconds )  {&lt;br /&gt;
  return ((seconds                      % 60)) +&lt;br /&gt;
            ((minutes      * 60)        % 3600) +&lt;br /&gt;
            ((hours        * 3600)      % 86400) +&lt;br /&gt;
            ((day          * 86400)     % 2678400) + &lt;br /&gt;
            ((month        * 2678400)   % 32140800) + &lt;br /&gt;
            ((year % 100   * 32140800));  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==Audit Log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Audit Log Filter Options'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Property'''           |'''Status'''     | '''Type'''               | '''Description'''&lt;br /&gt;
}}{{TableRowN|  var_ids                 | Optional   | Array of Integer          | list of variable ids &lt;br /&gt;
}}{{TableRowN|  user_ids               | Optional   | Array of Integer          | list of user ids&lt;br /&gt;
}}{{TableRowN| changes               | Optional   | Array of String           | list of change types (&amp;quot;create&amp;quot;,&amp;quot;delete&amp;quot;,&amp;quot;update&amp;quot;)&lt;br /&gt;
}}{{TableRowN|  start                     | Optional   | Integer           | the start time (Sensaphone timestamp)&lt;br /&gt;
}}{{TableRowN| end                      | Optional   | Integer           | the end time (Sensaphone timestamp)&lt;br /&gt;
}}{{TableRowN|  begin_offset         | Optional   | Integer           |  the beginning offset of the first record&lt;br /&gt;
}}{{TableRowN|  record_offset        | Optional   | Integer           |  the offset from the beginning&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===GET===&lt;br /&gt;
&lt;br /&gt;
'''Audit Log Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | acctid                   | Integer        | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | session                | String         | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | request_type         | String       | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | history                  | Object      | The History object&lt;br /&gt;
}}{{TableRowN| history                | audit_log                | Object       | Audit Log Filter Options&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''Audit Log Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | history                   | Object        | The history object&lt;br /&gt;
}}{{TableRowN| history                 | audit_log                | Array of Objects         | The returned log&lt;br /&gt;
}}{{TableRowN| audit_log                 |  change              | String         | The change that occurred&lt;br /&gt;
}}{{TableRowN| audit_log                 |  who              | String         |  Who changed it&lt;br /&gt;
}}{{TableRowN| audit_log                 |  what              | String         | What changed&lt;br /&gt;
}}{{TableRowN| audit_log                 |  when              | String         | When it changed&lt;br /&gt;
}}{{TableRowN| audit_log                 |  epoch              | Integer         | The epoch time&lt;br /&gt;
}}{{TableRowN| history                  | audit_log_filter         | Object       | Audit Log Filter Options (Only returned in V2)&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
*Receive all changes for a variable:&lt;br /&gt;
*'''URI Mode:'''&lt;br /&gt;
  '''GET''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/audit_log/var_ids/{1234}&lt;br /&gt;
&lt;br /&gt;
*'''JSON Mode:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/audit_log/&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;: &amp;quot;read&amp;quot;,&lt;br /&gt;
  &amp;quot;history&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;audit_log&amp;quot;: {&lt;br /&gt;
        &amp;quot;var_ids&amp;quot; : [1234]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==Data Log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Data Log Filter Options'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Property'''           |'''Status'''     | '''Type'''               | '''Description'''&lt;br /&gt;
}}{{TableRowN|  log_points                 | Optional   | Array of Integer          | list of variable ids &lt;br /&gt;
}}{{TableRowN|  status               | Optional   | Array of String          | list of AlarmStatus (&amp;quot;normal&amp;quot;, &amp;quot;dependency&amp;quot;, &amp;quot;alarm&amp;quot;)&lt;br /&gt;
}}{{TableRowN|  start                     | Optional   | Integer           | the start time (unix time)&lt;br /&gt;
}}{{TableRowN| end                      | Optional   | Integer           | the end time (unix time)&lt;br /&gt;
}}{{TableRowN|  begin_offset         | Optional   | Integer           |  the beginning offset of the first record&lt;br /&gt;
}}{{TableRowN|  record_offset        | Optional   | Integer           |  the offset from the beginning&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===GET===&lt;br /&gt;
&lt;br /&gt;
'''Data Log Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | acctid                   | Integer        | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | session                | String         | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | request_type         | String       | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | history                  | Object      | The History object&lt;br /&gt;
}}{{TableRowN| history                | data_log                | Object       | Data Log Filter Options&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''Data Log Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | history                   | Object        | The history object&lt;br /&gt;
}}{{TableRowN| history                 | data_log                | Array of Objects         | The returned log&lt;br /&gt;
}}{{TableRowN| data_log                 |  record_id              | String         | The id of the record&lt;br /&gt;
}}{{TableRowN| data_log                 |  value              | String         |  The value of the variable&lt;br /&gt;
}}{{TableRowN| data_log                 |  variable              | String         | The variable id&lt;br /&gt;
}}{{TableRowN| data_log                 |  is_alarm              | String         | Is an alarm&lt;br /&gt;
}}{{TableRowN| data_log                 |  epoch              | Integer         | The epoch time&lt;br /&gt;
}}{{TableRowN| history                  | data_log_filter         | Object       | Audit Log Filter Options (Only returned in V2)&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
*Receive the last 50 logged datas for a log point&lt;br /&gt;
*'''URI Mode:'''&lt;br /&gt;
  '''GET''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/data_log/log_points/{1234}/begin_offset/{0}/record_offset/{50}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''JSON Mode:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/data_log&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;: &amp;quot;read&amp;quot;,&lt;br /&gt;
  &amp;quot;history&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;data_log&amp;quot;: {&lt;br /&gt;
        &amp;quot;log_points&amp;quot; : [1234],&lt;br /&gt;
        &amp;quot;begin_offset&amp;quot; : 0,&lt;br /&gt;
        &amp;quot;record_offset&amp;quot; : 50&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
==Data Log Points==&lt;br /&gt;
Poll the Data Log Points to get the possible logable points to use for the Data Log&lt;br /&gt;
&lt;br /&gt;
===GET===&lt;br /&gt;
&lt;br /&gt;
'''Data Log Points Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | acctid                   | Integer        | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | session                | String         | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | request_type         | String       | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | history                  | Object      | The History object&lt;br /&gt;
}}{{TableRowN| history                | data_log_points                | Object       | &lt;br /&gt;
}}{{TableRowN| data_log_points                | resource_type                | String       | the name of the resource, e.g. &amp;quot;device&amp;quot;&lt;br /&gt;
}}{{TableRowN| data_log_points                | (id_name)                | Integer       |  The ID of the resource, e.g. &amp;quot;device_id&amp;quot;&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''Data Log Points Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | history                   | Object        | The history object&lt;br /&gt;
}}{{TableRowN| history                 | data_log_points               |  Object         | The returned log&lt;br /&gt;
}}{{TableRowN| data_log_points                | resource_type                | String       | the name of the resource, e.g. &amp;quot;device&amp;quot;&lt;br /&gt;
}}{{TableRowN| data_log_points                | (id_name)                | Integer       |  The ID of the resource, e.g. &amp;quot;device_id&amp;quot;&lt;br /&gt;
}}{{TableRowN| data_log_points                | log_points                | Array of Objects       |  The logable points&lt;br /&gt;
}}{{TableRowN| log_points                        | category                     | String           |  The type of logable point&lt;br /&gt;
}}{{TableRowN| log_points                        | (id_name)                     | Integer           |  The ID of the resource, e.g. &amp;quot;zone_id&amp;quot;&lt;br /&gt;
}}{{TableRowN| log_points                        | log_point                    | Integer           |  The logable point ID&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
*Receive all data logable points for a device:&lt;br /&gt;
*'''URI Mode:'''&lt;br /&gt;
  '''GET''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/data_log_points/resource_type/{device}/device_id/{1234}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''JSON Mode:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/data_log_points&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;: &amp;quot;read&amp;quot;,&lt;br /&gt;
  &amp;quot;history&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;data_log_points&amp;quot;: {&lt;br /&gt;
        &amp;quot;resource_type&amp;quot; : &amp;quot;device&amp;quot;,&lt;br /&gt;
        &amp;quot;device_id&amp;quot; : 1234&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==Event Log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Event Log Filter Options'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Property'''           |'''Status'''     | '''Type'''               | '''Description'''&lt;br /&gt;
}}{{TableRowN|  contact_ids                 | Optional   | Array of Integer          | list of contact ids &lt;br /&gt;
}}{{TableRowN|  device_ids                 | Optional   | Array of Integer          | list of device ids &lt;br /&gt;
}}{{TableRowN|  zone_ids                 | Optional   | Array of Integer          | list of zone ids &lt;br /&gt;
}}{{TableRowN|  user_ids               | Optional   | Array of Integer          | list of user ids&lt;br /&gt;
}}{{TableRowN|  event_types               | Optional   | Array of String          | list of event types&lt;br /&gt;
}}{{TableRowN|  start                     | Optional   | Integer           | the start time (unix time)&lt;br /&gt;
}}{{TableRowN| end                      | Optional   | Integer           | the end time (unix time)&lt;br /&gt;
}}{{TableRowN|  begin_offset         | Optional   | Integer           |  the beginning offset of the first record&lt;br /&gt;
}}{{TableRowN|  record_offset        | Optional   | Integer           |  the offset from the beginning&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===GET===&lt;br /&gt;
&lt;br /&gt;
'''Event Log Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | acctid                   | Integer        | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | session                | String         | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | request_type         | String       | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | history                  | Object      | The History object&lt;br /&gt;
}}{{TableRowN| history                | event_log                | Object       | Event Log Filter Options&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''Event Log Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | history                   | Object        | The history object&lt;br /&gt;
}}{{TableRowN| history                 | event_log                | Array of Objects         | The returned log&lt;br /&gt;
}}{{TableRowN| event_log                 |  event              | String         | Which event&lt;br /&gt;
}}{{TableRowN| event_log                 |  when              | String         | When it changed&lt;br /&gt;
}}{{TableRowN| event_log                 |  epoch              | Integer         | The epoch time&lt;br /&gt;
}}{{TableRowN| event_log                 |  type              | String         | The type&lt;br /&gt;
}}{{TableRowN| event_log                 |  source              | Object         | The sources of the event&lt;br /&gt;
}}{{TableRowN| source                 |  &amp;lt;source_name&amp;gt;              | String         | A source&lt;br /&gt;
}}{{TableRowN| history                  | event_log_filter         | Object       | Event Log Filter Options (Only returned in V2)&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
*Receive last 50 &amp;quot;Alarms Events&amp;quot; for a device:&lt;br /&gt;
*'''URI Mode:'''&lt;br /&gt;
  '''GET''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/event_log/device_ids/{1234}/event_types/{alarm}/begin_offset/{0}/record_offset/{50}&lt;br /&gt;
&lt;br /&gt;
*'''JSON Mode:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/event_log&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;: &amp;quot;read&amp;quot;,&lt;br /&gt;
  &amp;quot;history&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;event_log&amp;quot;: {&lt;br /&gt;
        &amp;quot;event_types&amp;quot; : [&amp;quot;alarm&amp;quot;],&lt;br /&gt;
        &amp;quot;device_ids&amp;quot; : [1234],&lt;br /&gt;
        &amp;quot;begin_offset&amp;quot; : 0,&lt;br /&gt;
        &amp;quot;record_offset&amp;quot; : 50&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;/div&gt;</summary>
		<author><name>Derek</name></author>	</entry>

	<entry>
		<id>https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/history&amp;diff=172</id>
		<title>Sensaphone.net API/history</title>
		<link rel="alternate" type="text/html" href="https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/history&amp;diff=172"/>
				<updated>2017-10-25T14:32:45Z</updated>
		
		<summary type="html">&lt;p&gt;Derek: /* Timestamps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[[Sensaphone.net API]]=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Access==&lt;br /&gt;
The History API allows access to the Audit Log, the Data Log, and the Event Log&lt;br /&gt;
&lt;br /&gt;
==Specifications==&lt;br /&gt;
The URI Mode for the History API is unique because it allows filtering options to be specified in pairs and can be added in any order.  Also, the array values are expressed as a common-separated list.&lt;br /&gt;
  /history/audit_log/var_ids/{1234,9876}/changes/{create}&lt;br /&gt;
&lt;br /&gt;
==Timestamps==&lt;br /&gt;
The history APIs such as the Data Log use Sensaphone encoded timestamps.  This allows the timestamps to be independent of the time zone of the client request, and return results adjusted to the time zone of the device, account, etc.  Seconds, minutes, hours, days, and months are 0-indexed, in other words the range of month values is [0,11].  The year value is 2000-based and limited to 100 years.&lt;br /&gt;
&lt;br /&gt;
In order to create a Sensaphone timestamp given the year, month, day, hours, minutes, and seconds, convert each parameter to its equivalent value in seconds.  For the example, in pseudo-code, a factory method would look as following:&lt;br /&gt;
&lt;br /&gt;
 getSensaphoneTimestamp( year, month, day, hours, minutes, seconds )  {&lt;br /&gt;
  return ((seconds                      % 60)) +&lt;br /&gt;
            ((minutes      * 60)        % 3600) +&lt;br /&gt;
            ((hours        * 3600)      % 86400) +&lt;br /&gt;
            ((day          * 86400)     % 2678400) + &lt;br /&gt;
            ((month        * 2678400)   % 32140800) + &lt;br /&gt;
            ((year % 100   * 32140800));  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==Audit Log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Audit Log Filter Options'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Property'''           |'''Status'''     | '''Type'''               | '''Description'''&lt;br /&gt;
}}{{TableRowN|  var_ids                 | Optional   | Array of Integer          | list of variable ids &lt;br /&gt;
}}{{TableRowN|  user_ids               | Optional   | Array of Integer          | list of user ids&lt;br /&gt;
}}{{TableRowN| changes               | Optional   | Array of String           | list of change types (&amp;quot;create&amp;quot;,&amp;quot;delete&amp;quot;,&amp;quot;update&amp;quot;)&lt;br /&gt;
}}{{TableRowN|  start                     | Optional   | Integer           | the start time (unix time)&lt;br /&gt;
}}{{TableRowN| end                      | Optional   | Integer           | the end time (unix time)&lt;br /&gt;
}}{{TableRowN|  begin_offset         | Optional   | Integer           |  the beginning offset of the first record&lt;br /&gt;
}}{{TableRowN|  record_offset        | Optional   | Integer           |  the offset from the beginning&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===GET===&lt;br /&gt;
&lt;br /&gt;
'''Audit Log Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | acctid                   | Integer        | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | session                | String         | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | request_type         | String       | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | history                  | Object      | The History object&lt;br /&gt;
}}{{TableRowN| history                | audit_log                | Object       | Audit Log Filter Options&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''Audit Log Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | history                   | Object        | The history object&lt;br /&gt;
}}{{TableRowN| history                 | audit_log                | Array of Objects         | The returned log&lt;br /&gt;
}}{{TableRowN| audit_log                 |  change              | String         | The change that occurred&lt;br /&gt;
}}{{TableRowN| audit_log                 |  who              | String         |  Who changed it&lt;br /&gt;
}}{{TableRowN| audit_log                 |  what              | String         | What changed&lt;br /&gt;
}}{{TableRowN| audit_log                 |  when              | String         | When it changed&lt;br /&gt;
}}{{TableRowN| audit_log                 |  epoch              | Integer         | The epoch time&lt;br /&gt;
}}{{TableRowN| history                  | audit_log_filter         | Object       | Audit Log Filter Options (Only returned in V2)&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
*Receive all changes for a variable:&lt;br /&gt;
*'''URI Mode:'''&lt;br /&gt;
  '''GET''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/audit_log/var_ids/{1234}&lt;br /&gt;
&lt;br /&gt;
*'''JSON Mode:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/audit_log/&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;: &amp;quot;read&amp;quot;,&lt;br /&gt;
  &amp;quot;history&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;audit_log&amp;quot;: {&lt;br /&gt;
        &amp;quot;var_ids&amp;quot; : [1234]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==Data Log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Data Log Filter Options'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Property'''           |'''Status'''     | '''Type'''               | '''Description'''&lt;br /&gt;
}}{{TableRowN|  log_points                 | Optional   | Array of Integer          | list of variable ids &lt;br /&gt;
}}{{TableRowN|  status               | Optional   | Array of String          | list of AlarmStatus (&amp;quot;normal&amp;quot;, &amp;quot;dependency&amp;quot;, &amp;quot;alarm&amp;quot;)&lt;br /&gt;
}}{{TableRowN|  start                     | Optional   | Integer           | the start time (unix time)&lt;br /&gt;
}}{{TableRowN| end                      | Optional   | Integer           | the end time (unix time)&lt;br /&gt;
}}{{TableRowN|  begin_offset         | Optional   | Integer           |  the beginning offset of the first record&lt;br /&gt;
}}{{TableRowN|  record_offset        | Optional   | Integer           |  the offset from the beginning&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===GET===&lt;br /&gt;
&lt;br /&gt;
'''Data Log Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | acctid                   | Integer        | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | session                | String         | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | request_type         | String       | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | history                  | Object      | The History object&lt;br /&gt;
}}{{TableRowN| history                | data_log                | Object       | Data Log Filter Options&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''Data Log Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | history                   | Object        | The history object&lt;br /&gt;
}}{{TableRowN| history                 | data_log                | Array of Objects         | The returned log&lt;br /&gt;
}}{{TableRowN| data_log                 |  record_id              | String         | The id of the record&lt;br /&gt;
}}{{TableRowN| data_log                 |  value              | String         |  The value of the variable&lt;br /&gt;
}}{{TableRowN| data_log                 |  variable              | String         | The variable id&lt;br /&gt;
}}{{TableRowN| data_log                 |  is_alarm              | String         | Is an alarm&lt;br /&gt;
}}{{TableRowN| data_log                 |  epoch              | Integer         | The epoch time&lt;br /&gt;
}}{{TableRowN| history                  | data_log_filter         | Object       | Audit Log Filter Options (Only returned in V2)&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
*Receive the last 50 logged datas for a log point&lt;br /&gt;
*'''URI Mode:'''&lt;br /&gt;
  '''GET''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/data_log/log_points/{1234}/begin_offset/{0}/record_offset/{50}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''JSON Mode:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/data_log&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;: &amp;quot;read&amp;quot;,&lt;br /&gt;
  &amp;quot;history&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;data_log&amp;quot;: {&lt;br /&gt;
        &amp;quot;log_points&amp;quot; : [1234],&lt;br /&gt;
        &amp;quot;begin_offset&amp;quot; : 0,&lt;br /&gt;
        &amp;quot;record_offset&amp;quot; : 50&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
==Data Log Points==&lt;br /&gt;
Poll the Data Log Points to get the possible logable points to use for the Data Log&lt;br /&gt;
&lt;br /&gt;
===GET===&lt;br /&gt;
&lt;br /&gt;
'''Data Log Points Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | acctid                   | Integer        | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | session                | String         | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | request_type         | String       | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | history                  | Object      | The History object&lt;br /&gt;
}}{{TableRowN| history                | data_log_points                | Object       | &lt;br /&gt;
}}{{TableRowN| data_log_points                | resource_type                | String       | the name of the resource, e.g. &amp;quot;device&amp;quot;&lt;br /&gt;
}}{{TableRowN| data_log_points                | (id_name)                | Integer       |  The ID of the resource, e.g. &amp;quot;device_id&amp;quot;&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''Data Log Points Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | history                   | Object        | The history object&lt;br /&gt;
}}{{TableRowN| history                 | data_log_points               |  Object         | The returned log&lt;br /&gt;
}}{{TableRowN| data_log_points                | resource_type                | String       | the name of the resource, e.g. &amp;quot;device&amp;quot;&lt;br /&gt;
}}{{TableRowN| data_log_points                | (id_name)                | Integer       |  The ID of the resource, e.g. &amp;quot;device_id&amp;quot;&lt;br /&gt;
}}{{TableRowN| data_log_points                | log_points                | Array of Objects       |  The logable points&lt;br /&gt;
}}{{TableRowN| log_points                        | category                     | String           |  The type of logable point&lt;br /&gt;
}}{{TableRowN| log_points                        | (id_name)                     | Integer           |  The ID of the resource, e.g. &amp;quot;zone_id&amp;quot;&lt;br /&gt;
}}{{TableRowN| log_points                        | log_point                    | Integer           |  The logable point ID&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
*Receive all data logable points for a device:&lt;br /&gt;
*'''URI Mode:'''&lt;br /&gt;
  '''GET''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/data_log_points/resource_type/{device}/device_id/{1234}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''JSON Mode:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/data_log_points&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;: &amp;quot;read&amp;quot;,&lt;br /&gt;
  &amp;quot;history&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;data_log_points&amp;quot;: {&lt;br /&gt;
        &amp;quot;resource_type&amp;quot; : &amp;quot;device&amp;quot;,&lt;br /&gt;
        &amp;quot;device_id&amp;quot; : 1234&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==Event Log==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Event Log Filter Options'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Property'''           |'''Status'''     | '''Type'''               | '''Description'''&lt;br /&gt;
}}{{TableRowN|  contact_ids                 | Optional   | Array of Integer          | list of contact ids &lt;br /&gt;
}}{{TableRowN|  device_ids                 | Optional   | Array of Integer          | list of device ids &lt;br /&gt;
}}{{TableRowN|  zone_ids                 | Optional   | Array of Integer          | list of zone ids &lt;br /&gt;
}}{{TableRowN|  user_ids               | Optional   | Array of Integer          | list of user ids&lt;br /&gt;
}}{{TableRowN|  event_types               | Optional   | Array of String          | list of event types&lt;br /&gt;
}}{{TableRowN|  start                     | Optional   | Integer           | the start time (unix time)&lt;br /&gt;
}}{{TableRowN| end                      | Optional   | Integer           | the end time (unix time)&lt;br /&gt;
}}{{TableRowN|  begin_offset         | Optional   | Integer           |  the beginning offset of the first record&lt;br /&gt;
}}{{TableRowN|  record_offset        | Optional   | Integer           |  the offset from the beginning&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===GET===&lt;br /&gt;
&lt;br /&gt;
'''Event Log Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | acctid                   | Integer        | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | session                | String         | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | request_type         | String       | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                  | history                  | Object      | The History object&lt;br /&gt;
}}{{TableRowN| history                | event_log                | Object       | Event Log Filter Options&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''Event Log Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''| '''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | history                   | Object        | The history object&lt;br /&gt;
}}{{TableRowN| history                 | event_log                | Array of Objects         | The returned log&lt;br /&gt;
}}{{TableRowN| event_log                 |  event              | String         | Which event&lt;br /&gt;
}}{{TableRowN| event_log                 |  when              | String         | When it changed&lt;br /&gt;
}}{{TableRowN| event_log                 |  epoch              | Integer         | The epoch time&lt;br /&gt;
}}{{TableRowN| event_log                 |  type              | String         | The type&lt;br /&gt;
}}{{TableRowN| event_log                 |  source              | Object         | The sources of the event&lt;br /&gt;
}}{{TableRowN| source                 |  &amp;lt;source_name&amp;gt;              | String         | A source&lt;br /&gt;
}}{{TableRowN| history                  | event_log_filter         | Object       | Event Log Filter Options (Only returned in V2)&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
*Receive last 50 &amp;quot;Alarms Events&amp;quot; for a device:&lt;br /&gt;
*'''URI Mode:'''&lt;br /&gt;
  '''GET''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/event_log/device_ids/{1234}/event_types/{alarm}/begin_offset/{0}/record_offset/{50}&lt;br /&gt;
&lt;br /&gt;
*'''JSON Mode:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/{ACCOUNT}/{SESSION}/history/event_log&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;: &amp;quot;read&amp;quot;,&lt;br /&gt;
  &amp;quot;history&amp;quot;:&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;event_log&amp;quot;: {&lt;br /&gt;
        &amp;quot;event_types&amp;quot; : [&amp;quot;alarm&amp;quot;],&lt;br /&gt;
        &amp;quot;device_ids&amp;quot; : [1234],&lt;br /&gt;
        &amp;quot;begin_offset&amp;quot; : 0,&lt;br /&gt;
        &amp;quot;record_offset&amp;quot; : 50&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;/div&gt;</summary>
		<author><name>Derek</name></author>	</entry>

	<entry>
		<id>https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/login&amp;diff=171</id>
		<title>Sensaphone.net API/login</title>
		<link rel="alternate" type="text/html" href="https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/login&amp;diff=171"/>
				<updated>2017-10-10T19:11:26Z</updated>
		
		<summary type="html">&lt;p&gt;Derek: /* DELETE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[[Sensaphone.net API]]=&lt;br /&gt;
&lt;br /&gt;
The Login API will be used to log in to the Sensaphone.net system. When a user logs in with their username and password they will be assigned a session UUID. The session UUID will have a corresponding time stamp and a timed expiration for their session. The session UUID and statically assigned Account ID will be used as the primary identifier instead of including a username and password in subsequent URI requests. &lt;br /&gt;
&lt;br /&gt;
==Example Call==&lt;br /&gt;
    https://sensaphone.net/api/v1/login/{USERNAME}/{PASSWORD}&lt;br /&gt;
&lt;br /&gt;
==Values==&lt;br /&gt;
*Username&lt;br /&gt;
*Password&lt;br /&gt;
*Session UUID&lt;br /&gt;
*Session Time stamp&lt;br /&gt;
*Session Expiration&lt;br /&gt;
&lt;br /&gt;
==Example Requests==&lt;br /&gt;
===GET===&lt;br /&gt;
'''URI Mode Request URI's:'''&lt;br /&gt;
*Receive Login information &lt;br /&gt;
    '''GET'''  https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSION}/login&lt;br /&gt;
*Receive a Login timestamp for a session &lt;br /&gt;
    '''GET''' https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSION}/login/login_timestamp&lt;br /&gt;
*Receive the number of seconds until a session expires &lt;br /&gt;
    '''GET''' https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSION}/login/session_expiration &lt;br /&gt;
&lt;br /&gt;
'''JSON MODE Request URI:'''&lt;br /&gt;
*Receive Login information &lt;br /&gt;
    '''POST'''  https://rest.sensaphone.net/api/v1/login&lt;br /&gt;
&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Request Property'''  | '''Status''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| acctid                       | Required     | Integer    | Static ID of user&lt;br /&gt;
}}{{TableRowN| session                         | Required     | Integer    | Session ID of user&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Response Property'''          | '''Included''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| login_timestamp                 | Optional     | String     | Time stamp of last log in&lt;br /&gt;
}}{{TableRowN| session_expiration              | Optional     | Integer    | Seconds until log in expiration&lt;br /&gt;
}}{{TableRowN| user_id              | Optional     | Integer    | ID of the logged in user&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
====Example JSON====&lt;br /&gt;
Log in with a username and password using JSON mode.&lt;br /&gt;
*'''Request JSON:'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;:&amp;quot;create&amp;quot;,&lt;br /&gt;
  &amp;quot;resource&amp;quot;: &amp;quot;login&amp;quot;,&lt;br /&gt;
  &amp;quot;user_name&amp;quot;: &amp;quot;myusername&amp;quot;,&lt;br /&gt;
  &amp;quot;password&amp;quot;: &amp;quot;pass123&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*'''Response JSON:'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;result&amp;quot;: {&lt;br /&gt;
   &amp;quot;success&amp;quot;: true,&lt;br /&gt;
   &amp;quot;code&amp;quot;: 0,&lt;br /&gt;
   &amp;quot;message&amp;quot;: &amp;quot;Success&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;response&amp;quot;: {&lt;br /&gt;
   &amp;quot;acctid&amp;quot;: 987654,&lt;br /&gt;
   &amp;quot;session&amp;quot;: &amp;quot;0123-4567-8901&amp;quot;,&lt;br /&gt;
   &amp;quot;login_timestamp&amp;quot;: 1499459402,&lt;br /&gt;
   &amp;quot;session_expiration&amp;quot;: 86400,&lt;br /&gt;
   &amp;quot;user_id&amp;quot;: 00000001&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Receive Login information for a given session UUID.&lt;br /&gt;
&lt;br /&gt;
*'''Request JSON:'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;request_type:&amp;quot;read&amp;quot;,&lt;br /&gt;
  &amp;quot;resource&amp;quot;:&amp;quot;login&amp;quot;,&lt;br /&gt;
  &amp;quot;acctid&amp;quot;:987654,&lt;br /&gt;
  &amp;quot;session&amp;quot;:&amp;quot;0123-4567-8901&amp;quot;,&lt;br /&gt;
  &amp;quot;login&amp;quot;:null&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*'''Response JSON:'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;result&amp;quot;:&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;success: true,&lt;br /&gt;
    &amp;quot;code&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;message&amp;quot;:&amp;quot;OK&amp;quot;,&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;response&amp;quot;:&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;login_timestamp&amp;quot;:&amp;quot;2014-12-31 23:59:59&amp;quot;,&lt;br /&gt;
      &amp;quot;session_expiration&amp;quot;:60&lt;br /&gt;
     }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
===PUT===&lt;br /&gt;
PUT will be used only to update a Login session.&lt;br /&gt;
&lt;br /&gt;
'''URI Mode Request URI:'''&lt;br /&gt;
*Request to update a Login session &lt;br /&gt;
   '''PUT'''  https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSION}/login&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
   '''POST'''  https://rest.sensaphone.net/api/v1/login&lt;br /&gt;
&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Request Property'''  | '''Status''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| acctid                  | Required     | Integer    | Static ID of user&lt;br /&gt;
}}{{TableRowN| session                    | Required     | Integer    | Session ID of user&lt;br /&gt;
}}{{TableRowN| user_name               | Optional     | String     | Username&lt;br /&gt;
}}{{TableRowN| password                | Optional     | String     | Password for username&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Response Property''' | '''Included''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| acctid                  | Conditionally*  | Integer    | Static ID of user&lt;br /&gt;
}}{{TableRowN| session                    | Conditionally*  | Integer    | Session ID of user&lt;br /&gt;
}}{{TableRowN| login_timestamp         | Always         | Integer    | Time stamp of renewed session&lt;br /&gt;
}}{{TableRowN| session_expiration      | Always         | Integer    | Time until new log in session expiration&lt;br /&gt;
}}{{TableRowN| user_id              | Always     | Integer    | ID of the logged in user&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; There may be an instance where the system needs to create a new Session ID and/or Account ID. In which case, it will be outputted in the PUT response.&lt;br /&gt;
&lt;br /&gt;
===POST===&lt;br /&gt;
'''URI Mode Request URI:'''&lt;br /&gt;
*Request for creating a new login session &lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/login/{USERNAME}/{PASSWORD}&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/login&lt;br /&gt;
&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Request Property'''  | '''Status''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| user_name               | Required     | String     | Username&lt;br /&gt;
}}{{TableRowN| password                | Required     | String     | Password for username&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Response Property''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| acctid                  | Integer    | Static ID of user&lt;br /&gt;
}}{{TableRowN| session                    | Integer    | Session ID of user&lt;br /&gt;
}}{{TableRowN| login_timestamp         | Integer    | Time stamp of renewed session&lt;br /&gt;
}}{{TableRowN| session_expiration      | Integer    | Time until new log in expiration&lt;br /&gt;
}}{{TableRowN| user_id               | Integer    | ID of the logged in user&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===DELETE===&lt;br /&gt;
Deleting a login session is the equivalent to logging out. &lt;br /&gt;
&lt;br /&gt;
'''URI Mode Request URI:'''&lt;br /&gt;
*Request to log out of a session &lt;br /&gt;
  '''DELETE''' https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSION}/login&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/login&lt;br /&gt;
&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Request Property'''  | '''Status''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| acctid                  | Required     | Integer    | Static ID of user&lt;br /&gt;
}}{{TableRowN| session                    | Required     | Integer    | Session ID of user&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
==Future==&lt;br /&gt;
In the future the login process will support OAuth for advanced access and authentication.&lt;br /&gt;
&lt;br /&gt;
==Password Reset==&lt;br /&gt;
To reset a pass for a particular email, use the following request:&lt;br /&gt;
&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/login/reset_password/{email_address}&lt;/div&gt;</summary>
		<author><name>Derek</name></author>	</entry>

	<entry>
		<id>https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API&amp;diff=170</id>
		<title>Sensaphone.net API</title>
		<link rel="alternate" type="text/html" href="https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API&amp;diff=170"/>
				<updated>2017-09-12T14:11:26Z</updated>
		
		<summary type="html">&lt;p&gt;Derek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
The Sensaphone.net API will be used as a resource for proprietary products (such as mobile applications) and 3rd party clients. It uses a [[wikipedia:REST|REST]] architecture over HTTPS using JSON as the data format. HTTP is not supported. The service can be accessed in one of two modes: URI mode and JSON mode.&lt;br /&gt;
&lt;br /&gt;
In '''''URI mode''''', the following HTTPS methods are used to access the REST resources as [[wikipedia:CRUD|CRUD]].&lt;br /&gt;
::{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Method''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| POST         | '''C'''reate&lt;br /&gt;
}}{{TableRowN| GET          | '''R'''ead&lt;br /&gt;
}}{{TableRowN| PUT          | '''U'''pdate&lt;br /&gt;
}}{{TableRowN| DELETE       | '''D'''elete&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
All parameters are specified in the URI and JSON is only used in the response.&lt;br /&gt;
&lt;br /&gt;
In '''''JSON Mode''''', only the POST method is used to Create, Read, Update, and Delete fields. A &amp;quot;request_type&amp;quot;(create,read,update,delete) JSON property is used to distinguish which method to execute.&lt;br /&gt;
&lt;br /&gt;
==Definitions==&lt;br /&gt;
:'''Resource''': A resource is a primary source of data. Examples: device, zone.&lt;br /&gt;
:'''Property''': A property is a discrete source of data within a resource (e.g. Device's name). A property may also be a resource (e.g. Device's zone).&lt;br /&gt;
:'''ID''': Resources have properties that uniquely identify them. For example, a device has a &amp;quot;device_id&amp;quot;, a zone has a &amp;quot;zone_id&amp;quot;. These identifying properties are optional or required (See [[#URI Syntax|URI Syntax]]) when accessing (read). They are required when modifying (update or delete) a specific existing resource. When creating they are required except for the resource being created. For a create, the newly created ID will typically be returned in the JSON result.&lt;br /&gt;
&lt;br /&gt;
==URI Syntax==&lt;br /&gt;
The URIs are descriptive representations of what the client will receive as a response and will follow one of the formats:&lt;br /&gt;
&lt;br /&gt;
  /api/v1&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;/{''ACCTID''}/{''SESSIONID''}&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;/'''login'''/&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;/{''USERNAME''}/{''PASSWORD''}&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&lt;br /&gt;
  /api/v1&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;/{''ACCTID''}/{''SESSIONID''}&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;/'''Resource'''&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;/{''ID''}&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;]]&amp;lt;/span&amp;gt;...&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;/'''Resource'''&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;/{''ID''}&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;]]&amp;lt;/span&amp;gt;/'''Property'''&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;/{''VALUE''}&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;]]&amp;lt;/span&amp;gt;&lt;br /&gt;
  /api/v1&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;/{''ACCTID''}/{''SESSIONID''}&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;]&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;/'''Resource'''&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;/{''ID''}&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;]]&amp;lt;/span&amp;gt;...&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;/'''Resource'''&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;/{''ID''}&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;]]&amp;lt;/span&amp;gt;/'''Resource'''&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;[&amp;lt;/span&amp;gt;/{''ID''}&amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;]]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: &amp;quot;v1&amp;quot; can be replaced with &amp;quot;v2&amp;quot;,&amp;quot;v3&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Resource&amp;quot; is the the name of the resource to be accessed (e.g. &amp;quot;device&amp;quot;). The &amp;quot;Property&amp;quot; used will be context dependent and is documented for each resource. Values are placed inside &amp;lt;nowiki&amp;gt;{}&amp;lt;/nowiki&amp;gt; brackets. The brackets are used in the URI submitted. &lt;br /&gt;
&lt;br /&gt;
In [[#Overview|URI Mode]], the Resource ID (e.g. &amp;quot;/''{ID}''&amp;quot;) must be included unless it is the rightmost resource in the URI. In [[#Overview|JSON mode]], the ID is still required, but may be included in the submitted JSON instead.&lt;br /&gt;
&lt;br /&gt;
Fields in &amp;lt;span style=&amp;quot;color:#A00000&amp;quot;&amp;gt;&amp;lt;nowiki&amp;gt;[]&amp;lt;/nowiki&amp;gt;&amp;lt;/span&amp;gt; brackets are optional on the URI, however, if they are required in the resource documentation, then they must be included '''either''' in the URI or in the JSON, but not both. The brackets themselves are not included in the URI submitted. Consider the following API call to retrieve the device name for device ID 1234:&lt;br /&gt;
 '''URI Mode Request URI:'''&lt;br /&gt;
  '''GET''' ''https://rest.sensaphone.net/api/v1/{987654}/{0123-4567-8901}/device/{1234}/name''&lt;br /&gt;
The ACCTID, SESSIONID, ID, and &amp;quot;name&amp;quot; fields may be excluded from the URI, but must then be included in the request JSON:&lt;br /&gt;
 '''Request Description:'''&lt;br /&gt;
  Retrieve the &amp;quot;name&amp;quot; property from device &amp;quot;1234&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 '''JSON Mode Request URI:'''&lt;br /&gt;
  '''POST''' ''https://rest.sensaphone.net/api/v1/device''&lt;br /&gt;
 &lt;br /&gt;
 '''Request JSON:'''&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;request_type:&amp;quot;read&amp;quot;,&lt;br /&gt;
    &amp;quot;resource&amp;quot;:&amp;quot;device&amp;quot;,&lt;br /&gt;
    &amp;quot;acctid&amp;quot;:987654,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;0123-4567-8901&amp;quot;,&lt;br /&gt;
    &amp;quot;device&amp;quot;: [&lt;br /&gt;
      { &lt;br /&gt;
        &amp;quot;device_id&amp;quot;: 1234,&lt;br /&gt;
        &amp;quot;name&amp;quot; : null&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
This will provide a response of the name of the device whose ID is &amp;quot;1234&amp;quot; for the account with ID 987654 using the Account ID of 987654 and Session ID of &amp;quot;0123-4567-8901&amp;quot;:&lt;br /&gt;
 '''Response JSON:'''&lt;br /&gt;
  ...&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;device&amp;quot;: [&lt;br /&gt;
      { &lt;br /&gt;
        &amp;quot;device_id&amp;quot;: 1234,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;My Device&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
  ...&lt;br /&gt;
&lt;br /&gt;
The URI method is intended to allow quick access to single pieces of data, but using the JSON method is more complete and allows retrieval of multiple pieces of data at once.&lt;br /&gt;
 &lt;br /&gt;
===Additional Examples===&lt;br /&gt;
====POST====&lt;br /&gt;
 '''Request Description:'''&lt;br /&gt;
  Create a new alarm schedule for the device with ID 1234 and its zone with ID 112233.&lt;br /&gt;
 &lt;br /&gt;
 '''URI Mode Request URI:'''&lt;br /&gt;
  '''POST''' ''https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{1234}/zone/{112233}/alarmschedule&lt;br /&gt;
&lt;br /&gt;
====GET====&lt;br /&gt;
 '''Request Description:'''&lt;br /&gt;
  Retrieve the name of the zone with ID 112233 of the device with ID 1234.&lt;br /&gt;
 &lt;br /&gt;
 '''URI Mode Request URI:'''&lt;br /&gt;
  '''GET''' ''https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{1234}/zone/{112233}/name&lt;br /&gt;
&lt;br /&gt;
====PUT====&lt;br /&gt;
 '''Request Description:'''&lt;br /&gt;
  Change the name of the User with the ID 6778 to &amp;quot;John Doe&amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
 '''URI Mode Request URI:'''&lt;br /&gt;
  '''PUT''' ''https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/user/{6778}/name/{John&amp;amp;nbsp;Doe}''&lt;br /&gt;
&lt;br /&gt;
====DELETE====&lt;br /&gt;
 '''Request Description:'''&lt;br /&gt;
  Delete the User with the ID 6778.&lt;br /&gt;
 &lt;br /&gt;
 '''URI Mode Request URI:'''&lt;br /&gt;
  '''DELETE''' ''https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/user/{6778}''&lt;br /&gt;
&lt;br /&gt;
==JSON Format==&lt;br /&gt;
===Requests===&lt;br /&gt;
All requests using the JSON mode will only use the POST method with a &amp;quot;request_type&amp;quot; parameter.&lt;br /&gt;
&lt;br /&gt;
All requests include one outer JSON object unless no request data is specified. Requests are made according the specific requirements of the resource being accessed. With the exception of the login page, a session ID must be included with all API requests. When using the [[#URI Syntax]] JSON mode, the following will be included:&lt;br /&gt;
  {                                          &amp;amp;#8592; All values must be within this outer JSON object.&lt;br /&gt;
    &amp;quot;acctid&amp;quot;:987654,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;0123-4567-8901&amp;quot;,&lt;br /&gt;
    &amp;quot;request_type&amp;quot;:&amp;quot;read&amp;quot;,                   &amp;amp;#8592; One of &amp;quot;read&amp;quot;, &amp;quot;update&amp;quot;, &amp;quot;create&amp;quot;, &amp;quot;delete&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
A resource is accessed as either a JSON array of objects or a JSON object. A resource's properties are listed in comma separated values in the JSON object for that resource. All JSON value types may be used. Resources within resources are accessed as JSON objects within objects (or Array of objects). The JSON type of a property is specified by the requirements for each resource. &lt;br /&gt;
&lt;br /&gt;
When performing a '''Read''' on a resource, all properties will be returned if '''only''' the resource ID is specified. If one or more non-identifying properties are specified, only those properties will be returned. The data values for those ''specific'' properties should be 'null'. &lt;br /&gt;
&lt;br /&gt;
When performing a '''Delete''', specified non-identifying properties to be deleted should have their data values set to 'null', just like in a '''Read'''.&lt;br /&gt;
&lt;br /&gt;
When performing a '''Update''' or '''Create''', specified non-identifying properties to be set must have their data values set to valid types, '''not''' 'null'.&lt;br /&gt;
&lt;br /&gt;
When performing a '''Update''', the identifying properties must be specified. You can't update a resource without identifying it.&lt;br /&gt;
&lt;br /&gt;
When performing a '''Create''', the identifying properties of the resource being created should not be specified at all. Only existing resources can have identifiers already.&lt;br /&gt;
&lt;br /&gt;
NOTE: Specifying properties that are not listed in the requirements has no effect.&lt;br /&gt;
&lt;br /&gt;
 '''JSON Mode Request URI:'''&lt;br /&gt;
  '''POST''' ''https://rest.sensaphone.net/api/v1/device''&lt;br /&gt;
 &lt;br /&gt;
 '''Request JSON:'''&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;request_type&amp;quot;:&amp;quot;read&amp;quot;,&lt;br /&gt;
    &amp;quot;resource&amp;quot;:&amp;quot;device&amp;quot;,&lt;br /&gt;
    &amp;quot;acctid&amp;quot;:987654,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;0123-4567-8901&amp;quot;,             &amp;amp;#8592; All values are within at least the outer JSON object.&lt;br /&gt;
    &amp;quot;device&amp;quot;:[                               &amp;amp;#8592; Devices are accessed as a JSON array of objects.&lt;br /&gt;
      {                                         &lt;br /&gt;
        &amp;quot;device_id&amp;quot;: 1234,                   &amp;amp;#8592; The &amp;quot;device_id&amp;quot; property is provided to identify the device accessed.&lt;br /&gt;
        &amp;quot;name&amp;quot;: null,                        &amp;amp;#8592; The &amp;quot;name&amp;quot; property is ''specifically'' requested, so it is set to null. The whole device will '''not''' be returned.&lt;br /&gt;
        &amp;quot;zones&amp;quot;:[                            &amp;amp;#8592; Zones are accessed as a JSON array of objects.&lt;br /&gt;
          {                                     &lt;br /&gt;
            &amp;quot;zone_id&amp;quot;: 112233                &amp;amp;#8592; By only specifying the &amp;quot;zone_id&amp;quot; and no other properties, '''all''' zone data is requested.&lt;br /&gt;
          }                                     &lt;br /&gt;
        ],                                      &lt;br /&gt;
        &amp;quot;this fake property&amp;quot;: &amp;quot;is ignored&amp;quot;   &amp;amp;#8592; Invalid properties are ignored.&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
The above request is equivalent to the following requests, but must be done in two steps because two pieces of data were requested (The device's name and the device's zone with the ID 112233). No request JSON is required in this case.&lt;br /&gt;
 '''URI Mode Request URIs:'''&lt;br /&gt;
  '''GET''' ''https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{1234}/name''&lt;br /&gt;
  '''GET''' ''https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{1234}/zone/{112233}''&lt;br /&gt;
&lt;br /&gt;
===Responses===&lt;br /&gt;
Responses conform to the following format and include error reporting.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;result&amp;quot;:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;success&amp;quot;: true,          &amp;amp;#8592; Overall result of the request.&lt;br /&gt;
    &amp;quot;code&amp;quot;: 0,                &amp;amp;#8592; Status code for overall result.&lt;br /&gt;
    &amp;quot;message&amp;quot;:&amp;quot;OK&amp;quot;,           &amp;amp;#8592; String describing the overall result.&lt;br /&gt;
    &lt;br /&gt;
    &amp;quot;properties&amp;quot;:             &amp;amp;#8592; Optionally used for '''Create''', '''Update''', and '''Delete'''&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;''PROPERTY''&amp;quot;:{            &amp;amp;#8592; Property names and layout will match the request.&lt;br /&gt;
       &amp;quot;success&amp;quot;: true,&lt;br /&gt;
       &amp;quot;message&amp;quot;:&amp;quot;OK&amp;quot;,&lt;br /&gt;
       &amp;quot;code&amp;quot;:0&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;''PROPERTY''&amp;quot;:{&lt;br /&gt;
       &amp;quot;success&amp;quot;: false,&lt;br /&gt;
       &amp;quot;message&amp;quot;:&amp;quot;Failed&amp;quot;,&lt;br /&gt;
       &amp;quot;code&amp;quot;:123&lt;br /&gt;
      },&lt;br /&gt;
      ...&lt;br /&gt;
    },&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;response&amp;quot;:                 &amp;amp;#8592; Any data that may have changed ('''Create'''/'''Update'''/'''Delete''') or been requested ('''Read''').&lt;br /&gt;
  {&lt;br /&gt;
    ...&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The success, code, and message for the overall result will always be included. The data in the &amp;quot;response&amp;quot; JSON object will depend on the specification of the resource accessed in the original request, but will generally follow the same layout and format of the request, although the specific properties returned will vary.&lt;br /&gt;
&lt;br /&gt;
 '''JSON Mode Request URI:'''&lt;br /&gt;
  '''POST''' ''https://rest.sensaphone.net/api/v1/device''&lt;br /&gt;
 &lt;br /&gt;
 '''Request JSON:'''&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;request_type&amp;quot;:&amp;quot;update&amp;quot;,&lt;br /&gt;
    &amp;quot;resource&amp;quot;:&amp;quot;device&amp;quot;,&lt;br /&gt;
    &amp;quot;acctid&amp;quot;:987654,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;0123-4567-8901&amp;quot;,&lt;br /&gt;
    &amp;quot;device&amp;quot;:[&lt;br /&gt;
      {                                         &lt;br /&gt;
        &amp;quot;device_id&amp;quot;: 1234,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &amp;quot;My Device&amp;quot;,        &amp;amp;#8592; The device's &amp;quot;name&amp;quot; property is being changed.&lt;br /&gt;
        &amp;quot;zone&amp;quot;:[                            &lt;br /&gt;
          {                                     &lt;br /&gt;
            &amp;quot;zone_id&amp;quot;: 112233,&lt;br /&gt;
            &amp;quot;name&amp;quot;: 1234            &amp;amp;#8592; The device's zone's &amp;quot;name&amp;quot; property is being changed.&lt;br /&gt;
          }                                     &lt;br /&gt;
        ]&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
 '''Response JSON:'''&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;result&amp;quot;:&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;success&amp;quot;: true,              &amp;amp;#8592; The overall request was processed correctly, even if some properties had errors.&lt;br /&gt;
     &amp;quot;code&amp;quot;: 0,&lt;br /&gt;
     &amp;quot;message&amp;quot;:&amp;quot;OK&amp;quot;,&lt;br /&gt;
    &lt;br /&gt;
     &amp;quot;properties&amp;quot;:&lt;br /&gt;
     {&lt;br /&gt;
       &amp;quot;device&amp;quot;:[&lt;br /&gt;
         {                                         &lt;br /&gt;
           &amp;quot;device_id&amp;quot;: 1234,        &amp;amp;#8592; Identifying properties must be specified.&lt;br /&gt;
           &amp;quot;name&amp;quot;: {                 &amp;amp;#8592; Property &amp;quot;name&amp;quot; was changed.&lt;br /&gt;
             &amp;quot;success&amp;quot;: true,&lt;br /&gt;
             &amp;quot;message&amp;quot;:&amp;quot;OK&amp;quot;,&lt;br /&gt;
             &amp;quot;code&amp;quot;:0&lt;br /&gt;
           },&lt;br /&gt;
           &amp;quot;zone&amp;quot;:[                            &lt;br /&gt;
             {                                     &lt;br /&gt;
               &amp;quot;zone_id&amp;quot;: 112233,    &amp;amp;#8592; Identifying properties must be specified.&lt;br /&gt;
               &amp;quot;name&amp;quot;: {             &amp;amp;#8592; The device's zone's &amp;quot;name&amp;quot; was changed.&lt;br /&gt;
                 &amp;quot;success&amp;quot;: false,&lt;br /&gt;
                 &amp;quot;message&amp;quot;: &amp;quot;A string type is required&amp;quot;,&lt;br /&gt;
                 &amp;quot;code&amp;quot;:123&lt;br /&gt;
               }&lt;br /&gt;
             }                                     &lt;br /&gt;
           ]&lt;br /&gt;
         }&lt;br /&gt;
       ]&lt;br /&gt;
     },&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;response&amp;quot;:&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;device&amp;quot;:[&lt;br /&gt;
       {                                         &lt;br /&gt;
         &amp;quot;device_id&amp;quot;: 1234,        &amp;amp;#8592; Identifying properties must be specified.&lt;br /&gt;
         &amp;quot;name&amp;quot;: &amp;quot;My Device&amp;quot;,      &amp;amp;#8592; The new value for the device's &amp;quot;name&amp;quot;.&lt;br /&gt;
       }&lt;br /&gt;
     ]&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The above request is equivalent to the following requests, but must be done in two steps because two pieces of data were updated (The device's name and the device's zone's name). No request JSON is required in this case.&lt;br /&gt;
 '''URI Mode Request URIs:'''&lt;br /&gt;
  '''PUT''' ''https://rest.sensaphone.net/api/v1/{987654}/{0123-4567-8901}/device/{1234}/name/{My&amp;amp;nbsp;Device}''&lt;br /&gt;
  '''PUT''' ''https://rest.sensaphone.net/api/v1/{987654}/{0123-4567-8901}/device/{1234}/zone/{112233}/name/{1234}''&lt;br /&gt;
&lt;br /&gt;
The following are some of the status codes used for overall status.&lt;br /&gt;
::{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Code''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| 0          | Success&lt;br /&gt;
}}{{TableRowN| 1          | Failed: No Session ID provided&lt;br /&gt;
}}{{TableRowN| 2          | Failed: Session ID has expired&lt;br /&gt;
}}{{TableRowN| 3          | Failed: Invalid request URI.&lt;br /&gt;
}}{{TableRowN| 4          | Failed: Invalid request JSON.&lt;br /&gt;
}}{{TableRowN| 5          | Failed: Invalid username provided.&lt;br /&gt;
}}{{TableRowN| 6          | Failed: Invalid password provided.&lt;br /&gt;
}}{{TableRowN| 7          | Failed: User is not authorized.&lt;br /&gt;
}}{{TableRowN| 8          | Failed: Service unavailable. Try again later.&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
==Versions==&lt;br /&gt;
There will be three versions of the API. We will refer to them as V1, V2, and V3. The only difference between the versions is in the format of '''responses'''. Requests to the Sensaphone.net API are identical in all cases.&lt;br /&gt;
&lt;br /&gt;
===V1===&lt;br /&gt;
V1 will primarily be used to give responses that will be directly displayed in a client's application. &lt;br /&gt;
&lt;br /&gt;
'''Example V1 Response for &amp;quot;https://rest.sensaphone.net/api/v1/{987654}/{0123-4567-8901}/device/{1234}/name&amp;quot; :'''&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;device&amp;quot;: [&lt;br /&gt;
      { &lt;br /&gt;
        &amp;quot;device_id&amp;quot;: 1234,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &amp;quot;My Device&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
===V2===&lt;br /&gt;
V2 should be used when responses with the addition of metadata are needed.&lt;br /&gt;
&lt;br /&gt;
'''Example V2 Response for &amp;quot;https://rest.sensaphone.net/api/v2/{987654}/{0123-4567-8901}/device/{1234}/name&amp;quot; :''' &lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;device&amp;quot;: [&lt;br /&gt;
      { &lt;br /&gt;
        &amp;quot;device_id&amp;quot;: 1234,&lt;br /&gt;
        &amp;quot;name&amp;quot;: &lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;is_null&amp;quot; : false,&lt;br /&gt;
          &amp;quot;is_empty&amp;quot;: false,&lt;br /&gt;
          &amp;quot;value&amp;quot;   : &amp;quot;Device 1&amp;quot;,&lt;br /&gt;
          &amp;quot;type&amp;quot;    : &amp;quot;string&amp;quot;,&lt;br /&gt;
          &amp;quot;is_pending&amp;quot;: false,&lt;br /&gt;
          &amp;quot;is_ranged&amp;quot; : true,&lt;br /&gt;
          &amp;quot;ranged&amp;quot;:[&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;null&amp;quot;: false,&lt;br /&gt;
              &amp;quot;min&amp;quot; : 0,&lt;br /&gt;
              &amp;quot;max&amp;quot; : 128&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
::{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Property'''          | '''Status''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| is_null                 | Required     | Boolean    | States if the corresponding value is NULL. If so, no additional keys are given.&lt;br /&gt;
}}{{TableRowN| is_empty                | Required*    | Boolean    | States if the corresponding value is empty. If so, no additional keys are given.&lt;br /&gt;
}}{{TableRowN| value                   | Required**   | String     | Description of the corresponding value&lt;br /&gt;
}}{{TableRowN| type                    | Required**   | String     | Type of value&lt;br /&gt;
}}{{TableRowN| is_pending              | Optional     | Boolean    | States if the value is in process of being updated&lt;br /&gt;
}}{{TableRowN| is_ranged               | Optional     | Boolean    | States if there is a set of ranges for the value&lt;br /&gt;
}}{{TableRowN| ranged                  | Optional     | Array      | Array of ranges&lt;br /&gt;
}}{{TableRowN| &amp;amp;#8594; null            | Required     | Boolean    | States if the value can be null.&lt;br /&gt;
}}{{TableRowN| &amp;amp;#8594; min             | Required***  | Mixed      | Min of range&lt;br /&gt;
}}{{TableRowN| &amp;amp;#8594; max             | Optional     | Mixed      | Max of range&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
::&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; Only required if &amp;quot;is_null&amp;quot; is false.&lt;br /&gt;
::&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt; Only required if &amp;quot;is_empty&amp;quot; is false.&lt;br /&gt;
::&amp;lt;nowiki&amp;gt;***&amp;lt;/nowiki&amp;gt; Only required if &amp;quot;null&amp;quot; is false.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===V3===&lt;br /&gt;
V3 should be used when only the pending meta data is needed&lt;br /&gt;
&lt;br /&gt;
'''Example V3 Response for &amp;quot;https://rest.sensaphone.net/api/v3/{987654}/{0123-4567-8901}/device/{1234}/name&amp;quot; :'''&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;device&amp;quot;: [&lt;br /&gt;
      { &lt;br /&gt;
        &amp;quot;device_id&amp;quot;: 1234,&lt;br /&gt;
        &amp;quot;name&amp;quot; : &lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;is_pending&amp;quot;: true&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==Resources==&lt;br /&gt;
The following resources are accessible through the REST API. They may be accessible from different URI contexts. See the individual resource pages for more information.&lt;br /&gt;
::{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN|'''Page'''                                   |'''GET'''|'''PUT'''|'''POST'''|'''DELETE'''&lt;br /&gt;
}}{{TableRowN|&amp;amp;nbsp;                                       |(Read)|(Write)|(Create)|(Delete)&lt;br /&gt;
}}{{TableRowN|[[{{PAGENAME}}/login|login]]                 |Y|Y|Y|Y&lt;br /&gt;
}}{{TableRowN|[[{{PAGENAME}}/dashboard|dashboard]]         |Y|N|N|N&lt;br /&gt;
}}{{TableRowN|[[{{PAGENAME}}/history|history]]             |Y|N|N|N&lt;br /&gt;
}}{{TableRowN|[[{{PAGENAME}}/account|account]]               |Y|Y|N|N&lt;br /&gt;
}}{{TableRowN|[[{{PAGENAME}}/feature|feature]]               |Y|Y|N|N&lt;br /&gt;
}}{{TableRowN|[[{{PAGENAME}}/device|device]]               |Y|Y|Y|Y&lt;br /&gt;
}}{{TableRowN|[[{{PAGENAME}}/devicegroup|devicegroup]]     |Y|Y|Y|Y&lt;br /&gt;
}}{{TableRowN|[[{{PAGENAME}}/address|address]]             |Y|Y|N|N&lt;br /&gt;
}}{{TableRowN|[[{{PAGENAME}}/coordinates|coordinates]]     |Y|Y|N|N&lt;br /&gt;
}}{{TableRowN|[[{{PAGENAME}}/zone|zone]]                   |Y|Y|Y|N&lt;br /&gt;
}}{{TableRowN|[[{{PAGENAME}}/calllist|calllist]]           |Y|Y|Y|Y&lt;br /&gt;
}}{{TableRowN|[[{{PAGENAME}}/alarmschedule|alarmschedule]] |Y|Y|Y|Y&lt;br /&gt;
}}{{TableRowN|[[{{PAGENAME}}/schedule|schedule]]           |Y|Y|Y|Y&lt;br /&gt;
}}{{TableRowN|[[{{PAGENAME}}/timerange|timerange]]         |Y|Y|Y|Y&lt;br /&gt;
}}{{TableRowN|[[{{PAGENAME}}/contactgroup|contactgroup]]   |Y|Y|Y|Y&lt;br /&gt;
}}{{TableRowN|[[{{PAGENAME}}/user|user]]                   |Y|Y|Y|Y&lt;br /&gt;
}}{{TableRowN|[[{{PAGENAME}}/contact|contact]]             |Y|Y|Y|Y&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===List===&lt;br /&gt;
The following is a list of all possible REST resources, excluding any possible '''&amp;lt;nowiki&amp;gt;[/Property/[/Value]]&amp;lt;/nowiki&amp;gt;''' suffix. Properties ('''/Property''') of a resource are shown where it is a JSON object or array of objects (e.g. &amp;quot;alarmschedule&amp;quot;). For a full list of properties and values associated with each resource, see the page for that resource.&lt;br /&gt;
*/api/v1/login/{USERNAME}/{PASSWORD}&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/account&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/account/feature&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/calllist&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/contact&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/contact/schedule&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/contact/schedule/timerange&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/contactgroup&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/dashboard&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/device&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/device/default_schedule&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/device/default_schedule/timerange&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/device/default_schedule/calllist&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/device/device_schedule&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/device/device_schedule/timerange&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/device/device_schedule/calllist&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/device/feature&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/device/location&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/device/location/address&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/device/location/coordinates&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/device/zone&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/device/zone/alarm_zone/alarmschedule&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/device/zone/alarm_zone/alarmschedule/timerange&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/device/zone/alarm_zone/alarmschedule/calllist&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/device/zone/schedule&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/device/zone/schedule/timerange&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/devicegroup&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/history&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/login&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/user&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/user/alarm_user/contact&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/user/alarm_user/contact/schedule&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/user/alarm_user/contact/schedule/timerange&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/user/alarm_user/schedule&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/user/alarm_user/schedule/timerange&lt;br /&gt;
*/api/v1/{ACCTID}/{SESSIONID}/user/site_user/address&lt;br /&gt;
&lt;br /&gt;
==Help==&lt;br /&gt;
If you need help using our API and your question isn't answered in the wiki, please feel free to email us at: [mailto:api@sensaphone.net api@sensaphone.net]&lt;/div&gt;</summary>
		<author><name>Derek</name></author>	</entry>

	<entry>
		<id>https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/dashboard&amp;diff=169</id>
		<title>Sensaphone.net API/dashboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/dashboard&amp;diff=169"/>
				<updated>2017-09-07T21:14:05Z</updated>
		
		<summary type="html">&lt;p&gt;Derek: /* Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[[Sensaphone.net API]]=&lt;br /&gt;
&lt;br /&gt;
Receive data to populate Dashboard. The Dashboard is a page that gives the user a quick view of Device and alarm statuses. It is a read only resource.&lt;br /&gt;
&lt;br /&gt;
==Example Call==&lt;br /&gt;
&lt;br /&gt;
   http://rest.sensaphone.net/api/v1/{ACCTID}/{UUID}/dashboard&lt;br /&gt;
&lt;br /&gt;
==Example Requests==&lt;br /&gt;
===GET===&lt;br /&gt;
'''URI Mode Request URI's:''' &lt;br /&gt;
*Receive all Dashboard information &lt;br /&gt;
   '''GET''' https://rest.sensaphone.net/api/v1/{ACCTID}/{UUID}/dashboard&lt;br /&gt;
&lt;br /&gt;
*Receive for the number of Devices online &lt;br /&gt;
   '''GET''' https://rest.sensaphone.net/api/v1/{ACCTID}/{UUID}/dashboard/devices_online&lt;br /&gt;
&lt;br /&gt;
*Receive the names of all Devices powered on and online &lt;br /&gt;
   '''GET''' https://rest.sensaphone.net/api/v1/{ACCTID}/{UUID}/dashboard/device/name&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
   '''POST''' https://rest.sensaphone.net/api/v1/dashboard &lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property'''|'''Child Property''' |'''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | acctid                   | Integer          | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | session                  | String           | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | request_type             | String           | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | dashboard                   | Object | The dashboard object.&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''JSON Mode Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''|'''Status'''| '''Type'''       | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | dashboard             | Required   | Object | The dashboard object.&lt;br /&gt;
}}{{TableRowN| dashboard           | online_count                  | Optional    | Integer    | Number of Devices turned on and online&lt;br /&gt;
}}{{TableRowN| dashboard           | offline_count                  | Optional    | Integer    | Number of Devices offline&lt;br /&gt;
}}{{TableRowN| dashboard           |  alarm_count   | Optional    | Integer    | Number of acknowledged alarms&lt;br /&gt;
}}{{TableRowN| dashboard           |  unack_count   | Optional    | Integer    | Number of unacknowledged alarms&lt;br /&gt;
}}{{TableRowN| dashboard           |  total_alarm_count   | Optional    | Integer    | Number of alarms&lt;br /&gt;
}}{{TableRowN| dashboard           |  device                              | Optional     | Array      | Array of Devices&lt;br /&gt;
}}{{TableRowN| device                | device_id          | Optional   | Integer          | ID of Device&lt;br /&gt;
}}{{TableRowN| device                | id                 | Optional   | Integer          | Unique identifier located on the Device (Serial number, etc.)&lt;br /&gt;
}}{{TableRowN| device                | name               | Optional   | String           | Name of Device&lt;br /&gt;
}}{{TableRowN| device                | location           | Optional   | Object           | Contains location information for the device.&lt;br /&gt;
}}{{TableRowN| location              | address            | Optional   | Object           |  Address information for Device (See [[Sensaphone.net API/address]])&lt;br /&gt;
}}{{TableRowN| location              | coordinates        | Optional   | Object           |  GPS Coordinates information for Device (See [[Sensaphone.net API/coordinates]])&lt;br /&gt;
}}{{TableRowN| device                | status        | Optional   | String           | Alarm status of Device(&amp;quot;OK&amp;quot; or &amp;quot;Alarm&amp;quot;)&lt;br /&gt;
}}{{TableRowN| device                | is_offline_unack   | Optional   | Boolean          | Whether or not an '''unacknowledged''' offline alarm exists.&lt;br /&gt;
}}{{TableRowN| device                | is_online          | Optional   | Boolean          | Whether or not the device is currently online.&lt;br /&gt;
}}{{TableRowN| device                | battery_status    | Optional       | String    | A device's battery status   &lt;br /&gt;
}}{{TableRowN| device                | power_status    | Optional       | String    | A device's power status   &lt;br /&gt;
}}{{TableRowN| device                | battery_value    | Optional       | String    | A device's battery value   &lt;br /&gt;
}}{{TableRowN| device                | power_value    | Optional       | String    | A device's power value   &lt;br /&gt;
}}{{TableRowN| device                | connection_status    | Optional       | String    | A device's connection status   &lt;br /&gt;
}}{{TableRowN| device                | zone               | Optional   | Array of Objects | Device Zone data (See [[Sensaphone.net API/zone|Sensaphone.net API/zone]]) *Only returns zones with an alarm&lt;br /&gt;
}}{{TableRowN| zone                  | canonical_name        | Optional   | String  | Canonical name of the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | value              | Optional   | String           | The data value for the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | type               | Optional   | String           | The zone type.&lt;br /&gt;
}}{{TableRowN| zone                  | alarm_zone         | Optional   | Object           | Sub-object containing data for alarmable zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_status         | Optional   | Array of ZoneState          |   The processed status of the zone ( returns 2 ZoneStates)&lt;br /&gt;
}}{{TableRowN| alarm_zone            | unack_alarms         | Optional   | Array of ZoneState          |  Alarm states that are currently unacknowledged &lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
This example is requesting the '''devices_online''' and '''name''' values.&lt;br /&gt;
&lt;br /&gt;
*'''Request JSON''' &lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;request_type&amp;quot;: &amp;quot;read&amp;quot;,&lt;br /&gt;
    &amp;quot;resource&amp;quot;: &amp;quot;dashboard&amp;quot;,&lt;br /&gt;
    &amp;quot;acctid&amp;quot;: 12345678,&lt;br /&gt;
    &amp;quot;session&amp;quot;: &amp;quot;123a-456b-789c&amp;quot;,&lt;br /&gt;
    &amp;quot;dashboard&amp;quot;: {&lt;br /&gt;
        &amp;quot;online_count&amp;quot;: null,&lt;br /&gt;
        &amp;quot;device&amp;quot;: [{&lt;br /&gt;
            &amp;quot;name&amp;quot;: null&lt;br /&gt;
        }]&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
*'''Result JSON'''&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
    &amp;quot;response&amp;quot;: {&lt;br /&gt;
        &amp;quot;dashboard&amp;quot;: {&lt;br /&gt;
            &amp;quot;device&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;device_id&amp;quot;: 9876,&lt;br /&gt;
                    &amp;quot;name&amp;quot;: &amp;quot;A device&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                {&lt;br /&gt;
                    &amp;quot;device_id&amp;quot;: 5432,&lt;br /&gt;
                    &amp;quot;name&amp;quot;: &amp;quot;Another device&amp;quot;&lt;br /&gt;
                }&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;online_count&amp;quot;: 2&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;result&amp;quot;: {&lt;br /&gt;
        &amp;quot;code&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;message&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
        &amp;quot;success&amp;quot;: true&lt;br /&gt;
    }&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Derek</name></author>	</entry>

	<entry>
		<id>https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/dashboard&amp;diff=168</id>
		<title>Sensaphone.net API/dashboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/dashboard&amp;diff=168"/>
				<updated>2017-09-07T20:50:58Z</updated>
		
		<summary type="html">&lt;p&gt;Derek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[[Sensaphone.net API]]=&lt;br /&gt;
&lt;br /&gt;
Receive data to populate Dashboard. The Dashboard is a page that gives the user a quick view of Device and alarm statuses. It is a read only resource.&lt;br /&gt;
&lt;br /&gt;
==Example Call==&lt;br /&gt;
&lt;br /&gt;
   http://rest.sensaphone.net/api/v1/{ACCTID}/{UUID}/dashboard&lt;br /&gt;
&lt;br /&gt;
==Example Requests==&lt;br /&gt;
===GET===&lt;br /&gt;
'''URI Mode Request URI's:''' &lt;br /&gt;
*Receive all Dashboard information &lt;br /&gt;
   '''GET''' https://rest.sensaphone.net/api/v1/{ACCTID}/{UUID}/dashboard&lt;br /&gt;
&lt;br /&gt;
*Receive for the number of Devices online &lt;br /&gt;
   '''GET''' https://rest.sensaphone.net/api/v1/{ACCTID}/{UUID}/dashboard/devices_online&lt;br /&gt;
&lt;br /&gt;
*Receive the names of all Devices powered on and online &lt;br /&gt;
   '''GET''' https://rest.sensaphone.net/api/v1/{ACCTID}/{UUID}/dashboard/device/name&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
   '''POST''' https://rest.sensaphone.net/api/v1/dashboard &lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property'''|'''Child Property''' |'''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | acctid                   | Integer          | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | session                  | String           | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | request_type             | String           | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | dashboard                   | Object | The dashboard object.&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''JSON Mode Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''|'''Status'''| '''Type'''       | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | dashboard             | Required   | Object | The dashboard object.&lt;br /&gt;
}}{{TableRowN| dashboard           | online_count                  | Optional    | Integer    | Number of Devices turned on and online&lt;br /&gt;
}}{{TableRowN| dashboard           | offline_count                  | Optional    | Integer    | Number of Devices offline&lt;br /&gt;
}}{{TableRowN| dashboard           |  alarm_count   | Optional    | Integer    | Number of acknowledged alarms&lt;br /&gt;
}}{{TableRowN| dashboard           |  unack_count   | Optional    | Integer    | Number of unacknowledged alarms&lt;br /&gt;
}}{{TableRowN| dashboard           |  total_alarm_count   | Optional    | Integer    | Number of alarms&lt;br /&gt;
}}{{TableRowN| dashboard           |  device                              | Optional     | Array      | Array of Devices&lt;br /&gt;
}}{{TableRowN| device                | device_id          | Optional   | Integer          | ID of Device&lt;br /&gt;
}}{{TableRowN| device                | id                 | Optional   | Integer          | Unique identifier located on the Device (Serial number, etc.)&lt;br /&gt;
}}{{TableRowN| device                | name               | Optional   | String           | Name of Device&lt;br /&gt;
}}{{TableRowN| device                | location           | Optional   | Object           | Contains location information for the device.&lt;br /&gt;
}}{{TableRowN| location              | address            | Optional   | Object           |  Address information for Device (See [[Sensaphone.net API/address]])&lt;br /&gt;
}}{{TableRowN| location              | coordinates        | Optional   | Object           |  GPS Coordinates information for Device (See [[Sensaphone.net API/coordinates]])&lt;br /&gt;
}}{{TableRowN| device                | status        | Optional   | String           | Alarm status of Device(&amp;quot;OK&amp;quot; or &amp;quot;Alarm&amp;quot;)&lt;br /&gt;
}}{{TableRowN| device                | is_offline_unack   | Optional   | Boolean          | Whether or not an '''unacknowledged''' offline alarm exists.&lt;br /&gt;
}}{{TableRowN| device                | is_online          | Optional   | Boolean          | Whether or not the device is currently online.&lt;br /&gt;
}}{{TableRowN| device                | battery_status    | Optional       | String    | A device's battery status   &lt;br /&gt;
}}{{TableRowN| device                | power_status    | Optional       | String    | A device's power status   &lt;br /&gt;
}}{{TableRowN| device                | battery_value    | Optional       | String    | A device's battery value   &lt;br /&gt;
}}{{TableRowN| device                | power_value    | Optional       | String    | A device's power value   &lt;br /&gt;
}}{{TableRowN| device                | connection_status    | Optional       | String    | A device's connection status   &lt;br /&gt;
}}{{TableRowN| device                | zone               | Optional   | Array of Objects | Device Zone data (See [[Sensaphone.net API/zone|Sensaphone.net API/zone]]) *Only returns zones with an alarm&lt;br /&gt;
}}{{TableRowN| zone                  | canonical_name        | Optional   | String  | Canonical name of the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | value              | Optional   | String           | The data value for the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | type               | Optional   | String           | The zone type.&lt;br /&gt;
}}{{TableRowN| zone                  | alarm_zone         | Optional   | Object           | Sub-object containing data for alarmable zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_status         | Optional   | Array of ZoneState          |   The processed status of the zone ( returns 2 ZoneStates)&lt;br /&gt;
}}{{TableRowN| alarm_zone            | unack_alarms         | Optional   | Array of ZoneState          |  Alarm states that are currently unacknowledged &lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Example====&lt;br /&gt;
This example is requesting the '''devices_online''' and '''name''' values.&lt;br /&gt;
&lt;br /&gt;
*'''Request JSON''' &lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;request_type&amp;quot;:&amp;quot;read&amp;quot;,&lt;br /&gt;
    &amp;quot;resource&amp;quot;:&amp;quot;dashboard&amp;quot;,&lt;br /&gt;
    &amp;quot;acctid&amp;quot;:987654,&lt;br /&gt;
    &amp;quot;session&amp;quot;:&amp;quot;0123-4567-8901&amp;quot;,&lt;br /&gt;
    &amp;quot;online_count&amp;quot;: null,&lt;br /&gt;
    &amp;quot;device&amp;quot;:&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;name&amp;quot;:null&lt;br /&gt;
      }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*'''Result JSON'''&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;result&amp;quot;:&lt;br /&gt;
      { &lt;br /&gt;
       &amp;quot;success&amp;quot;:true,&lt;br /&gt;
       &amp;quot;code&amp;quot;:0,&lt;br /&gt;
       &amp;quot;message&amp;quot;:&amp;quot;OK:,&lt;br /&gt;
      },&lt;br /&gt;
     &amp;quot;response&amp;quot;: &lt;br /&gt;
      { &lt;br /&gt;
        &amp;quot;online_count&amp;quot;:3,&lt;br /&gt;
        &amp;quot;device&amp;quot;:&lt;br /&gt;
            {&lt;br /&gt;
             &amp;quot;name&amp;quot;:&amp;quot;Device 1&amp;quot;,&lt;br /&gt;
             &amp;quot;name&amp;quot;:&amp;quot;Device 2&amp;quot;,&lt;br /&gt;
             &amp;quot;name&amp;quot;:&amp;quot;Device 3&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
      }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Derek</name></author>	</entry>

	<entry>
		<id>https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/login&amp;diff=167</id>
		<title>Sensaphone.net API/login</title>
		<link rel="alternate" type="text/html" href="https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/login&amp;diff=167"/>
				<updated>2017-09-07T20:49:32Z</updated>
		
		<summary type="html">&lt;p&gt;Derek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[[Sensaphone.net API]]=&lt;br /&gt;
&lt;br /&gt;
The Login API will be used to log in to the Sensaphone.net system. When a user logs in with their username and password they will be assigned a session UUID. The session UUID will have a corresponding time stamp and a timed expiration for their session. The session UUID and statically assigned Account ID will be used as the primary identifier instead of including a username and password in subsequent URI requests. &lt;br /&gt;
&lt;br /&gt;
==Example Call==&lt;br /&gt;
    https://sensaphone.net/api/v1/login/{USERNAME}/{PASSWORD}&lt;br /&gt;
&lt;br /&gt;
==Values==&lt;br /&gt;
*Username&lt;br /&gt;
*Password&lt;br /&gt;
*Session UUID&lt;br /&gt;
*Session Time stamp&lt;br /&gt;
*Session Expiration&lt;br /&gt;
&lt;br /&gt;
==Example Requests==&lt;br /&gt;
===GET===&lt;br /&gt;
'''URI Mode Request URI's:'''&lt;br /&gt;
*Receive Login information &lt;br /&gt;
    '''GET'''  https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSION}/login&lt;br /&gt;
*Receive a Login timestamp for a session &lt;br /&gt;
    '''GET''' https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSION}/login/login_timestamp&lt;br /&gt;
*Receive the number of seconds until a session expires &lt;br /&gt;
    '''GET''' https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSION}/login/session_expiration &lt;br /&gt;
&lt;br /&gt;
'''JSON MODE Request URI:'''&lt;br /&gt;
*Receive Login information &lt;br /&gt;
    '''POST'''  https://rest.sensaphone.net/api/v1/login&lt;br /&gt;
&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Request Property'''  | '''Status''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| acctid                       | Required     | Integer    | Static ID of user&lt;br /&gt;
}}{{TableRowN| session                         | Required     | Integer    | Session ID of user&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Response Property'''          | '''Included''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| login_timestamp                 | Optional     | String     | Time stamp of last log in&lt;br /&gt;
}}{{TableRowN| session_expiration              | Optional     | Integer    | Seconds until log in expiration&lt;br /&gt;
}}{{TableRowN| user_id              | Optional     | Integer    | ID of the logged in user&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
====Example JSON====&lt;br /&gt;
Log in with a username and password using JSON mode.&lt;br /&gt;
*'''Request JSON:'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;:&amp;quot;create&amp;quot;,&lt;br /&gt;
  &amp;quot;resource&amp;quot;: &amp;quot;login&amp;quot;,&lt;br /&gt;
  &amp;quot;user_name&amp;quot;: &amp;quot;myusername&amp;quot;,&lt;br /&gt;
  &amp;quot;password&amp;quot;: &amp;quot;pass123&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*'''Response JSON:'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;result&amp;quot;: {&lt;br /&gt;
   &amp;quot;success&amp;quot;: true,&lt;br /&gt;
   &amp;quot;code&amp;quot;: 0,&lt;br /&gt;
   &amp;quot;message&amp;quot;: &amp;quot;Success&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;response&amp;quot;: {&lt;br /&gt;
   &amp;quot;acctid&amp;quot;: 987654,&lt;br /&gt;
   &amp;quot;session&amp;quot;: &amp;quot;0123-4567-8901&amp;quot;,&lt;br /&gt;
   &amp;quot;login_timestamp&amp;quot;: 1499459402,&lt;br /&gt;
   &amp;quot;session_expiration&amp;quot;: 86400,&lt;br /&gt;
   &amp;quot;user_id&amp;quot;: 00000001&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Receive Login information for a given session UUID.&lt;br /&gt;
&lt;br /&gt;
*'''Request JSON:'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;request_type:&amp;quot;read&amp;quot;,&lt;br /&gt;
  &amp;quot;resource&amp;quot;:&amp;quot;login&amp;quot;,&lt;br /&gt;
  &amp;quot;acctid&amp;quot;:987654,&lt;br /&gt;
  &amp;quot;session&amp;quot;:&amp;quot;0123-4567-8901&amp;quot;,&lt;br /&gt;
  &amp;quot;login&amp;quot;:null&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*'''Response JSON:'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;result&amp;quot;:&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;success: true,&lt;br /&gt;
    &amp;quot;code&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;message&amp;quot;:&amp;quot;OK&amp;quot;,&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;response&amp;quot;:&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;login_timestamp&amp;quot;:&amp;quot;2014-12-31 23:59:59&amp;quot;,&lt;br /&gt;
      &amp;quot;session_expiration&amp;quot;:60&lt;br /&gt;
     }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
===PUT===&lt;br /&gt;
PUT will be used only to update a Login session.&lt;br /&gt;
&lt;br /&gt;
'''URI Mode Request URI:'''&lt;br /&gt;
*Request to update a Login session &lt;br /&gt;
   '''PUT'''  https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSION}/login&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
   '''POST'''  https://rest.sensaphone.net/api/v1/login&lt;br /&gt;
&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Request Property'''  | '''Status''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| acctid                  | Required     | Integer    | Static ID of user&lt;br /&gt;
}}{{TableRowN| session                    | Required     | Integer    | Session ID of user&lt;br /&gt;
}}{{TableRowN| user_name               | Optional     | String     | Username&lt;br /&gt;
}}{{TableRowN| password                | Optional     | String     | Password for username&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Response Property''' | '''Included''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| acctid                  | Conditionally*  | Integer    | Static ID of user&lt;br /&gt;
}}{{TableRowN| session                    | Conditionally*  | Integer    | Session ID of user&lt;br /&gt;
}}{{TableRowN| login_timestamp         | Always         | Integer    | Time stamp of renewed session&lt;br /&gt;
}}{{TableRowN| session_expiration      | Always         | Integer    | Time until new log in session expiration&lt;br /&gt;
}}{{TableRowN| user_id              | Always     | Integer    | ID of the logged in user&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; There may be an instance where the system needs to create a new Session ID and/or Account ID. In which case, it will be outputted in the PUT response.&lt;br /&gt;
&lt;br /&gt;
===POST===&lt;br /&gt;
'''URI Mode Request URI:'''&lt;br /&gt;
*Request for creating a new login session &lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/login/{USERNAME}/{PASSWORD}&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/login&lt;br /&gt;
&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Request Property'''  | '''Status''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| user_name               | Required     | String     | Username&lt;br /&gt;
}}{{TableRowN| password                | Required     | String     | Password for username&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Response Property''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| acctid                  | Integer    | Static ID of user&lt;br /&gt;
}}{{TableRowN| session                    | Integer    | Session ID of user&lt;br /&gt;
}}{{TableRowN| login_timestamp         | Integer    | Time stamp of renewed session&lt;br /&gt;
}}{{TableRowN| session_expiration      | Integer    | Time until new log in expiration&lt;br /&gt;
}}{{TableRowN| user_id               | Integer    | ID of the logged in user&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===DELETE===&lt;br /&gt;
Deleting a login session is the equivalent to logging out. &lt;br /&gt;
&lt;br /&gt;
'''URI Mode Request URI:'''&lt;br /&gt;
*Request to log out of a session &lt;br /&gt;
  '''DELETE''' https://rest.sensaphone.net/api/v1/login/{ACCTID}/{SESSION}&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/login&lt;br /&gt;
&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Request Property'''  | '''Status''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| acctid                  | Required     | Integer    | Static ID of user&lt;br /&gt;
}}{{TableRowN| session                    | Required     | Integer    | Session ID of user&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
==Future==&lt;br /&gt;
In the future the login process will support OAuth for advanced access and authentication.&lt;br /&gt;
&lt;br /&gt;
==Password Reset==&lt;br /&gt;
To reset a pass for a particular email, use the following request:&lt;br /&gt;
&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/login/reset_password/{email_address}&lt;/div&gt;</summary>
		<author><name>Derek</name></author>	</entry>

	<entry>
		<id>https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/login&amp;diff=166</id>
		<title>Sensaphone.net API/login</title>
		<link rel="alternate" type="text/html" href="https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/login&amp;diff=166"/>
				<updated>2017-07-07T20:40:34Z</updated>
		
		<summary type="html">&lt;p&gt;Derek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[[Sensaphone.net API]]=&lt;br /&gt;
&lt;br /&gt;
The Login API will be used to log in to the Sensaphone.net system. When a user logs in with their username and password they will be assigned a session UUID. The session UUID will have a corresponding time stamp and a timed expiration for their session. The session UUID and statically assigned Account ID will be used as the primary identifier instead of including a username and password in subsequent URI requests. &lt;br /&gt;
&lt;br /&gt;
==Example Call==&lt;br /&gt;
    https://sensaphone.net/api/v1/login/{USERNAME}/{PASSWORD}&lt;br /&gt;
&lt;br /&gt;
==Values==&lt;br /&gt;
*Username&lt;br /&gt;
*Password&lt;br /&gt;
*Session UUID&lt;br /&gt;
*Session Time stamp&lt;br /&gt;
*Session Expiration&lt;br /&gt;
&lt;br /&gt;
==Example Requests==&lt;br /&gt;
===GET===&lt;br /&gt;
'''URI Mode Request URI's:'''&lt;br /&gt;
*Receive Login information &lt;br /&gt;
    '''GET'''  https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSION}/login&lt;br /&gt;
*Receive a Login timestamp for a session &lt;br /&gt;
    '''GET''' https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSION}/login/login_timestamp&lt;br /&gt;
*Receive the number of seconds until a session expires &lt;br /&gt;
    '''GET''' https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSION}/login/session_expiration &lt;br /&gt;
&lt;br /&gt;
'''JSON MODE Request URI:'''&lt;br /&gt;
*Receive Login information &lt;br /&gt;
    '''POST'''  https://rest.sensaphone.net/api/v1/login&lt;br /&gt;
&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Request Property'''  | '''Status''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| acctid                       | Required     | Integer    | Static ID of user&lt;br /&gt;
}}{{TableRowN| session                         | Required     | Integer    | Session ID of user&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Response Property'''          | '''Included''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| login_timestamp                 | Optional     | String     | Time stamp of last log in&lt;br /&gt;
}}{{TableRowN| session_expiration              | Optional     | Integer    | Seconds until log in expiration&lt;br /&gt;
}}{{TableRowN| user_id              | Optional     | Integer    | ID of the logged in user&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
====Example JSON====&lt;br /&gt;
Log in with a username and password using JSON mode.&lt;br /&gt;
*'''Request JSON:'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;request_type:&amp;quot;create&amp;quot;,&lt;br /&gt;
  &amp;quot;resource&amp;quot;: &amp;quot;login&amp;quot;,&lt;br /&gt;
  &amp;quot;user_name&amp;quot;: &amp;quot;myusername&amp;quot;,&lt;br /&gt;
  &amp;quot;password&amp;quot;: &amp;quot;pass123&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*'''Response JSON:'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;result&amp;quot;: {&lt;br /&gt;
   &amp;quot;success&amp;quot;: true,&lt;br /&gt;
   &amp;quot;code&amp;quot;: 0,&lt;br /&gt;
   &amp;quot;message&amp;quot;: &amp;quot;Success&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;response&amp;quot;: {&lt;br /&gt;
   &amp;quot;acctid&amp;quot;: 987654,&lt;br /&gt;
   &amp;quot;session&amp;quot;: &amp;quot;0123-4567-8901&amp;quot;,&lt;br /&gt;
   &amp;quot;login_timestamp&amp;quot;: 1499459402,&lt;br /&gt;
   &amp;quot;session_expiration&amp;quot;: 86400,&lt;br /&gt;
   &amp;quot;user_id&amp;quot;: 00000001&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
Receive Login information for a given session UUID.&lt;br /&gt;
&lt;br /&gt;
*'''Request JSON:'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;request_type:&amp;quot;read&amp;quot;,&lt;br /&gt;
  &amp;quot;resource&amp;quot;:&amp;quot;login&amp;quot;,&lt;br /&gt;
  &amp;quot;acctid&amp;quot;:987654,&lt;br /&gt;
  &amp;quot;session&amp;quot;:&amp;quot;0123-4567-8901&amp;quot;,&lt;br /&gt;
  &amp;quot;login&amp;quot;:null&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*'''Response JSON:'''&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;result&amp;quot;:&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;success: true,&lt;br /&gt;
    &amp;quot;code&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;message&amp;quot;:&amp;quot;OK&amp;quot;,&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;response&amp;quot;:&lt;br /&gt;
     {&lt;br /&gt;
      &amp;quot;login_timestamp&amp;quot;:&amp;quot;2014-12-31 23:59:59&amp;quot;,&lt;br /&gt;
      &amp;quot;session_expiration&amp;quot;:60&lt;br /&gt;
     }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
===PUT===&lt;br /&gt;
PUT will be used only to update a Login session.&lt;br /&gt;
&lt;br /&gt;
'''URI Mode Request URI:'''&lt;br /&gt;
*Request to update a Login session &lt;br /&gt;
   '''PUT'''  https://rest.sensaphone.net/api/v1/{ACCTID}/{SESSION}/login&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
   '''POST'''  https://rest.sensaphone.net/api/v1/login&lt;br /&gt;
&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Request Property'''  | '''Status''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| acctid                  | Required     | Integer    | Static ID of user&lt;br /&gt;
}}{{TableRowN| session                    | Required     | Integer    | Session ID of user&lt;br /&gt;
}}{{TableRowN| user_name               | Optional     | String     | Username&lt;br /&gt;
}}{{TableRowN| password                | Optional     | String     | Password for username&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Response Property''' | '''Included''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| acctid                  | Conditionally*  | Integer    | Static ID of user&lt;br /&gt;
}}{{TableRowN| session                    | Conditionally*  | Integer    | Session ID of user&lt;br /&gt;
}}{{TableRowN| login_timestamp         | Always         | Integer    | Time stamp of renewed session&lt;br /&gt;
}}{{TableRowN| session_expiration      | Always         | Integer    | Time until new log in session expiration&lt;br /&gt;
}}{{TableRowN| user_id              | Always     | Integer    | ID of the logged in user&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; There may be an instance where the system needs to create a new Session ID and/or Account ID. In which case, it will be outputted in the PUT response.&lt;br /&gt;
&lt;br /&gt;
===POST===&lt;br /&gt;
'''URI Mode Request URI:'''&lt;br /&gt;
*Request for creating a new login session &lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/login/{USERNAME}/{PASSWORD}&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/login&lt;br /&gt;
&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Request Property'''  | '''Status''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| user_name               | Required     | String     | Username&lt;br /&gt;
}}{{TableRowN| password                | Required     | String     | Password for username&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Response Property''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| acctid                  | Integer    | Static ID of user&lt;br /&gt;
}}{{TableRowN| session                    | Integer    | Session ID of user&lt;br /&gt;
}}{{TableRowN| login_timestamp         | Integer    | Time stamp of renewed session&lt;br /&gt;
}}{{TableRowN| session_expiration      | Integer    | Time until new log in expiration&lt;br /&gt;
}}{{TableRowN| user_id               | Integer    | ID of the logged in user&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===DELETE===&lt;br /&gt;
Deleting a login session is the equivalent to logging out. &lt;br /&gt;
&lt;br /&gt;
'''URI Mode Request URI:'''&lt;br /&gt;
*Request to log out of a session &lt;br /&gt;
  '''DELETE''' https://rest.sensaphone.net/api/v1/login/{ACCTID}/{SESSION}&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/login&lt;br /&gt;
&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Request Property'''  | '''Status''' | '''Type''' | '''Description'''&lt;br /&gt;
}}{{TableRowN| acctid                  | Required     | Integer    | Static ID of user&lt;br /&gt;
}}{{TableRowN| session                    | Required     | Integer    | Session ID of user&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
==Future==&lt;br /&gt;
In the future the login process will support OAuth for advanced access and authentication.&lt;br /&gt;
&lt;br /&gt;
==Password Reset==&lt;br /&gt;
To reset a pass for a particular email, use the following request:&lt;br /&gt;
&lt;br /&gt;
  '''POST''' https://rest.sensaphone.net/api/v1/login/reset_password/{email_address}&lt;/div&gt;</summary>
		<author><name>Derek</name></author>	</entry>

	<entry>
		<id>https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/zone&amp;diff=165</id>
		<title>Sensaphone.net API/zone</title>
		<link rel="alternate" type="text/html" href="https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/zone&amp;diff=165"/>
				<updated>2017-06-09T18:18:28Z</updated>
		
		<summary type="html">&lt;p&gt;Derek: /* PUT */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[[Sensaphone.net API]]=&lt;br /&gt;
&lt;br /&gt;
==Specifications==&lt;br /&gt;
Different zones types may have different configurable properties than others. For example, a '''''2.8k Thermistor F''''' type Zone will have '''''calibration''''', '''''alarm low''''', and '''''alarm high''''' but a '''''Normally Open''''' type zone will not. If a request is made for a property not belonging to a zone type an error will be issued. Below is a chart showing the relations. A property is only available if the type metadata (The '''type_list''' property) has the checked options enabled. Whether or not the above properties correspond with a particular zone type is defined in the meta data for the zone types '''(included in v2 but not v1 of the API)'''. In addition, a property may be disabled at the global scale if it is 'null', regardless of this table. For example, the zone type's meta indicates that it is &amp;quot;External&amp;quot; but the &amp;quot;wireless_zone&amp;quot; field is 'null' on a &amp;quot;read&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Type Dependent Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN|'''Property'''|'''Digital'''|'''Analog'''|'''Internal'''|'''External'''|'''Generic'''|'''Input'''|'''Output'''|'''IP Alarm'''|'''Alarmable'''|'''Table Ranged'''|'''Loggable'''|'''Alarm Low'''|'''Alarm High'''&lt;br /&gt;
}}{{TableRowN| wireless_zone|''' '''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''&lt;br /&gt;
}}{{TableRowN| pulse_zone|'''&amp;amp;#x2713;'''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''&lt;br /&gt;
}}{{TableRowN| runtime_zone|'''&amp;amp;#x2713;'''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''&lt;br /&gt;
}}{{TableRowN| output_zone|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''&lt;br /&gt;
}}{{TableRowN| alarm_zone|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''&lt;br /&gt;
}}{{TableRowN| table_zone|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''|''' '''&lt;br /&gt;
}}{{TableRowN| loggable_zone|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''&lt;br /&gt;
}}{{TableRowN| alarm_low|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''&lt;br /&gt;
}}{{TableRowN| alarm_high|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''|''' '''|'''&amp;amp;#x2713;'''&lt;br /&gt;
}}{{TableRowN| modbus_zone|''' '''|''' '''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===Zone States===&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Zone State'''|'''Value'''   &lt;br /&gt;
}}{{TableRowN| None           | 0                         &lt;br /&gt;
}}{{TableRowN| Alarm          | 1                         &lt;br /&gt;
}}{{TableRowN| OK               | 2                      &lt;br /&gt;
}}{{TableRowN| Pending          | 3                        &lt;br /&gt;
}}{{TableRowN| Open           | 4                        &lt;br /&gt;
}}{{TableRowN| Closed             | 5                     &lt;br /&gt;
}}{{TableRowN| Cycle             | 6                   &lt;br /&gt;
}}{{TableRowN| Low             | 7                 &lt;br /&gt;
}}{{TableRowN| High             | 8                   &lt;br /&gt;
}}{{TableRowN| Off             | 9               &lt;br /&gt;
}}{{TableRowN| On             | 10                   &lt;br /&gt;
}}{{TableRowN| Return To Normal             | 11                  &lt;br /&gt;
}}{{TableRowN| Route Down             | 12                    &lt;br /&gt;
}}{{TableRowN| Trouble             | 13                    &lt;br /&gt;
}}{{TableRowN| Not Responding             | 14               &lt;br /&gt;
}}{{TableRowN| Dependency Failure             | 15                    &lt;br /&gt;
}}{{TableRowN| Battery             | 16                     &lt;br /&gt;
}}{{TableRowN| Acknowledged             | 17                   &lt;br /&gt;
}}{{TableRowN| Unacknowledged             | 18                   &lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''Output Mode Type''' {{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Child Property''' |'''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN|  name                   | String          | Name&lt;br /&gt;
}}{{TableRowN|  action                  | String          | Action&lt;br /&gt;
}}{{TableRowN|  zone_list             | Array of Objects           | List of zones&lt;br /&gt;
}}{{TableRowN| type_list                   | Array of Objects | List of Zone type&lt;br /&gt;
}}{{TableRowN|  trigger                    | String | Trigger&lt;br /&gt;
}}{{TableRowN|  compare_on                    | String | Compare On&lt;br /&gt;
}}{{TableRowN|  compare_off                    | String | Compare Off&lt;br /&gt;
}}{{TableRowN|  limit_on                    | Float | Limit On&lt;br /&gt;
}}{{TableRowN|  limit_off                    | Float | Limit Off&lt;br /&gt;
}}{{TableRowN|  zone_on                    | String | Zone On&lt;br /&gt;
}}{{TableRowN|  zone_off                    | String | Zone Off&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
=== GET ===&lt;br /&gt;
&lt;br /&gt;
An error will be issued if attempting to receive a Zone property that does not correspond to the Zone type.&lt;br /&gt;
&lt;br /&gt;
'''URI Mode Request URI's:'''&lt;br /&gt;
&lt;br /&gt;
*Retrieve all information for every one of a device's zones. &lt;br /&gt;
&lt;br /&gt;
   '''GET''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{DEVICE_ID}/zone&lt;br /&gt;
&lt;br /&gt;
*Retrieve all information for a single zone. &lt;br /&gt;
&lt;br /&gt;
   '''GET''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{DEVICE_ID}/zone/{ZONE_ID}&lt;br /&gt;
&lt;br /&gt;
*Retrieve the a specific zone's type. &lt;br /&gt;
&lt;br /&gt;
   '''GET''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{DEVICE_ID}/zone/{ZONE_ID}/type&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
&lt;br /&gt;
   '''POST''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/device/zone&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request Properties''' {{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property'''|'''Child Property''' |'''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | acctid                   | Integer          | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | session                  | Integer          | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | request_type             | String           | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | device                   | Array of Objects | The parent device of the &amp;quot;zone&amp;quot; resource. See [[Sensaphone.net_API/device|device]].&lt;br /&gt;
}}{{TableRowN| device          | zone                     | Array of Objects | The zone object&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Response Properties''' {{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''|'''Status'''| '''Type'''       | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | device             | Required   | Array of Objects | The parent device object.&lt;br /&gt;
}}{{TableRowN| device                | zone               | Required   | Array of Objects | The zone object.&lt;br /&gt;
}}{{TableRowN| zone                  | zone_id          | Required   | Integer          | ID of the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | index_id           | Optional   | Integer         | Zone ordering.&lt;br /&gt;
}}{{TableRowN| zone                  | name               | Optional   | String           | Name of the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | canonical_name        | Optional   | String  | Canonical name of the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | type               | Optional   | String           | The zone type. (Use a V2 [[Sensaphone.net_API/zone#GET|read command]] to retrieve the valid values)&lt;br /&gt;
}}{{TableRowN| type                  | type_list          | Optional   | Array of Objects | The zone type metadata.&lt;br /&gt;
}}{{TableRowN| type_list             | name               | Optional   | Boolean          | Zone Type Metadata: Name corresponds to the ranged values for the zone type.&lt;br /&gt;
}}{{TableRowN| type_list             | is_digital         | Optional   | Boolean          | Zone Type Metadata: Digital&lt;br /&gt;
}}{{TableRowN| type_list             | is_analog          | Optional   | Boolean          | Zone Type Metadata: Analog&lt;br /&gt;
}}{{TableRowN| type_list             | is_internal        | Optional   | Boolean          | Zone Type Metadata: Internal&lt;br /&gt;
}}{{TableRowN| type_list             | is_external        | Optional   | Boolean          | Zone Type Metadata: External&lt;br /&gt;
}}{{TableRowN| type_list             | is_generic         | Optional   | Boolean          | Zone Type Metadata: Generic&lt;br /&gt;
}}{{TableRowN| type_list             | is_input           | Optional   | Boolean          | Zone Type Metadata: Input&lt;br /&gt;
}}{{TableRowN| type_list             | is_output          | Optional   | Boolean          | Zone Type Metadata: Output&lt;br /&gt;
}}{{TableRowN| type_list             | is_ipalarm         | Optional   | Boolean          | Zone Type Metadata: IP Alarm&lt;br /&gt;
}}{{TableRowN| type_list             | is_alarmable       | Optional   | Boolean          | Zone Type Metadata: Alarmable&lt;br /&gt;
}}{{TableRowN| type_list             | is_tablerange      | Optional   | Boolean          | Zone Type Metadata: Table Ranged&lt;br /&gt;
}}{{TableRowN| type_list             | is_loggable        | Optional   | Boolean          | Zone Type Metadata: Loggable&lt;br /&gt;
}}{{TableRowN| type_list             | is_alarm_low       | Optional   | Boolean          | Zone Type Metadata: Alarm Low&lt;br /&gt;
}}{{TableRowN| type_list             | is_alarm_high      | Optional   | Boolean          | Zone Type Metadata: Alarm High&lt;br /&gt;
}}{{TableRowN| type_list             | units_list      | Optional   | Array of Ranges          | Zone Type Metadata: Possible Units&lt;br /&gt;
}}{{TableRowN| zone                  | enable             | Optional   | Boolean          | Whether or not the zone is enabled.&lt;br /&gt;
}}{{TableRowN| zone                  | value              | Optional   | String           | The data value for the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | units              | Optional   | String           | The custom units for the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | schedule           | Optional   | Object           | (See [[Sensaphone.net API/schedule|Sensaphone.net API/schedule]])&lt;br /&gt;
}}{{TableRowN| zone                  | alarm_zone         | Optional   | Object           | Sub-object containing data for alarmable zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_rtn          | Optional   | Boolean or null  | Whether or not a return-to-normal alarm is enabled. 'null' if the feature is not supported.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_hold         | Optional   | Integer          | The alarm hold (or clear delay) time.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_enable       | Optional   | Boolean          | Whether or not alarming is enabled for this zone.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | rec_time           | Optional   | Integer          | The alarm recognition time.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | reset_time         | Optional   | Integer          | The alarm reset time.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_low         | Optional   | Floating Point          | The alarm low limit.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_high         | Optional   | Floating Point          | The alarm high limit.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_condition         | Optional   | Array of ZoneState          |  The highest priority ZoneState that has been reached&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_status         | Optional   | Array of ZoneState          |   The processed status of the zone ( returns 2 ZoneStates)&lt;br /&gt;
}}{{TableRowN| alarm_zone            | current_status         | Optional   | Array of ZoneState          |  The real-time status of the zone input (returns 1 ZoneState)&lt;br /&gt;
}}{{TableRowN| alarm_zone            | unack_alarms         | Optional   | Array of ZoneState          |  Alarm states that are currently unacknowledged &lt;br /&gt;
}}{{TableRowN| alarm_zone                  | alarmschedule           | Optional   | Object           | (See [[Sensaphone.net API/alarmschedule |Sensaphone.net API/alarmschedule]])&lt;br /&gt;
}}{{TableRowN| zone                  | analog_zone        | Optional   | Object           | Sub-object containing data for analog zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| analog_zone           | minimum            | Optional   | Floating Point   | The minimum &amp;quot;value&amp;quot; seen.&lt;br /&gt;
}}{{TableRowN| analog_zone           | maximum            | Optional   | Floating Point   | The maximum &amp;quot;value&amp;quot; seen.&lt;br /&gt;
}}{{TableRowN| analog_zone           | calibration        | Optional   | Floating Point   | The calibration factor applied to the &amp;quot;value&amp;quot;.&lt;br /&gt;
}}{{TableRowN| zone                  | table_zone         | Optional   | Object           | Sub-object containing data for table-based zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| table_zone            | table_low                | Optional   | Floating Point   | The low table range for the zone. Used for 4-20mA sensors.&lt;br /&gt;
}}{{TableRowN| table_zone            | table_high               | Optional   | Floating Point   | The high table range for the zone. Used for 4-20mA sensors.&lt;br /&gt;
}}{{TableRowN| zone                  | log_zone           | Optional   | Object           | Sub-object containing data for loggable zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| log_zone              | report_mode        | Optional   | String           | The reporting option.&lt;br /&gt;
}}{{TableRowN| log_zone              | alarm_interval     | Optional   | Integer          | The datalogging interval for when in alarm.&lt;br /&gt;
}}{{TableRowN| log_zone              | normal_interval    | Optional   | Integer          | The datalogging interval for when not in alarm.&lt;br /&gt;
}}{{TableRowN| log_zone              | enable             | Optional   | Boolean          | Whether or not datalogging is enabled.&lt;br /&gt;
}}{{TableRowN| zone                  | pulse_zone         | Optional   | Object           | Sub-object containing data for pulse count capable zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| pulse_zone            | enable             | Optional   | Boolean          | Whether or not pulse counting is enabled for this zone.&lt;br /&gt;
}}{{TableRowN| pulse_zone            | multiply           | Optional   | Integer          | The multiplication factor to apply to each pulse.&lt;br /&gt;
}}{{TableRowN| pulse_zone            | count              | Optional   | Integer          | The number of pulses seen (after multiply has been applied)&lt;br /&gt;
}}{{TableRowN| zone                  | runtime_zone       | Optional   | Object           | Sub-object containing data for runtime capable zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| runtime_zone          | enable             | Optional   | Boolean          | Whether or not runtime is enabled for this zone.&lt;br /&gt;
}}{{TableRowN| runtime_zone          | runtime            | Optional   | String           | The run time elapsed.&lt;br /&gt;
}}{{TableRowN| zone                  | modbus_zone        | Optional   | Object           | Sub-object containing data for modbus zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| modbus_zone           | media_port         | Optional   | String           | The modbus media port&lt;br /&gt;
}}{{TableRowN| modbus_zone           | slave_id           | Optional   | Integer          | The modbus slave ID&lt;br /&gt;
}}{{TableRowN| modbus_zone           | command            | Optional   | String           | The modbus command&lt;br /&gt;
}}{{TableRowN| modbus_zone           | address            | Optional   | Integer          | The modbus address&lt;br /&gt;
}}{{TableRowN| modbus_zone           | byte_order         | Optional   | String           | The modbus byte order&lt;br /&gt;
}}{{TableRowN| modbus_zone           | register_order     | Optional   | String           | The modbus register order&lt;br /&gt;
}}{{TableRowN| modbus_zone           | register_size      | Optional   | String           | The modbus register size&lt;br /&gt;
}}{{TableRowN| modbus_zone           | format             | Optional   | String           | The modbus format&lt;br /&gt;
}}{{TableRowN| modbus_zone           | sign               | Optional   | String           | The modbus sign&lt;br /&gt;
}}{{TableRowN| modbus_zone           | scaling_offset     | Optional   | Integer          | The modbus scaling offset&lt;br /&gt;
}}{{TableRowN| modbus_zone           | scaling_factor     | Optional   | Integer          | The modbus scaling factor&lt;br /&gt;
}}{{TableRowN| modbus_zone           | scaling_mode       | Optional   | String           | The modbus scaling mode&lt;br /&gt;
}}{{TableRowN| zone                  | output_zone        | Optional   | Object           | Sub-object containing data for output zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| output_zone           | mode               | Optional   | Output Mode Type           | The output mode&lt;br /&gt;
}}{{TableRowN| output_zone           | mode_list          | Optional   | Array of  Output Mode Type           | The list of output modes&lt;br /&gt;
}}{{TableRowN| output_zone           | set_point_on       | Optional   | Floating Point   | The output set point for the &amp;quot;on&amp;quot; state.&lt;br /&gt;
}}{{TableRowN| output_zone           | set_point_off      | Optional   | Floating Point   | The output set point for the &amp;quot;off&amp;quot; state.&lt;br /&gt;
}}{{TableRowN| zone                  | wireless_zone      | Optional   | Object           | Sub-object containing data for wireless zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| wireless_zone         | sampling_rate      | Optional   | Integer          | The sampling rate for the sensor&lt;br /&gt;
}}{{TableRowN| wireless_zone         | serial_number      | Optional   | Integer          | The serial number for the wireless sensor.&lt;br /&gt;
}}{{TableRowN| wireless_zone         | battery_level      | Optional   | String           | The wireless sensor's battery level.&lt;br /&gt;
}}{{TableRowN| wireless_zone         | power_level        | Optional   | String           | The wireless sensor's power level.&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
==== Example JSON ====&lt;br /&gt;
&lt;br /&gt;
Receive the status for a specific Zone.&lt;br /&gt;
&lt;br /&gt;
*'''Request JSON''' &lt;br /&gt;
&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;acctid&amp;quot;: 987654,&lt;br /&gt;
    &amp;quot;uuid&amp;quot;: &amp;quot;0123-4567-8901&amp;quot;,&lt;br /&gt;
    &amp;quot;request_type&amp;quot;: &amp;quot;read&amp;quot;,&lt;br /&gt;
    &amp;quot;device&amp;quot;:[&lt;br /&gt;
     {&lt;br /&gt;
       &amp;quot;device_id&amp;quot;: 1234,&lt;br /&gt;
       &amp;quot;zone&amp;quot;:[&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;zone_id&amp;quot;:28487,&lt;br /&gt;
          &amp;quot;status&amp;quot;: &amp;quot;null&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
       ]&lt;br /&gt;
     }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
*'''Response JSON''' &lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;result&amp;quot;:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;success&amp;quot;: true,&lt;br /&gt;
    &amp;quot;code&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;message&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;response&amp;quot;:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;device&amp;quot;:[&lt;br /&gt;
     {&lt;br /&gt;
       &amp;quot;device_id&amp;quot;: 1234,&lt;br /&gt;
       &amp;quot;zone&amp;quot;:[&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;zone_id&amp;quot;: 28487,&lt;br /&gt;
          &amp;quot;status&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
       ]&lt;br /&gt;
     }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===PUT===&lt;br /&gt;
'''URI Mode Request URI's:'''&lt;br /&gt;
*Edit a Zone name &lt;br /&gt;
   '''PUT'''  &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{DEVICE_ID}/zone/{ZONE_ID}/name/{ZONE_NAME}&lt;br /&gt;
*Edit a Zone's recognition time value &lt;br /&gt;
   '''PUT'''  &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{DEVICE_ID}/zone/{ZONE_ID}/alarm_zone/rec_time/{REC_TIME}&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
   '''POST''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/device/zone&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property'''|'''Child Property''' |'''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | acctid                   | Integer          | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | session                  | Integer          | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | request_type             | String           | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | device                   | Array of Objects | The parent device of the &amp;quot;zone&amp;quot; resource. See [[Sensaphone.net_API/device|device]].&lt;br /&gt;
}}{{TableRowN| device          | zone                     | Array of Objects | The zone object.&lt;br /&gt;
}}{{TableRowN| zone            | zone_id                  | Integer          | ID of the zone.&lt;br /&gt;
}}{{TableRowN| zone            | '''''CHILD PROPERTY''''' | &amp;amp;nbsp;           | Zone's child properties to be edited*&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; One or more '''zone''' child properties listed below are required in addition to &amp;quot;zone_id&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''|'''Status'''| '''Type'''       | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | device             | Required   | Array of Objects | The parent device object.&lt;br /&gt;
}}{{TableRowN| device                | zone               | Required   | Array of Objects | The zone object.&lt;br /&gt;
}}{{TableRowN| zone                  | zone_id          | Required   | Integer          | ID of the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | index_id           | Optional   | Integer          | Zone ordering.&lt;br /&gt;
}}{{TableRowN| zone                  | name               | Optional   | String           | Name of the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | type               | Optional   | String           | The zone type. (Use a V2 [[Sensaphone.net_API/zone#GET|read command]] to retrieve the valid values)&lt;br /&gt;
}}{{TableRowN| zone                  | enable             | Optional   | Boolean          | Whether or not the zone is enabled.&lt;br /&gt;
}}{{TableRowN| zone                  | value              | Optional   | String           | The data value for the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | units              | Optional   | String           | The custom units for the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | schedule           | Optional   | Object           | (See [[Sensaphone.net API/schedule|Sensaphone.net API/schedule]])&lt;br /&gt;
}}{{TableRowN| zone                  | alarm_zone         | Optional   | Object           | Sub-object containing data for alarmable zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_rtn          | Optional   | Boolean or null  | Whether or not a return-to-normal alarm is enabled. 'null' if the feature is not supported.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_hold         | Optional   | Integer          | The alarm hold (or clear delay) time.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_enable       | Optional   | Boolean          | Whether or not alarming is enabled for this zone.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | rec_time           | Optional   | Integer          | The alarm recognition time.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | reset_time         | Optional   | Integer          | The alarm reset time.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_low         | Optional   | Floating Point          | The alarm low limit.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_high         | Optional   | Floating Point          | The alarm high limit.&lt;br /&gt;
}}{{TableRowN| alarm_zone                  | alarmschedule           | Optional   | Object           | (See [[Sensaphone.net API/alarmschedule |Sensaphone.net API/alarmschedule]])&lt;br /&gt;
}}{{TableRowN| zone                  | analog_zone        | Optional   | Object           | Sub-object containing data for analog zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| analog_zone           | minimum          | Optional   | Boolean          | Clear the minimum value.&lt;br /&gt;
}}{{TableRowN| analog_zone           | maximum          | Optional   | Boolean          | Clear the maximum value.&lt;br /&gt;
}}{{TableRowN| analog_zone           | calibration        | Optional   | Floating Point   | The calibration factor applied to the &amp;quot;value&amp;quot;.&lt;br /&gt;
}}{{TableRowN| zone                  | table_zone         | Optional   | Object           | Sub-object containing data for table-based zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| table_zone            | table_low                | Optional   | Floating Point   | The low table range for the zone. Used for 4-20mA sensors.&lt;br /&gt;
}}{{TableRowN| table_zone            | table_high               | Optional   | Floating Point   | The high table range for the zone. Used for 4-20mA sensors.&lt;br /&gt;
}}{{TableRowN| zone                  | log_zone           | Optional   | Object           | Sub-object containing data for loggable zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| log_zone              | report_mode        | Optional   | String           | The reporting option.&lt;br /&gt;
}}{{TableRowN| log_zone              | alarm_interval     | Optional   | Integer          | The datalogging interval for when in alarm.&lt;br /&gt;
}}{{TableRowN| log_zone              | normal_interval    | Optional   | Integer          | The datalogging interval for when not in alarm.&lt;br /&gt;
}}{{TableRowN| log_zone              | enable             | Optional   | Boolean          | Whether or not datalogging is enabled.&lt;br /&gt;
}}{{TableRowN| zone                  | pulse_zone         | Optional   | Object           | Sub-object containing data for pulse count capable zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| pulse_zone            | enable             | Optional   | Boolean          | Whether or not pulse counting is enabled for this zone.&lt;br /&gt;
}}{{TableRowN| pulse_zone            | multiply           | Optional   | Integer          | The multiplication factor to apply to each pulse.&lt;br /&gt;
}}{{TableRowN| pulse_zone            | count              | Optional   | Integer          | The number of pulses seen (after multiply has been applied)&lt;br /&gt;
}}{{TableRowN| zone                  | runtime_zone       | Optional   | Object           | Sub-object containing data for runtime capable zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| runtime_zone          | enable             | Optional   | Boolean          | Whether or not runtime is enabled for this zone.&lt;br /&gt;
}}{{TableRowN| runtime_zone          | runtime            | Optional   | String           | The run time elapsed.&lt;br /&gt;
}}{{TableRowN| zone                  | modbus_zone        | Optional   | Object           | Sub-object containing data for modbus zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| modbus_zone           | media_port         | Optional   | String           | The modbus media port&lt;br /&gt;
}}{{TableRowN| modbus_zone           | slave_id           | Optional   | Integer          | The modbus slave ID&lt;br /&gt;
}}{{TableRowN| modbus_zone           | command            | Optional   | String           | The modbus command&lt;br /&gt;
}}{{TableRowN| modbus_zone           | address            | Optional   | Integer          | The modbus address&lt;br /&gt;
}}{{TableRowN| modbus_zone           | byte_order         | Optional   | String           | The modbus byte order&lt;br /&gt;
}}{{TableRowN| modbus_zone           | register_order     | Optional   | String           | The modbus register order&lt;br /&gt;
}}{{TableRowN| modbus_zone           | register_size      | Optional   | String           | The modbus register size&lt;br /&gt;
}}{{TableRowN| modbus_zone           | format             | Optional   | String           | The modbus format&lt;br /&gt;
}}{{TableRowN| modbus_zone           | sign               | Optional   | String           | The modbus sign&lt;br /&gt;
}}{{TableRowN| modbus_zone           | scaling_offset     | Optional   | Integer          | The modbus scaling offset&lt;br /&gt;
}}{{TableRowN| modbus_zone           | scaling_factor     | Optional   | Integer          | The modbus scaling factor&lt;br /&gt;
}}{{TableRowN| modbus_zone           | scaling_mode       | Optional   | String           | The modbus scaling mode&lt;br /&gt;
}}{{TableRowN| zone                  | output_zone        | Optional   | Object           | Sub-object containing data for output zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| output_zone           | mode               | Optional   | String           | The output mode&lt;br /&gt;
}}{{TableRowN| output_zone           | mode_list          | Optional   | String           | The list of output modes&lt;br /&gt;
}}{{TableRowN| output_zone           | set_point_on       | Optional   | Floating Point   | The output set point for the &amp;quot;on&amp;quot; state.&lt;br /&gt;
}}{{TableRowN| output_zone           | set_point_off      | Optional   | Floating Point   | The output set point for the &amp;quot;off&amp;quot; state.&lt;br /&gt;
}}{{TableRowN| output_zone           | value      | Optional   | Floating Point   | *Write Only* set the value of the output zone&lt;br /&gt;
}}{{TableRowN| zone                  | wireless_zone      | Optional   | Object           | Sub-object containing data for wireless zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| wireless_zone         | sampling_rate      | Optional   | Integer          | The sampling rate for the sensor&lt;br /&gt;
}}{{TableRowN| wireless_zone         | serial_number      | Optional   | Integer          | The serial number for the wireless sensor.&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===POST===&lt;br /&gt;
'''URI Mode Request URI's:'''&lt;br /&gt;
*Acknowledge All Zone Alarms&lt;br /&gt;
   '''POST'''  &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{DEVICE_ID}/zone/{ZONE_ID}/alarm_zone/acknowledge_all_alarms/{true}&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
   '''POST''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/device/zone&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property'''|'''Child Property''' |'''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | acctid                   | Integer          | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | session                  | Integer          | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | request_type             | String           | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | device                   | Array of Objects | The parent device of the &amp;quot;zone&amp;quot; resource. See [[Sensaphone.net_API/device|device]].&lt;br /&gt;
}}{{TableRowN| device          | zone                     | Array of Objects | The zone object.&lt;br /&gt;
}}{{TableRowN| zone            | zone_id                  | Integer          | ID of the zone.&lt;br /&gt;
}}{{TableRowN| zone            | alarm_zone | Object           |  Sub-object containing data for alarmable zones&lt;br /&gt;
}}{{TableRowN| alarm_zone            | acknowledge_alarms | Array of Zone State           |  A write-only property to acknowledge specific alarms&lt;br /&gt;
}}{{TableRowN| alarm_zone            | acknowledge_all_alarms | Boolean           |  A write-only property to acknowledge all alarms for a zone&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; &amp;quot;acknowledge_all_alarms&amp;quot; supersedes &amp;quot;acknowledge_alarms&amp;quot;, if it is present in the request json other properties will be ignored&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Result Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''|'''Status'''| '''Type'''       | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | device             | Required   | Array of Objects | The parent device object.&lt;br /&gt;
}}{{TableRowN| device                | zone               | Required   | Array of Objects | The zone object.&lt;br /&gt;
}}{{TableRowN| zone                  | zone_id          | Required   | Integer          | ID of the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | alarm_zone         | Required   | Object           | Sub-object containing data for alarmable zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | acknowledge_alarms          | Optional   | Array of Zone State  |  A write-only property to acknowledge specific alarms&lt;br /&gt;
}}{{TableRowN| alarm_zone            | acknowledge_all_alarms         | Optional   | Boolean          | A write-only property to acknowledge all alarms for a zone&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
=== Example JSON ===&lt;br /&gt;
&lt;br /&gt;
Acknowledge an alarm for a Zone&lt;br /&gt;
&lt;br /&gt;
*'''Request JSON''' &lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;: &amp;quot;create&amp;quot;,&lt;br /&gt;
  &amp;quot;resource&amp;quot;: &amp;quot;device&amp;quot;,&lt;br /&gt;
  &amp;quot;acctid&amp;quot;: 987654,&lt;br /&gt;
  &amp;quot;session&amp;quot;: &amp;quot;0123-4567-8901&amp;quot;,&lt;br /&gt;
  &amp;quot;device&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;device_id&amp;quot;: 1234,&lt;br /&gt;
      &amp;quot;zone&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;zone_id&amp;quot;: 7,&lt;br /&gt;
          &amp;quot;alarm_zone&amp;quot;: {&lt;br /&gt;
            &amp;quot;acknowledge_alarms&amp;quot;: [&lt;br /&gt;
              11,&lt;br /&gt;
              4&lt;br /&gt;
            ]&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*'''Response JSON''' &lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;result&amp;quot;: {&lt;br /&gt;
    &amp;quot;success&amp;quot;: true,&lt;br /&gt;
    &amp;quot;code&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;message&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;device&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;device_id&amp;quot;: 1234,&lt;br /&gt;
          &amp;quot;zone&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;alarm_zone&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                  &amp;quot;acknowledge_alarms&amp;quot;: 11,&lt;br /&gt;
                  &amp;quot;code&amp;quot;: 0,&lt;br /&gt;
                  &amp;quot;message&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
                  &amp;quot;success&amp;quot;: true&lt;br /&gt;
                },&lt;br /&gt;
                {&lt;br /&gt;
                  &amp;quot;acknowledge_alarms&amp;quot;: 4,&lt;br /&gt;
                  &amp;quot;code&amp;quot;: 0,&lt;br /&gt;
                  &amp;quot;message&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
                  &amp;quot;success&amp;quot;: true&lt;br /&gt;
                }&lt;br /&gt;
              ],&lt;br /&gt;
              &amp;quot;zone_id&amp;quot;: 7&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Derek</name></author>	</entry>

	<entry>
		<id>https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/zone&amp;diff=164</id>
		<title>Sensaphone.net API/zone</title>
		<link rel="alternate" type="text/html" href="https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/zone&amp;diff=164"/>
				<updated>2017-02-21T15:43:42Z</updated>
		
		<summary type="html">&lt;p&gt;Derek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[[Sensaphone.net API]]=&lt;br /&gt;
&lt;br /&gt;
==Specifications==&lt;br /&gt;
Different zones types may have different configurable properties than others. For example, a '''''2.8k Thermistor F''''' type Zone will have '''''calibration''''', '''''alarm low''''', and '''''alarm high''''' but a '''''Normally Open''''' type zone will not. If a request is made for a property not belonging to a zone type an error will be issued. Below is a chart showing the relations. A property is only available if the type metadata (The '''type_list''' property) has the checked options enabled. Whether or not the above properties correspond with a particular zone type is defined in the meta data for the zone types '''(included in v2 but not v1 of the API)'''. In addition, a property may be disabled at the global scale if it is 'null', regardless of this table. For example, the zone type's meta indicates that it is &amp;quot;External&amp;quot; but the &amp;quot;wireless_zone&amp;quot; field is 'null' on a &amp;quot;read&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''Type Dependent Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN|'''Property'''|'''Digital'''|'''Analog'''|'''Internal'''|'''External'''|'''Generic'''|'''Input'''|'''Output'''|'''IP Alarm'''|'''Alarmable'''|'''Table Ranged'''|'''Loggable'''|'''Alarm Low'''|'''Alarm High'''&lt;br /&gt;
}}{{TableRowN| wireless_zone|''' '''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''&lt;br /&gt;
}}{{TableRowN| pulse_zone|'''&amp;amp;#x2713;'''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''&lt;br /&gt;
}}{{TableRowN| runtime_zone|'''&amp;amp;#x2713;'''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''&lt;br /&gt;
}}{{TableRowN| output_zone|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''&lt;br /&gt;
}}{{TableRowN| alarm_zone|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''&lt;br /&gt;
}}{{TableRowN| table_zone|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''|''' '''&lt;br /&gt;
}}{{TableRowN| loggable_zone|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''&lt;br /&gt;
}}{{TableRowN| alarm_low|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''&lt;br /&gt;
}}{{TableRowN| alarm_high|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''|''' '''|'''&amp;amp;#x2713;'''&lt;br /&gt;
}}{{TableRowN| modbus_zone|''' '''|''' '''|''' '''|''' '''|'''&amp;amp;#x2713;'''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''|''' '''&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===Zone States===&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Zone State'''|'''Value'''   &lt;br /&gt;
}}{{TableRowN| None           | 0                         &lt;br /&gt;
}}{{TableRowN| Alarm          | 1                         &lt;br /&gt;
}}{{TableRowN| OK               | 2                      &lt;br /&gt;
}}{{TableRowN| Pending          | 3                        &lt;br /&gt;
}}{{TableRowN| Open           | 4                        &lt;br /&gt;
}}{{TableRowN| Closed             | 5                     &lt;br /&gt;
}}{{TableRowN| Cycle             | 6                   &lt;br /&gt;
}}{{TableRowN| Low             | 7                 &lt;br /&gt;
}}{{TableRowN| High             | 8                   &lt;br /&gt;
}}{{TableRowN| Off             | 9               &lt;br /&gt;
}}{{TableRowN| On             | 10                   &lt;br /&gt;
}}{{TableRowN| Return To Normal             | 11                  &lt;br /&gt;
}}{{TableRowN| Route Down             | 12                    &lt;br /&gt;
}}{{TableRowN| Trouble             | 13                    &lt;br /&gt;
}}{{TableRowN| Not Responding             | 14               &lt;br /&gt;
}}{{TableRowN| Dependency Failure             | 15                    &lt;br /&gt;
}}{{TableRowN| Battery             | 16                     &lt;br /&gt;
}}{{TableRowN| Acknowledged             | 17                   &lt;br /&gt;
}}{{TableRowN| Unacknowledged             | 18                   &lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''Output Mode Type''' {{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Child Property''' |'''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN|  name                   | String          | Name&lt;br /&gt;
}}{{TableRowN|  action                  | String          | Action&lt;br /&gt;
}}{{TableRowN|  zone_list             | Array of Objects           | List of zones&lt;br /&gt;
}}{{TableRowN| type_list                   | Array of Objects | List of Zone type&lt;br /&gt;
}}{{TableRowN|  trigger                    | String | Trigger&lt;br /&gt;
}}{{TableRowN|  compare_on                    | String | Compare On&lt;br /&gt;
}}{{TableRowN|  compare_off                    | String | Compare Off&lt;br /&gt;
}}{{TableRowN|  limit_on                    | Float | Limit On&lt;br /&gt;
}}{{TableRowN|  limit_off                    | Float | Limit Off&lt;br /&gt;
}}{{TableRowN|  zone_on                    | String | Zone On&lt;br /&gt;
}}{{TableRowN|  zone_off                    | String | Zone Off&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
=== GET ===&lt;br /&gt;
&lt;br /&gt;
An error will be issued if attempting to receive a Zone property that does not correspond to the Zone type.&lt;br /&gt;
&lt;br /&gt;
'''URI Mode Request URI's:'''&lt;br /&gt;
&lt;br /&gt;
*Retrieve all information for every one of a device's zones. &lt;br /&gt;
&lt;br /&gt;
   '''GET''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{DEVICE_ID}/zone&lt;br /&gt;
&lt;br /&gt;
*Retrieve all information for a single zone. &lt;br /&gt;
&lt;br /&gt;
   '''GET''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{DEVICE_ID}/zone/{ZONE_ID}&lt;br /&gt;
&lt;br /&gt;
*Retrieve the a specific zone's type. &lt;br /&gt;
&lt;br /&gt;
   '''GET''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{DEVICE_ID}/zone/{ZONE_ID}/type&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
&lt;br /&gt;
   '''POST''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/device/zone&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request Properties''' {{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property'''|'''Child Property''' |'''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | acctid                   | Integer          | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | session                  | Integer          | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | request_type             | String           | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | device                   | Array of Objects | The parent device of the &amp;quot;zone&amp;quot; resource. See [[Sensaphone.net_API/device|device]].&lt;br /&gt;
}}{{TableRowN| device          | zone                     | Array of Objects | The zone object&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Response Properties''' {{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''|'''Status'''| '''Type'''       | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | device             | Required   | Array of Objects | The parent device object.&lt;br /&gt;
}}{{TableRowN| device                | zone               | Required   | Array of Objects | The zone object.&lt;br /&gt;
}}{{TableRowN| zone                  | zone_id          | Required   | Integer          | ID of the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | index_id           | Optional   | Integer         | Zone ordering.&lt;br /&gt;
}}{{TableRowN| zone                  | name               | Optional   | String           | Name of the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | canonical_name        | Optional   | String  | Canonical name of the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | type               | Optional   | String           | The zone type. (Use a V2 [[Sensaphone.net_API/zone#GET|read command]] to retrieve the valid values)&lt;br /&gt;
}}{{TableRowN| type                  | type_list          | Optional   | Array of Objects | The zone type metadata.&lt;br /&gt;
}}{{TableRowN| type_list             | name               | Optional   | Boolean          | Zone Type Metadata: Name corresponds to the ranged values for the zone type.&lt;br /&gt;
}}{{TableRowN| type_list             | is_digital         | Optional   | Boolean          | Zone Type Metadata: Digital&lt;br /&gt;
}}{{TableRowN| type_list             | is_analog          | Optional   | Boolean          | Zone Type Metadata: Analog&lt;br /&gt;
}}{{TableRowN| type_list             | is_internal        | Optional   | Boolean          | Zone Type Metadata: Internal&lt;br /&gt;
}}{{TableRowN| type_list             | is_external        | Optional   | Boolean          | Zone Type Metadata: External&lt;br /&gt;
}}{{TableRowN| type_list             | is_generic         | Optional   | Boolean          | Zone Type Metadata: Generic&lt;br /&gt;
}}{{TableRowN| type_list             | is_input           | Optional   | Boolean          | Zone Type Metadata: Input&lt;br /&gt;
}}{{TableRowN| type_list             | is_output          | Optional   | Boolean          | Zone Type Metadata: Output&lt;br /&gt;
}}{{TableRowN| type_list             | is_ipalarm         | Optional   | Boolean          | Zone Type Metadata: IP Alarm&lt;br /&gt;
}}{{TableRowN| type_list             | is_alarmable       | Optional   | Boolean          | Zone Type Metadata: Alarmable&lt;br /&gt;
}}{{TableRowN| type_list             | is_tablerange      | Optional   | Boolean          | Zone Type Metadata: Table Ranged&lt;br /&gt;
}}{{TableRowN| type_list             | is_loggable        | Optional   | Boolean          | Zone Type Metadata: Loggable&lt;br /&gt;
}}{{TableRowN| type_list             | is_alarm_low       | Optional   | Boolean          | Zone Type Metadata: Alarm Low&lt;br /&gt;
}}{{TableRowN| type_list             | is_alarm_high      | Optional   | Boolean          | Zone Type Metadata: Alarm High&lt;br /&gt;
}}{{TableRowN| type_list             | units_list      | Optional   | Array of Ranges          | Zone Type Metadata: Possible Units&lt;br /&gt;
}}{{TableRowN| zone                  | enable             | Optional   | Boolean          | Whether or not the zone is enabled.&lt;br /&gt;
}}{{TableRowN| zone                  | value              | Optional   | String           | The data value for the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | units              | Optional   | String           | The custom units for the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | schedule           | Optional   | Object           | (See [[Sensaphone.net API/schedule|Sensaphone.net API/schedule]])&lt;br /&gt;
}}{{TableRowN| zone                  | alarm_zone         | Optional   | Object           | Sub-object containing data for alarmable zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_rtn          | Optional   | Boolean or null  | Whether or not a return-to-normal alarm is enabled. 'null' if the feature is not supported.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_hold         | Optional   | Integer          | The alarm hold (or clear delay) time.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_enable       | Optional   | Boolean          | Whether or not alarming is enabled for this zone.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | rec_time           | Optional   | Integer          | The alarm recognition time.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | reset_time         | Optional   | Integer          | The alarm reset time.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_low         | Optional   | Floating Point          | The alarm low limit.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_high         | Optional   | Floating Point          | The alarm high limit.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_condition         | Optional   | Array of ZoneState          |  The highest priority ZoneState that has been reached&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_status         | Optional   | Array of ZoneState          |   The processed status of the zone ( returns 2 ZoneStates)&lt;br /&gt;
}}{{TableRowN| alarm_zone            | current_status         | Optional   | Array of ZoneState          |  The real-time status of the zone input (returns 1 ZoneState)&lt;br /&gt;
}}{{TableRowN| alarm_zone            | unack_alarms         | Optional   | Array of ZoneState          |  Alarm states that are currently unacknowledged &lt;br /&gt;
}}{{TableRowN| alarm_zone                  | alarmschedule           | Optional   | Object           | (See [[Sensaphone.net API/alarmschedule |Sensaphone.net API/alarmschedule]])&lt;br /&gt;
}}{{TableRowN| zone                  | analog_zone        | Optional   | Object           | Sub-object containing data for analog zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| analog_zone           | minimum            | Optional   | Floating Point   | The minimum &amp;quot;value&amp;quot; seen.&lt;br /&gt;
}}{{TableRowN| analog_zone           | maximum            | Optional   | Floating Point   | The maximum &amp;quot;value&amp;quot; seen.&lt;br /&gt;
}}{{TableRowN| analog_zone           | calibration        | Optional   | Floating Point   | The calibration factor applied to the &amp;quot;value&amp;quot;.&lt;br /&gt;
}}{{TableRowN| zone                  | table_zone         | Optional   | Object           | Sub-object containing data for table-based zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| table_zone            | table_low                | Optional   | Floating Point   | The low table range for the zone. Used for 4-20mA sensors.&lt;br /&gt;
}}{{TableRowN| table_zone            | table_high               | Optional   | Floating Point   | The high table range for the zone. Used for 4-20mA sensors.&lt;br /&gt;
}}{{TableRowN| zone                  | log_zone           | Optional   | Object           | Sub-object containing data for loggable zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| log_zone              | report_mode        | Optional   | String           | The reporting option.&lt;br /&gt;
}}{{TableRowN| log_zone              | alarm_interval     | Optional   | Integer          | The datalogging interval for when in alarm.&lt;br /&gt;
}}{{TableRowN| log_zone              | normal_interval    | Optional   | Integer          | The datalogging interval for when not in alarm.&lt;br /&gt;
}}{{TableRowN| log_zone              | enable             | Optional   | Boolean          | Whether or not datalogging is enabled.&lt;br /&gt;
}}{{TableRowN| zone                  | pulse_zone         | Optional   | Object           | Sub-object containing data for pulse count capable zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| pulse_zone            | enable             | Optional   | Boolean          | Whether or not pulse counting is enabled for this zone.&lt;br /&gt;
}}{{TableRowN| pulse_zone            | multiply           | Optional   | Integer          | The multiplication factor to apply to each pulse.&lt;br /&gt;
}}{{TableRowN| pulse_zone            | count              | Optional   | Integer          | The number of pulses seen (after multiply has been applied)&lt;br /&gt;
}}{{TableRowN| zone                  | runtime_zone       | Optional   | Object           | Sub-object containing data for runtime capable zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| runtime_zone          | enable             | Optional   | Boolean          | Whether or not runtime is enabled for this zone.&lt;br /&gt;
}}{{TableRowN| runtime_zone          | runtime            | Optional   | String           | The run time elapsed.&lt;br /&gt;
}}{{TableRowN| zone                  | modbus_zone        | Optional   | Object           | Sub-object containing data for modbus zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| modbus_zone           | media_port         | Optional   | String           | The modbus media port&lt;br /&gt;
}}{{TableRowN| modbus_zone           | slave_id           | Optional   | Integer          | The modbus slave ID&lt;br /&gt;
}}{{TableRowN| modbus_zone           | command            | Optional   | String           | The modbus command&lt;br /&gt;
}}{{TableRowN| modbus_zone           | address            | Optional   | Integer          | The modbus address&lt;br /&gt;
}}{{TableRowN| modbus_zone           | byte_order         | Optional   | String           | The modbus byte order&lt;br /&gt;
}}{{TableRowN| modbus_zone           | register_order     | Optional   | String           | The modbus register order&lt;br /&gt;
}}{{TableRowN| modbus_zone           | register_size      | Optional   | String           | The modbus register size&lt;br /&gt;
}}{{TableRowN| modbus_zone           | format             | Optional   | String           | The modbus format&lt;br /&gt;
}}{{TableRowN| modbus_zone           | sign               | Optional   | String           | The modbus sign&lt;br /&gt;
}}{{TableRowN| modbus_zone           | scaling_offset     | Optional   | Integer          | The modbus scaling offset&lt;br /&gt;
}}{{TableRowN| modbus_zone           | scaling_factor     | Optional   | Integer          | The modbus scaling factor&lt;br /&gt;
}}{{TableRowN| modbus_zone           | scaling_mode       | Optional   | String           | The modbus scaling mode&lt;br /&gt;
}}{{TableRowN| zone                  | output_zone        | Optional   | Object           | Sub-object containing data for output zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| output_zone           | mode               | Optional   | Output Mode Type           | The output mode&lt;br /&gt;
}}{{TableRowN| output_zone           | mode_list          | Optional   | Array of  Output Mode Type           | The list of output modes&lt;br /&gt;
}}{{TableRowN| output_zone           | set_point_on       | Optional   | Floating Point   | The output set point for the &amp;quot;on&amp;quot; state.&lt;br /&gt;
}}{{TableRowN| output_zone           | set_point_off      | Optional   | Floating Point   | The output set point for the &amp;quot;off&amp;quot; state.&lt;br /&gt;
}}{{TableRowN| zone                  | wireless_zone      | Optional   | Object           | Sub-object containing data for wireless zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| wireless_zone         | sampling_rate      | Optional   | Integer          | The sampling rate for the sensor&lt;br /&gt;
}}{{TableRowN| wireless_zone         | serial_number      | Optional   | Integer          | The serial number for the wireless sensor.&lt;br /&gt;
}}{{TableRowN| wireless_zone         | battery_level      | Optional   | String           | The wireless sensor's battery level.&lt;br /&gt;
}}{{TableRowN| wireless_zone         | power_level        | Optional   | String           | The wireless sensor's power level.&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
==== Example JSON ====&lt;br /&gt;
&lt;br /&gt;
Receive the status for a specific Zone.&lt;br /&gt;
&lt;br /&gt;
*'''Request JSON''' &lt;br /&gt;
&lt;br /&gt;
   {&lt;br /&gt;
    &amp;quot;acctid&amp;quot;: 987654,&lt;br /&gt;
    &amp;quot;uuid&amp;quot;: &amp;quot;0123-4567-8901&amp;quot;,&lt;br /&gt;
    &amp;quot;request_type&amp;quot;: &amp;quot;read&amp;quot;,&lt;br /&gt;
    &amp;quot;device&amp;quot;:[&lt;br /&gt;
     {&lt;br /&gt;
       &amp;quot;device_id&amp;quot;: 1234,&lt;br /&gt;
       &amp;quot;zone&amp;quot;:[&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;zone_id&amp;quot;:28487,&lt;br /&gt;
          &amp;quot;status&amp;quot;: &amp;quot;null&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
       ]&lt;br /&gt;
     }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
*'''Response JSON''' &lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;result&amp;quot;:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;success&amp;quot;: true,&lt;br /&gt;
    &amp;quot;code&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;message&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;response&amp;quot;:&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;device&amp;quot;:[&lt;br /&gt;
     {&lt;br /&gt;
       &amp;quot;device_id&amp;quot;: 1234,&lt;br /&gt;
       &amp;quot;zone&amp;quot;:[&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;zone_id&amp;quot;: 28487,&lt;br /&gt;
          &amp;quot;status&amp;quot;: &amp;quot;OK&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
       ]&lt;br /&gt;
     }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===PUT===&lt;br /&gt;
'''URI Mode Request URI's:'''&lt;br /&gt;
*Edit a Zone name &lt;br /&gt;
   '''PUT'''  &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{DEVICE_ID}/zone/{ZONE_ID}/name/{ZONE_NAME}&lt;br /&gt;
*Edit a Zone's recognition time value &lt;br /&gt;
   '''PUT'''  &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{DEVICE_ID}/zone/{ZONE_ID}/alarm_zone/rec_time/{REC_TIME}&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
   '''POST''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/device/zone&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property'''|'''Child Property''' |'''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | acctid                   | Integer          | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | session                  | Integer          | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | request_type             | String           | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | device                   | Array of Objects | The parent device of the &amp;quot;zone&amp;quot; resource. See [[Sensaphone.net_API/device|device]].&lt;br /&gt;
}}{{TableRowN| device          | zone                     | Array of Objects | The zone object.&lt;br /&gt;
}}{{TableRowN| zone            | zone_id                  | Integer          | ID of the zone.&lt;br /&gt;
}}{{TableRowN| zone            | '''''CHILD PROPERTY''''' | &amp;amp;nbsp;           | Zone's child properties to be edited*&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; One or more '''zone''' child properties listed below are required in addition to &amp;quot;zone_id&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''|'''Status'''| '''Type'''       | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | device             | Required   | Array of Objects | The parent device object.&lt;br /&gt;
}}{{TableRowN| device                | zone               | Required   | Array of Objects | The zone object.&lt;br /&gt;
}}{{TableRowN| zone                  | zone_id          | Required   | Integer          | ID of the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | index_id           | Optional   | Integer          | Zone ordering.&lt;br /&gt;
}}{{TableRowN| zone                  | name               | Optional   | String           | Name of the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | type               | Optional   | String           | The zone type. (Use a V2 [[Sensaphone.net_API/zone#GET|read command]] to retrieve the valid values)&lt;br /&gt;
}}{{TableRowN| zone                  | enable             | Optional   | Boolean          | Whether or not the zone is enabled.&lt;br /&gt;
}}{{TableRowN| zone                  | value              | Optional   | String           | The data value for the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | units              | Optional   | String           | The custom units for the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | schedule           | Optional   | Object           | (See [[Sensaphone.net API/schedule|Sensaphone.net API/schedule]])&lt;br /&gt;
}}{{TableRowN| zone                  | alarm_zone         | Optional   | Object           | Sub-object containing data for alarmable zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_rtn          | Optional   | Boolean or null  | Whether or not a return-to-normal alarm is enabled. 'null' if the feature is not supported.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_hold         | Optional   | Integer          | The alarm hold (or clear delay) time.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_enable       | Optional   | Boolean          | Whether or not alarming is enabled for this zone.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | rec_time           | Optional   | Integer          | The alarm recognition time.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | reset_time         | Optional   | Integer          | The alarm reset time.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_low         | Optional   | Floating Point          | The alarm low limit.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | alarm_high         | Optional   | Floating Point          | The alarm high limit.&lt;br /&gt;
}}{{TableRowN| alarm_zone                  | alarmschedule           | Optional   | Object           | (See [[Sensaphone.net API/alarmschedule |Sensaphone.net API/alarmschedule]])&lt;br /&gt;
}}{{TableRowN| zone                  | analog_zone        | Optional   | Object           | Sub-object containing data for analog zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| analog_zone           | clear_min          | Optional   | Boolean          | Clear the minimum value.&lt;br /&gt;
}}{{TableRowN| analog_zone           | clear_max          | Optional   | Boolean          | Clear the maximum value.&lt;br /&gt;
}}{{TableRowN| analog_zone           | calibration        | Optional   | Floating Point   | The calibration factor applied to the &amp;quot;value&amp;quot;.&lt;br /&gt;
}}{{TableRowN| zone                  | table_zone         | Optional   | Object           | Sub-object containing data for table-based zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| table_zone            | table_low                | Optional   | Floating Point   | The low table range for the zone. Used for 4-20mA sensors.&lt;br /&gt;
}}{{TableRowN| table_zone            | table_high               | Optional   | Floating Point   | The high table range for the zone. Used for 4-20mA sensors.&lt;br /&gt;
}}{{TableRowN| zone                  | log_zone           | Optional   | Object           | Sub-object containing data for loggable zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| log_zone              | report_mode        | Optional   | String           | The reporting option.&lt;br /&gt;
}}{{TableRowN| log_zone              | alarm_interval     | Optional   | Integer          | The datalogging interval for when in alarm.&lt;br /&gt;
}}{{TableRowN| log_zone              | normal_interval    | Optional   | Integer          | The datalogging interval for when not in alarm.&lt;br /&gt;
}}{{TableRowN| log_zone              | enable             | Optional   | Boolean          | Whether or not datalogging is enabled.&lt;br /&gt;
}}{{TableRowN| zone                  | pulse_zone         | Optional   | Object           | Sub-object containing data for pulse count capable zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| pulse_zone            | enable             | Optional   | Boolean          | Whether or not pulse counting is enabled for this zone.&lt;br /&gt;
}}{{TableRowN| pulse_zone            | multiply           | Optional   | Integer          | The multiplication factor to apply to each pulse.&lt;br /&gt;
}}{{TableRowN| pulse_zone            | count              | Optional   | Integer          | The number of pulses seen (after multiply has been applied)&lt;br /&gt;
}}{{TableRowN| zone                  | runtime_zone       | Optional   | Object           | Sub-object containing data for runtime capable zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| runtime_zone          | enable             | Optional   | Boolean          | Whether or not runtime is enabled for this zone.&lt;br /&gt;
}}{{TableRowN| runtime_zone          | runtime            | Optional   | String           | The run time elapsed.&lt;br /&gt;
}}{{TableRowN| zone                  | modbus_zone        | Optional   | Object           | Sub-object containing data for modbus zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| modbus_zone           | media_port         | Optional   | String           | The modbus media port&lt;br /&gt;
}}{{TableRowN| modbus_zone           | slave_id           | Optional   | Integer          | The modbus slave ID&lt;br /&gt;
}}{{TableRowN| modbus_zone           | command            | Optional   | String           | The modbus command&lt;br /&gt;
}}{{TableRowN| modbus_zone           | address            | Optional   | Integer          | The modbus address&lt;br /&gt;
}}{{TableRowN| modbus_zone           | byte_order         | Optional   | String           | The modbus byte order&lt;br /&gt;
}}{{TableRowN| modbus_zone           | register_order     | Optional   | String           | The modbus register order&lt;br /&gt;
}}{{TableRowN| modbus_zone           | register_size      | Optional   | String           | The modbus register size&lt;br /&gt;
}}{{TableRowN| modbus_zone           | format             | Optional   | String           | The modbus format&lt;br /&gt;
}}{{TableRowN| modbus_zone           | sign               | Optional   | String           | The modbus sign&lt;br /&gt;
}}{{TableRowN| modbus_zone           | scaling_offset     | Optional   | Integer          | The modbus scaling offset&lt;br /&gt;
}}{{TableRowN| modbus_zone           | scaling_factor     | Optional   | Integer          | The modbus scaling factor&lt;br /&gt;
}}{{TableRowN| modbus_zone           | scaling_mode       | Optional   | String           | The modbus scaling mode&lt;br /&gt;
}}{{TableRowN| zone                  | output_zone        | Optional   | Object           | Sub-object containing data for output zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| output_zone           | mode               | Optional   | String           | The output mode&lt;br /&gt;
}}{{TableRowN| output_zone           | mode_list          | Optional   | String           | The list of output modes&lt;br /&gt;
}}{{TableRowN| output_zone           | set_point_on       | Optional   | Floating Point   | The output set point for the &amp;quot;on&amp;quot; state.&lt;br /&gt;
}}{{TableRowN| output_zone           | set_point_off      | Optional   | Floating Point   | The output set point for the &amp;quot;off&amp;quot; state.&lt;br /&gt;
}}{{TableRowN| output_zone           | value      | Optional   | Floating Point   | *Write Only* set the value of the output zone&lt;br /&gt;
}}{{TableRowN| zone                  | wireless_zone      | Optional   | Object           | Sub-object containing data for wireless zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| wireless_zone         | sampling_rate      | Optional   | Integer          | The sampling rate for the sensor&lt;br /&gt;
}}{{TableRowN| wireless_zone         | serial_number      | Optional   | Integer          | The serial number for the wireless sensor.&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===POST===&lt;br /&gt;
'''URI Mode Request URI's:'''&lt;br /&gt;
*Acknowledge All Zone Alarms&lt;br /&gt;
   '''POST'''  &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{DEVICE_ID}/zone/{ZONE_ID}/alarm_zone/acknowledge_all_alarms/{true}&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
   '''POST''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/device/zone&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property'''|'''Child Property''' |'''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | acctid                   | Integer          | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | session                  | Integer          | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | request_type             | String           | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | device                   | Array of Objects | The parent device of the &amp;quot;zone&amp;quot; resource. See [[Sensaphone.net_API/device|device]].&lt;br /&gt;
}}{{TableRowN| device          | zone                     | Array of Objects | The zone object.&lt;br /&gt;
}}{{TableRowN| zone            | zone_id                  | Integer          | ID of the zone.&lt;br /&gt;
}}{{TableRowN| zone            | alarm_zone | Object           |  Sub-object containing data for alarmable zones&lt;br /&gt;
}}{{TableRowN| alarm_zone            | acknowledge_alarms | Array of Zone State           |  A write-only property to acknowledge specific alarms&lt;br /&gt;
}}{{TableRowN| alarm_zone            | acknowledge_all_alarms | Boolean           |  A write-only property to acknowledge all alarms for a zone&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; &amp;quot;acknowledge_all_alarms&amp;quot; supersedes &amp;quot;acknowledge_alarms&amp;quot;, if it is present in the request json other properties will be ignored&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Result Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''|'''Status'''| '''Type'''       | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | device             | Required   | Array of Objects | The parent device object.&lt;br /&gt;
}}{{TableRowN| device                | zone               | Required   | Array of Objects | The zone object.&lt;br /&gt;
}}{{TableRowN| zone                  | zone_id          | Required   | Integer          | ID of the zone.&lt;br /&gt;
}}{{TableRowN| zone                  | alarm_zone         | Required   | Object           | Sub-object containing data for alarmable zones. 'null' if unsupported.&lt;br /&gt;
}}{{TableRowN| alarm_zone            | acknowledge_alarms          | Optional   | Array of Zone State  |  A write-only property to acknowledge specific alarms&lt;br /&gt;
}}{{TableRowN| alarm_zone            | acknowledge_all_alarms         | Optional   | Boolean          | A write-only property to acknowledge all alarms for a zone&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
=== Example JSON ===&lt;br /&gt;
&lt;br /&gt;
Acknowledge an alarm for a Zone&lt;br /&gt;
&lt;br /&gt;
*'''Request JSON''' &lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;request_type&amp;quot;: &amp;quot;create&amp;quot;,&lt;br /&gt;
  &amp;quot;resource&amp;quot;: &amp;quot;device&amp;quot;,&lt;br /&gt;
  &amp;quot;acctid&amp;quot;: 987654,&lt;br /&gt;
  &amp;quot;session&amp;quot;: &amp;quot;0123-4567-8901&amp;quot;,&lt;br /&gt;
  &amp;quot;device&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;device_id&amp;quot;: 1234,&lt;br /&gt;
      &amp;quot;zone&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;zone_id&amp;quot;: 7,&lt;br /&gt;
          &amp;quot;alarm_zone&amp;quot;: {&lt;br /&gt;
            &amp;quot;acknowledge_alarms&amp;quot;: [&lt;br /&gt;
              11,&lt;br /&gt;
              4&lt;br /&gt;
            ]&lt;br /&gt;
          }&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*'''Response JSON''' &lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;result&amp;quot;: {&lt;br /&gt;
    &amp;quot;success&amp;quot;: true,&lt;br /&gt;
    &amp;quot;code&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;message&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
    &amp;quot;properties&amp;quot;: {&lt;br /&gt;
      &amp;quot;device&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;device_id&amp;quot;: 1234,&lt;br /&gt;
          &amp;quot;zone&amp;quot;: [&lt;br /&gt;
            {&lt;br /&gt;
              &amp;quot;alarm_zone&amp;quot;: [&lt;br /&gt;
                {&lt;br /&gt;
                  &amp;quot;acknowledge_alarms&amp;quot;: 11,&lt;br /&gt;
                  &amp;quot;code&amp;quot;: 0,&lt;br /&gt;
                  &amp;quot;message&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
                  &amp;quot;success&amp;quot;: true&lt;br /&gt;
                },&lt;br /&gt;
                {&lt;br /&gt;
                  &amp;quot;acknowledge_alarms&amp;quot;: 4,&lt;br /&gt;
                  &amp;quot;code&amp;quot;: 0,&lt;br /&gt;
                  &amp;quot;message&amp;quot;: &amp;quot;OK&amp;quot;,&lt;br /&gt;
                  &amp;quot;success&amp;quot;: true&lt;br /&gt;
                }&lt;br /&gt;
              ],&lt;br /&gt;
              &amp;quot;zone_id&amp;quot;: 7&lt;br /&gt;
            }&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>Derek</name></author>	</entry>

	<entry>
		<id>https://wiki.sensaphone.net/index.php?title=Main_Page&amp;diff=153</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.sensaphone.net/index.php?title=Main_Page&amp;diff=153"/>
				<updated>2015-07-10T18:22:02Z</updated>
		
		<summary type="html">&lt;p&gt;Derek: To access your devices and accounts on the Sensaphone.net website please go to:&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To access your devices and accounts on the Sensaphone.net website please go to:&lt;br /&gt;
  [https://www.sensaphone.net https://www.sensaphone.net]&lt;br /&gt;
&lt;br /&gt;
To access the Sensaphone.net API please go to:&lt;br /&gt;
  [[Sensaphone.net API]]&lt;/div&gt;</summary>
		<author><name>Derek</name></author>	</entry>

	<entry>
		<id>https://wiki.sensaphone.net/index.php?title=Main_Page&amp;diff=152</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.sensaphone.net/index.php?title=Main_Page&amp;diff=152"/>
				<updated>2015-07-10T18:21:15Z</updated>
		
		<summary type="html">&lt;p&gt;Derek: fixed up&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To access the Sensaphone.net website please go to:&lt;br /&gt;
  [https://www.sensaphone.net https://www.sensaphone.net]&lt;br /&gt;
&lt;br /&gt;
To access the Sensaphone.net API please go to:&lt;br /&gt;
  [[Sensaphone.net API]]&lt;/div&gt;</summary>
		<author><name>Derek</name></author>	</entry>

	<entry>
		<id>https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/device&amp;diff=83</id>
		<title>Sensaphone.net API/device</title>
		<link rel="alternate" type="text/html" href="https://wiki.sensaphone.net/index.php?title=Sensaphone.net_API/device&amp;diff=83"/>
				<updated>2015-05-19T13:39:31Z</updated>
		
		<summary type="html">&lt;p&gt;Derek: /* Example JSON */ Added missing &amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=[[Sensaphone.net API]]=&lt;br /&gt;
&lt;br /&gt;
==Specifications==&lt;br /&gt;
The '''device''' resource allows access to the devices that are bound to the account.&lt;br /&gt;
&lt;br /&gt;
The device resource has the following properties:&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' | '''Property'''  | '''Type''' | '''Description'''              | '''Create''' | '''Delete''' | '''Read''' | '''Update'''&lt;br /&gt;
}}{{TableRowN| ''&amp;lt;parent&amp;gt;''         | device        | Object     | The device object.            | '''&amp;amp;#x2713;''' | '''&amp;amp;#x2713;''' | '''&amp;amp;#x2713;''' | '''n/a'''&lt;br /&gt;
}}{{TableRowN| device                    | device_id     | Integer    | ID of the device.             | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | ''' '''&lt;br /&gt;
}}{{TableRowN| device                    | id    | String     | Unique identifier located on the Device (Serial number, etc.)               | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | ''' '''&lt;br /&gt;
}}{{TableRowN| device                    | name           | String     | Name of Device        | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | '''&amp;amp;#x2713;'''&lt;br /&gt;
}}{{TableRowN| device                    | description    | String     | Short description of Device | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | '''&amp;amp;#x2713;'''&lt;br /&gt;
}}{{TableRowN| device                    | timezone    | String     | The timezone the Device is in | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | '''&amp;amp;#x2713;'''&lt;br /&gt;
}}{{TableRowN| device                    | location         | Object    | Contains location information for the device.  | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | '''&amp;amp;#x2713;'''&lt;br /&gt;
}}{{TableRowN| location              | address         | Object    | Address information for Device (See [[Sensaphone.net API/address|Sensaphone.net API/address]])    | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | '''&amp;amp;#x2713;'''&lt;br /&gt;
}}{{TableRowN| location              | coordinates         | Object    | GPS Coordinates information for Device (See [[Sensaphone.net API/coordinates]])    | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | '''&amp;amp;#x2713;'''&lt;br /&gt;
}}{{TableRowN| device              | firmware         | String    | Firmware version of Device  | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | '''&amp;amp;#x2713;'''&lt;br /&gt;
}}{{TableRowN| device              | default_schedule         | Object    | Alarm Schedule data (See [[Sensaphone.net API/alarmschedule]])     | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | '''&amp;amp;#x2713;'''&lt;br /&gt;
}}{{TableRowN| device              | device_schedule         | Object    | Alarm Schedule data (See [[Sensaphone.net API/alarmschedule]])     | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | '''&amp;amp;#x2713;'''&lt;br /&gt;
}}{{TableRowN| device                     | zone         | Array of Objects    | Device Zone data (See [[Sensaphone.net API/zone|Sensaphone.net API/zone]])     | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | '''&amp;amp;#x2713;'''&lt;br /&gt;
}}{{TableRowN| device                     | offline_timeout         | Integer    | The number of minutes a device must be offline before it goes into alarm.     | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | '''&amp;amp;#x2713;'''&lt;br /&gt;
}}{{TableRowN| device              | product         | String    | The name of the product type    | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | ''' '''&lt;br /&gt;
}}{{TableRowN| device              | modbus_ports        | Array of Objects    | TBD    | ''' ''' | ''' ''' | ''' ''' | ''' '''&lt;br /&gt;
}}{{TableRowN| device              | zone_meta        | Array of Objects    | TBD    | ''' ''' | ''' ''' |  '''&amp;amp;#x2713;''' | ''' '''&lt;br /&gt;
}}{{TableRowN| zone_meta              | zone        | Zone Meta Type    | TBD    | ''' ''' | ''' ''' |  '''&amp;amp;#x2713;''' | ''' '''&lt;br /&gt;
}}{{TableRowN| zone_meta              | children        | Array of Zone Meta Type    | TBD    | ''' ''' | ''' ''' |  '''&amp;amp;#x2713;''' | ''' '''&lt;br /&gt;
}}{{TableRowN| device              | is_offline_unack        | Boolean    | Whether or not an unacknowledged offline alarm exists.   | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | ''' '''&lt;br /&gt;
}}{{TableRowN| device              | is_online        | Boolean    | Whether or not the device is currently online.    | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | ''' '''&lt;br /&gt;
}}{{TableRowN| device                     | standby_time         | String    | The number of minutes a device will be in standby mode.     | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | '''&amp;amp;#x2713;'''&lt;br /&gt;
}}{{TableRowN| device                     | standby_mode         | String    | A device's standby mode.     | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | '''&amp;amp;#x2713;'''&lt;br /&gt;
}}{{TableRowN| device                     | standby_status         | String    | A device's standby status     | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | ''' ''' &lt;br /&gt;
}}{{TableRowN| device                | battery_status     | String    | A device's battery status    | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | ''' ''' &lt;br /&gt;
}}{{TableRowN| device                | power_status        | String    | A device's power status    | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | ''' ''' &lt;br /&gt;
}}{{TableRowN| device                | connection_status         | String    | A device's connection status    | ''' ''' | ''' ''' | '''&amp;amp;#x2713;''' | ''' ''' &lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Zone Meta Type'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Property'''        |'''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN|  zone_id                   | Integer          | The Zone ID&lt;br /&gt;
}}{{TableRowN| is_enabled                  | Integer          | Is the zone enabled&lt;br /&gt;
}}{{TableRowN| hide_if_disabled             | Boolean           | Hide the zone if disabled&lt;br /&gt;
}}{{TableRowN| add_name                   | String           | The add name&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===GET===&lt;br /&gt;
'''URI Mode Request URI's:'''&lt;br /&gt;
*Receive all Device data for all Devices in a user's account&lt;br /&gt;
  '''GET''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device&lt;br /&gt;
&lt;br /&gt;
*Receive all Device data for a specific Device &lt;br /&gt;
  '''GET''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{DEVICE_ID}&lt;br /&gt;
&lt;br /&gt;
*Receive the alarm status of a Device &lt;br /&gt;
  '''GET''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{DEVICE_ID}/status&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
  '''POST''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/device&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property'''|'''Child Property''' |'''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | acctid                   | Integer          | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | session                  | Integer          | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | request_type             | String           | &amp;quot;read&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | device                   | Array of Objects | The device object.&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''|'''Status'''| '''Type'''       | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | device             | Required   | Array of Objects | The parent device object.&lt;br /&gt;
}}{{TableRowN| device                | device_id          | Optional   | Integer          | ID of Device&lt;br /&gt;
}}{{TableRowN| device                | id                 | Optional   | Integer          | Unique identifier located on the Device (Serial number, etc.)&lt;br /&gt;
}}{{TableRowN| device                | name               | Optional   | String           | Name of Device&lt;br /&gt;
}}{{TableRowN| device                | description        | Optional   | String           | Short description of Device&lt;br /&gt;
}}{{TableRowN| device                | timezone    | Optional      | String           | The timezone the Device is in &lt;br /&gt;
}}{{TableRowN| device                | location           | Optional   | Object           | Contains location information for the device.&lt;br /&gt;
}}{{TableRowN| location              | address            | Optional   | Object           |  Address information for Device (See [[Sensaphone.net API/address]])&lt;br /&gt;
}}{{TableRowN| location              | coordinates        | Optional   | Object           |  GPS Coordinates information for Device (See [[Sensaphone.net API/coordinates]])&lt;br /&gt;
}}{{TableRowN| device                | firmware           | Optional   | String           | Firmware version of Device&lt;br /&gt;
}}{{TableRowN| device                | default_schedule   | Optional   | Object           | Alarm Schedule data (See [[Sensaphone.net API/alarmschedule]])&lt;br /&gt;
}}{{TableRowN| device                | device_schedule    | Optional   | Object           | Alarm Schedule data (See [[Sensaphone.net API/alarmschedule]])&lt;br /&gt;
}}{{TableRowN| device                | zone               | Optional   | Array of Objects | Device Zone data (See [[Sensaphone.net API/zone|Sensaphone.net API/zone]])&lt;br /&gt;
}}{{TableRowN| device                | offline_timeout    | Optional   | Integer          | The number of minutes a device must be offline before it goes into alarm.&lt;br /&gt;
}}{{TableRowN| device                | product            | Optional   | String           | The name of the product type&lt;br /&gt;
}}{{TableRowN| device                | modbus_ports       | Optional   | Array of Objects | TBD&lt;br /&gt;
}}{{TableRowN| device               | zone_meta      | Optional     | Array ofObjects    | TBD &lt;br /&gt;
}}{{TableRowN| zone_meta              | zone            | Optional    | Zone Meta Type    | TBD     &lt;br /&gt;
}}{{TableRowN| zone_meta              | children            | Optional    | Array of Zone Meta Type    | TBD    &lt;br /&gt;
}}{{TableRowN| device                | is_offline_unack   | Optional   | Boolean          | Whether or not an '''unacknowledged''' offline alarm exists.&lt;br /&gt;
}}{{TableRowN| device                | is_online          | Optional   | Boolean          | Whether or not the device is currently online.&lt;br /&gt;
}}{{TableRowN| device                | standby_time     | Optional     | String    | The number of minutes a device will be in standby mode.   &lt;br /&gt;
}}{{TableRowN| device                | standby_mode | Optional          | String    | A device's standby mode.    &lt;br /&gt;
}}{{TableRowN| device                | standby_status    | Optional       | String    | A device's standby status   &lt;br /&gt;
}}{{TableRowN| device                | battery_status    | Optional       | String    | A device's battery status   &lt;br /&gt;
}}{{TableRowN| device                | power_status    | Optional       | String    | A device's power status   &lt;br /&gt;
}}{{TableRowN| device                | battery_value    | Optional       | String    | A device's battery value   &lt;br /&gt;
}}{{TableRowN| device                | power_value    | Optional       | String    | A device's power value   &lt;br /&gt;
}}{{TableRowN| device                | connection_status    | Optional       | String    | A device's connection status   &lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
=====Example JSON=====&lt;br /&gt;
Receive all Device information for a specific Device&lt;br /&gt;
*'''Request JSON:'''&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;acctid&amp;quot;:987654,&lt;br /&gt;
   &amp;quot;session&amp;quot;:&amp;quot;0123-4567-8901&amp;quot;,&lt;br /&gt;
   &amp;quot;request_type&amp;quot;:&amp;quot;read&amp;quot;,&lt;br /&gt;
   &amp;quot;device&amp;quot;: {&lt;br /&gt;
       &amp;quot;device_id&amp;quot;:1234&lt;br /&gt;
      }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*'''Response JSON:'''&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;result&amp;quot;:&lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;success&amp;quot;:true,&lt;br /&gt;
     &amp;quot;code&amp;quot;:0,&lt;br /&gt;
     &amp;quot;message&amp;quot;:&amp;quot;OK&amp;quot;&lt;br /&gt;
   },&lt;br /&gt;
   &amp;quot;response&amp;quot;: &lt;br /&gt;
   {&lt;br /&gt;
     &amp;quot;device&amp;quot;:[&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;device_id&amp;quot;: 1234,&lt;br /&gt;
        ...&lt;br /&gt;
      }&lt;br /&gt;
     ]&lt;br /&gt;
   }      &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
===PUT===&lt;br /&gt;
&lt;br /&gt;
'''URI Mode Request URI's:'''&lt;br /&gt;
*Edit the '''description''' of a Device &lt;br /&gt;
   '''PUT''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{DEVICE_ID}/description/{DESCRIPTION}&lt;br /&gt;
&lt;br /&gt;
*Edit the '''name''' of a Device &lt;br /&gt;
   '''PUT''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{DEVICE_ID}/name/{DEVICE_NAME} &lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
   '''POST''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/device&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property'''|'''Child Property''' |'''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | acctid                   | Integer          | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | session                  | Integer          | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | request_type             | String           | &amp;quot;update&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | device                   | Array of Objects | The device object.&lt;br /&gt;
}}{{TableRowN| device          | device_id                | Integer          | ID of the device.&lt;br /&gt;
}}{{TableRowN| device          | '''CHILD PROPERTY'''     | &amp;amp;nbsp;           | Device's child properties to be edited*&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;One or more '''device''' child properties below are required in addition to &amp;quot;device_id&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''|'''Status'''| '''Type'''       | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | device             | Required   | Array of Objects | The parent device object.&lt;br /&gt;
}}{{TableRowN| device                | device_id          | Optional   | Integer          | ID of Device&lt;br /&gt;
}}{{TableRowN| device                | name               | Optional   | String           | Name of Device&lt;br /&gt;
}}{{TableRowN| device                | description        | Optional   | String           | Short description of Device&lt;br /&gt;
}}{{TableRowN| device                | timezone    | Optional      | String           | The timezone the Device is in &lt;br /&gt;
}}{{TableRowN| device                | location           | Optional   | Object           | Contains location information for the device.&lt;br /&gt;
}}{{TableRowN| location              | address            | Optional   | Object           |  Address information for Device (See [[Sensaphone.net API/address|Sensaphone.net API/address]])&lt;br /&gt;
}}{{TableRowN| location              | coordinates        | Optional   | Object           |  GPS Coordinates information for Device (See [[Sensaphone.net API/coordinates]])&lt;br /&gt;
}}{{TableRowN| device                | firmware           | Optional   | String           | Firmware version of Device&lt;br /&gt;
}}{{TableRowN| device                | default_schedule   | Optional   | Object           | Alarm Schedule data (See [[Sensaphone.net API/alarmschedule]])&lt;br /&gt;
}}{{TableRowN| device                | device_schedule    | Optional   | Object           | Alarm Schedule data (See [[Sensaphone.net API/alarmschedule]])&lt;br /&gt;
}}{{TableRowN| device                | zone               | Optional   | Array of Objects | Device Zone data (See [[Sensaphone.net API/zone|Sensaphone.net API/zone]])&lt;br /&gt;
}}{{TableRowN| device                | offline_timeout    | Optional   | Integer          | The number of minutes a device must be offline before it goes into alarm.&lt;br /&gt;
}}{{TableRowN| device                | modbus_ports       | Optional   | Array of Objects | TBD&lt;br /&gt;
}}{{TableRowN| device                | standby_time     | Optional     | String    | The number of minutes a device will be in standby mode.  &lt;br /&gt;
}}{{TableRowN| device                     | standby_mode      | Optional         | String    | A device's standby mode.   &lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
===POST===&lt;br /&gt;
'''Adding a device'''&lt;br /&gt;
&lt;br /&gt;
The preferred method to add a new Device is to use the JSON Mode Request. If the URI Mode Request is used you will be adding a Device with only the '''id''' value (not to be confused with the '''device_id'''), all other values will be left empty until a PUT request is used. With the JSON Mode Request you can add a Device with all values defined in one step.&lt;br /&gt;
&lt;br /&gt;
'''URI Mode Request URI:'''&lt;br /&gt;
*Add a new Device &lt;br /&gt;
  '''POST''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/id/{DEVICEID}&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
  '''POST''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/device&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property'''|'''Child Property''' |'''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | acctid                   | Integer          | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | session                  | Integer          | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | request_type             | String           | &amp;quot;create&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | device                   | Array of Objects | The device object.&lt;br /&gt;
}}{{TableRowN| device          | id                       | Integer          | Unique identifier located on the Device (Serial number, etc.)&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Response Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property''' |'''Child Property'''|'''Status'''| '''Type'''       | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;                | device             | Required   | Array of Objects | The parent device object.&lt;br /&gt;
}}{{TableRowN| device                | device_id          | Optional   | Integer          | ID of Device&lt;br /&gt;
}}{{TableRowN| device                | id                 | Optional   | Integer          | Unique identifier located on the Device (Serial number, etc.)&lt;br /&gt;
}}{{TableRowN| device                | name               | Optional   | String           | Name of Device&lt;br /&gt;
}}{{TableRowN| device                | description        | Optional   | String           | Short description of Device&lt;br /&gt;
}}{{TableRowN| device                | location           | Optional   | Object           | Contains location information for the device.&lt;br /&gt;
}}{{TableRowN| location              | address            | Optional   | Object           |  Address information for Device (See [[Sensaphone.net API/address|Sensaphone.net API/address]])&lt;br /&gt;
}}{{TableRowN| location              | coordinates        | Optional   | Object           |  GPS Coordinates information for Device (See [[Sensaphone.net API/coordinates]])&lt;br /&gt;
}}{{TableRowN| device                | firmware           | Optional   | String           | Firmware version of Device&lt;br /&gt;
}}{{TableRowN| device                | default_schedule   | Optional   | Object           | Alarm Schedule data (See [[Sensaphone.net API/alarmschedule]])&lt;br /&gt;
}}{{TableRowN| device                | device_schedule    | Optional   | Object           | Alarm Schedule data (See [[Sensaphone.net API/alarmschedule]])&lt;br /&gt;
}}{{TableRowN| device                | zone               | Optional   | Array of Objects | Device Zone data (See [[Sensaphone.net API/zone|Sensaphone.net API/zone]])&lt;br /&gt;
}}{{TableRowN| device                | offline_timeout    | Optional   | Integer          | The number of minutes a device must be offline before it goes into alarm.&lt;br /&gt;
}}{{TableRowN| device                | modbus_ports       | Optional   | Array of Objects | TBD&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Acknowledging Alarms'''&lt;br /&gt;
&lt;br /&gt;
'''URI Mode Request URI:'''&lt;br /&gt;
*Acknowledge All Alarms&lt;br /&gt;
  '''POST''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{DEVICE_ID}/acknowledge_all_alarms/{true}&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property'''|'''Child Property''' |'''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | acctid                   | Integer          | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | session                  | Integer          | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | request_type             | String           | &amp;quot;create&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | device                   | Array of Objects | The device object.&lt;br /&gt;
}}{{TableRowN| device          | device_id                       | Integer          | ID of Device&lt;br /&gt;
}}{{TableRowN| device          | ack_offline_alarm          | Boolean          | A write-only property that will acknowledge a device offline alarm&lt;br /&gt;
}}{{TableRowN| device          | acknowledge_all_alarms  | Boolean          | A write-only property that will acknowledge all alarms for a device, including all device alarms and all zone alarms&lt;br /&gt;
}}{{TableEnd}}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; &amp;quot;acknowledge_all_alarms&amp;quot; supersedes &amp;quot;ack_offline_alarm&amp;quot;, if it is present in the request json other properties will be ignored&lt;br /&gt;
&lt;br /&gt;
===DELETE===&lt;br /&gt;
'''URI Mode Request URI:'''&lt;br /&gt;
*Delete a Device from an account &lt;br /&gt;
  '''DELETE''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/{ACCTID}/{SESSIONID}/device/{DEVICE_ID}&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request URI:'''&lt;br /&gt;
  '''POST''' &amp;lt;nowiki&amp;gt;https://&amp;lt;/nowiki&amp;gt;rest.sensaphone.net/api/v1/device&lt;br /&gt;
&lt;br /&gt;
'''JSON Mode Request Properties'''&lt;br /&gt;
{{TableStart|border_size=1&lt;br /&gt;
}}{{TableRowN| '''Parent Property'''|'''Child Property''' |'''Type'''        | '''Description'''&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | acctid                   | Integer          | Account ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | session                  | Integer          | Session ID&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | request_type             | String           | &amp;quot;delete&amp;quot;&lt;br /&gt;
}}{{TableRowN| &amp;amp;nbsp;          | device                   | Array of Objects | The device object.&lt;br /&gt;
}}{{TableRowN| device          | device_id                | Integer          | ID of the device.&lt;br /&gt;
}}{{TableEnd}}&lt;/div&gt;</summary>
		<author><name>Derek</name></author>	</entry>

	</feed>