Access It! Universal.NET complies with the PSIA specification allowing the server machine to act as a PSIA host. By default the Access It! Universal.NET PSIA service will listen on TCP port 7777. Third party PSIA client requests can be made to the service allowing for the following:
- Reader change of states (Unlock / Lock / Grant Access)
- Input change of states (Enable / Disable)
- Output change of states (Activate / Deactivate / Pulse)
- Status monitoring for Readers (Inputs / Outputs)
- Monitoring of system events and alarms
- Retrieval of system history
Access It! Universal.NET version 6.1 includes the PSIA service built in and does not require a secondary download and installation process.
Access It! Universal.NET v5.2 through v5.6 requires a secondary download and installation process.
Access It! Universal.NET Licensing
The following licensing option must be enabled within the Access It! Universal.NET dongle and is a system wide license.
- PSIA Service - Yes
- Access It! Universal.NET 6.1
- Access It! Universal.NET 5.2 (available for download)
Access It! Universal.NET PSIA Service
Installation
To obtain a copy of the PSIA installation, contact RS2 Technical Support group.
- Uninstall any previous version, if necessary.
- Extract the contents of the AccessIt!UniversalPSIA.zip
- Run Setup.exe
- Click Next
- Click I Agree
- Click Next
- Select installation directory
- Click Next
- Click Next
- Click Close
Service Startup
- Navigate to the Microsoft Windows service snap in (Services.msc)
- Select the Access It! Universal PSIA Service
- Select Start form the left hand menu
The PSIAID is a required argument when trying to control or request status of a device. To retrieve the list of Portals, Inputs, and Outputs, perform a GET request for the "info" on the corresponding section.
All testing was completed using the Poster extension within Mozilla Firefox.
- URI: /PSIA/AreaControl/configuration
- URI: /PSIA/AreaControl/PartitionMembers/Portals/info
- URI: /PSIA/AreaControl/PartitionMembers/Portals/status
- URI: /PSIA/AreaControl/PartitionMembers/Portals/latchState
- URI: /PSIA/AreaControl/PartitionMembers/Portals/accessOverride
- URI: /PSIA/AreaControl/PartitionMembers/Portals/forcedMaskState
- URI: /PSIA/AreaControl/PartitionMembers/Portals/heldMaskState
- URI: /PSIA/AreaControl/PartitionMembers/Portals/instanceDescription/<portalID>
- URI: /PSIA/AreaControl/PartitionMembers/Portals/instanceDescription/<portalID> (PUT)
- URI: /PSIA/AreaControl/PartitionMembers/Portals/requiredIdentifierTypes/<portalID>
- URI: /PSIA/AreaControl/PartitionMembers/Portals/requiredIdentifierTypes/<portalID> (PUT)
- URI: /PSIA/AreaControl/Devices/Inputs/info
- URI: /PSIA/AreaControl/Devices/Inputs/status
- URI: /PSIA/AreaControl/Devices/Inputs/maskState
- URI: /PSIA/AreaControl/Devices/Inputs/instanceDescription/<inputID>
- URI: /PSIA/AreaControl/Devices/Inputs/instanceDescription/<inputID> (PUT)
- URI: /PSIA/AreaControl/Devices/Outputs/info
- URI: /PSIA/AreaControl/Devices/Outputs/status
- URI: /PSIA/AreaControl/Devices/Outputs/state/<outputID>
- URI: /PSIA/AreaControl/Devices/Outputs/instanceDescription/<outputID>
- URI: /PSIA/AreaControl/Devices/Outputs/instanceDescription/<outputID> (PUT)
- URI: /PSIA/Metadata/stream
Service Command Details
URI: /PSIA/AreaControl/configuration
Return to Supported Service URIs
Method: GET
Query String(s):
Inbound Data:
Return Result: <AreaControlConfiguration>
Example Response:
<AreaControlConfiguration xmlns="urn:psialliance-org">
<CapabilityList>
<Capability>AccessControl</Capability>
</CapabilityList>
<Manufacturer>RS2 Technologies</Manufacturer>
<ModelName>AccessIt! Universal PSIA Service</ModelName>
<HardwareVersion>N/A</HardwareVersion>
<FirmwareVersion>N/A</FirmwareVersion>
</AreaControlConfiguration>
URI: /PSIA/AreaControl/PartitionMembers/Portals/info
Return to Supported Service URIs
Method: GET
Query String(s): [optional] partitionID=[partitionID]
Inbound Data:
Return Result: <PortalInfoList>
Example Response:
<PortalInfoList xmlns="urn:psialliance-org">
<PortalInfo>
<ID>12</ID>
<UID>{253C5B53-A585-4ED5-83F9-61A4C5EEA193}</UID>
<Name>SCP 000 - SIO 01-Reader 1</Name>
<Description>SCP 000 - SIO 01-Reader 1</Description>
<AssociatedPartitionID>
<ID>1</ID>
<GUID>{46BACF4A-B653-4C0C-ACA2-444489C4AB31}</GUID>
<Name>Main</Name>
</AssociatedPartitionID>
</PortalInfo>
<PortalInfo>
<ID>13</ID>
<UID>{1C8D262C-B01A-4619-82FF-A23400217C21}</UID>
<Name>SCP 000 - SIO 00-Reader 1</Name>
<Description>SCP 000 - SIO 00-Reader 1</Description>
<AssociatedPartitionID>
<ID>1</ID>
<GUID>{46BACF4A-B653-4C0C-ACA2-444489C4AB31}</GUID>
<Name>Main</Name>
</AssociatedPartitionID>
</PortalInfo>
<PortalInfo>
<ID>14</ID>
<UID>{64BCF6A8-0F9D-4F25-9BDB-B65E4D7C10CC}</UID>
<Name>SCP 000 - SIO 01-Reader 2</Name>
<Description>SCP 000 - SIO 01-Reader 2</Description>
<AssociatedPartitionID>
<ID>1</ID>
<GUID>{46BACF4A-B653-4C0C-ACA2-444489C4AB31}</GUID>
<Name>Main</Name>
</AssociatedPartitionID>
</PortalInfo>
</PortalInfoList>
URI: /PSIA/AreaControl/PartitionMembers/Portals/status
Return to Supported Service URIs
Method: GET
Query String(s): [optional] partitionID=[partitionID]
Inbound Data:
Return Result: <PortalStatusList>
Example Response:
<PortalStatusList xmlns="urn:psialliance-org">
<PortalStatus>
<ID>12</ID>
<Connection>OK</Connection>
<PowerStatus>
<ACPower>OK</ACPower>
<BatteryPower>OK</BatteryPower>
</PowerStatus>
<Latch>Latched</Latch>
<AccessOverride>Normal</AccessOverride>
<PortalForcedMask>Monitored</PortalForcedMask>
<PortalHeldMask>Monitored</PortalHeldMask>
<PortalForced>Forced</PortalForced>
<PortalHeld>Held</PortalHeld>
<PortalAlarm>Alarm</PortalAlarm>
</PortalStatus>
<PortalStatus>
<ID>13</ID>
<Connection>OK</Connection>
<PowerStatus>
<ACPower>OK</ACPower>
<BatteryPower>OK</BatteryPower>
</PowerStatus>
<Latch>Latched</Latch>
<AccessOverride>Normal</AccessOverride>
<PortalForcedMask>Monitored</PortalForcedMask>
<PortalHeldMask>Monitored</PortalHeldMask>
<PortalForced>Forced</PortalForced>
<PortalHeld>Held</PortalHeld>
<PortalAlarm>Alarm</PortalAlarm>
</PortalStatus>
<PortalStatus>
<ID>14</ID>
<Connection>OK</Connection>
<PowerStatus>
<ACPower>OK</ACPower>
<BatteryPower>OK</BatteryPower>
</PowerStatus>
<Latch>Latched</Latch>
<AccessOverride>Normal</AccessOverride>
<PortalForcedMask>Monitored</PortalForcedMask>
<PortalHeldMask>Monitored</PortalHeldMask>
<PortalForced>Forced</PortalForced>
<PortalHeld>Held</PortalHeld>
<PortalAlarm>Alarm</PortalAlarm>
</PortalStatus>
</PortalStatusList>
URI: /PSIA/AreaControl/PartitionMembers/Portals/latchState
Return to Supported Service URIs
Method: PUT
Query String(s): [required] state=["latched","unlatched","pulse"], [optional] partitionID=[partitionID]
Inbound Data: <PulseData>.
Inbound Data Examples:
Content to Send:
<PulseData version="1.0" xmlns="urn:psialliance-org">
<DurationMillis>10000</DurationMillis>
</PulseData>
Return Result: <ResponseStatus>
Example Response: 200 OK
URI: /PSIA/AreaControl/PartitionMembers/Portals/accessOverride
Return to Supported Service URIs
Method: PUT
Query String(s): [required] accessOverrideState=["latched","unlatched",released"], [optional] partitionID=[partitionID]
Inbound Data:
Return Result: <ResponseStatus>
Example Response: 200 OK
URI: /PSIA/AreaControl/PartitionMembers/Portals/forcedMaskState
Return to Supported Service URIs
Method: PUT
Query String(s): [required] state=["masked","monitored"], [optional] partitionID=[partitionID]
Inbound Data:
Return Result: <ResponseStatus>
Example Response: 200 OK
URI: /PSIA/AreaControl/PartitionMembers/Portals/heldMaskState
Return to Supported Service URIs
Method: PUT
Query String(s): [required] state=["masked","monitored"], [optional] partitionID=[partitionID]
Inbound Data:
Return Result: <ResponseStatus>
Example Response: 200 OK
URI: /PSIA/AreaControl/PartitionMembers/Portals/instanceDescription/<portalID>
Return to Supported Service URIs
Method: GET
Query String(s):
Inbound Data:
Return Result: <PortalDescriptionInfo>
Example Response:
<PortalDescriptionInfo version="1.0" xmlns="urn:psialliance-org">
<Name>SCP 000 - SIO 01-Reader 1</Name>
<Description>SCP 000 - SIO 01-Reader 1</Description>
</PortalDescriptionInfo>
URI: /PSIA/AreaControl/PartitionMembers/Portals/instanceDescription/<portalID>
Return to Supported Service URIs
Method: PUT
Query String(s):
Inbound Data: <PortalDescriptionInfo>
Inbound Data Examples:
Content to Send:
<PortalDescriptionInfo version="1.0" xmlns="urn:psialliance-org">
<Name>SCP 000 - SIO 01-Reader 1</Name>
<Description>SCP 000 - SIO 01-Reader 1</Description>
</PortalDescriptionInfo>
Return Result: <ResponseStatus>
Example Response: 200 OK
URI: /PSIA/AreaControl/PartitionMembers/Portals/requiredIdentifierTypes/<portalID>
Return to Supported Service URIs
Method: GET
Query String(s):
Inbound Data:
Return Result: <RequiredIdentifierList>
Example Response:
<RequiredIdentifierList version="1.0" xmlns="urn:psialliance-org">
<LogicalOr>
<RequiredIdentifierInfo>
<LogicalAnd>
<IdentifierType>Card</IdentifierType>
</LogicalAnd>
</RequiredIdentifierInfo>
</LogicalOr>
</RequiredIdentifierList>
URI: /PSIA/AreaControl/PartitionMembers/Portals/requiredIdentifierTypes/<portalID>
Return to Supported Service URIs
Method: PUT
Query String(s):
Inbound Data: <RequiredIdentifierList>
Inbound Data Examples:
<RequiredIdentifierList version="1.0" xmlns="urn:psialliance-org">
<LogicalOr>
<RequiredIdentifierInfo>
<LogicalAnd>
<IdentifierType>Card</IdentifierType>
</LogicalAnd>
</RequiredIdentifierInfo>
</LogicalOr>
</RequiredIdentifierList>
Return Result: <ResponseStatus>
Example Response: 200 OK
URI: /PSIA/AreaControl/Devices/Inputs/info
Return to Supported Service URIs
Method: GET
Query String(s): [optional] externalOnly=[true,false], [optional] portalID=[portalID], [optional] partitionID=[partitionID]
Inbound Data:
Return Result: <InputStatusList>
Example Response:
<InputInfoList xmlns="urn:psialliance-org">
<InputInfo>
<ID>15</ID>
<UID>{B777641C-12D4-4E98-B88D-72B1B000D29F}</UID>
<Name>SCP 000 - SIO 01-Input 8</Name>
<Description>SCP 000 - SIO 01-Input 8</Description>
<Supervised>false</Supervised>
<IsExternal>true</IsExternal>
</InputInfo>
<InputInfo>
<ID>16</ID>
<UID>{1080F1D2-4B94-47D9-8EBB-B2E4CF14789F}</UID>
<Name>SCP 000 - SIO 01-Input 7</Name>
<Description>SCP 000 - SIO 01-Input 7</Description>
<Supervised>false</Supervised>
<IsExternal>true</IsExternal>
</InputInfo>
<InputInfo>
<ID>17</ID>
<UID>{2CFF3644-E0E1-4A49-B736-F5ECC406D020}</UID>
<Name>SCP 000 - SIO 01-Input 6</Name>
<Description>SCP 000 - SIO 01-Input 6</Description>
<Supervised>false</Supervised>
<IsExternal>true</IsExternal>
</InputInfo>
<InputInfo>
<ID>18</ID>
<UID>{282DAAB6-788F-45EC-B07D-FB40EAD9A82C}</UID>
<Name>SCP 000 - SIO 01-Input 5</Name>
<Description>SCP 000 - SIO 01-Input 5</Description>
<Supervised>false</Supervised>
<IsExternal>true</IsExternal>
</InputInfo>
</InputInfoList>
URI: /PSIA/AreaControl/Devices/Inputs/status
Return to Supported Service URIs
Method: GET
Query String(s): [optional] externalOnly=[true,false], [optional] portalID=[portalID], [optional] partitionID=[partitionID]
Inbound Data:
Return Result: <PortalInfoList>
Example Response:
<InputStatusList xmlns="urn:psialliance-org">
<InputStatus>
<ID>15</ID>
<UID>{B777641C-12D4-4E98-B88D-72B1B000D29F}</UID>
<Connection>OK</Connection>
<SupervisionFault>OK</SupervisionFault>
<Input>Normal</Input>
<Mask>Monitored</Mask>
<Tamper>OK</Tamper>
</InputStatus>
<InputStatus>
<ID>16</ID>
<UID>{1080F1D2-4B94-47D9-8EBB-B2E4CF14789F}</UID>
<Connection>OK</Connection>
<SupervisionFault>OK</SupervisionFault>
<Input>Normal</Input>
<Mask>Monitored</Mask>
<Tamper>OK</Tamper>
</InputStatus>
<InputStatus>
<ID>17</ID>
<UID>{2CFF3644-E0E1-4A49-B736-F5ECC406D020}</UID>
<Connection>OK</Connection>
<SupervisionFault>OK</SupervisionFault>
<Input>Normal</Input>
<Mask>Monitored</Mask>
<Tamper>OK</Tamper>
</InputStatus>
<InputStatus>
<ID>18</ID>
<UID>{282DAAB6-788F-45EC-B07D-FB40EAD9A82C}</UID>
<Connection>OK</Connection>
<SupervisionFault>OK</SupervisionFault>
<Input>Normal</Input>
<Mask>Monitored</Mask>
<Tamper>OK</Tamper>
</InputStatus>
</InputStatusList>
URI: /PSIA/AreaControl/Devices/Inputs/maskState
Return to Supported Service URIs
Method: PUT
Query String(s): [required] state=[masked,monitored]
Inbound Data:
Return Result: <ResponseStatus>
Example Response: 200 OK
URI: /PSIA/AreaControl/Devices/Inputs/instanceDescription/<inputID>
Return to Supported Service URIs
Method: GET
Query String(s):
Inbound Data:
Return Result: <InputDescriptionInfo>
Example Response:
<InputDescriptionInfo version="1.0" xmlns="urn:psialliance-org">
<Name>SCP 000 - SIO 01-Input 8</Name>
<Description>SCP 000 - SIO 01-Input 8</Description>
</InputDescriptionInfo>
URI: /PSIA/AreaControl/Devices/Inputs/instanceDescription/<inputID>
Return to Supported Service URIs
Method: PUT
Query String(s):
Inbound Data: <InputDescrptionInfo>
Inbound Data Examples:
<InputDescriptionInfo version="1.0" xmlns="urn:psialliance-org">
<Name>SCP 000 - SIO 01-Input 8</Name>
<Description>SCP 000 - SIO 01-Input 8</Description>
</InputDescriptionInfo>
Return Result: <ResponseStatus>
Example Response: 200 OK
URI: /PSIA/AreaControl/Devices/Outputs/info
Return to Supported Service URIs
Method: GET
Query String(s): [optional] externalOnly=[true,false], [optional] portalID=[portalID], [optional] partitionID=[partitionID]
Inbound Data:
Return Result: <OutputInfoList>
Example Response:
<OutputInfoList xmlns="urn:psialliance-org">
<OutputInfo>
<ID>19</ID>
<UID>{E0065546-6B01-4742-BF92-466B63A4E502}</UID>
<Name>SCP 000 - SIO 01-Output 4</Name>
<Description>SCP 000 - SIO 01-Output 4</Description>
<Supervised>false</Supervised>
<IsExternal>true</IsExternal>
</OutputInfo>
<OutputInfo>
<ID>20</ID>
<UID>{89C79584-F1E2-4BA8-B5B4-599029B806E9}</UID>
<Name>SCP 000 - SIO 01-Output 6</Name>
<Description>SCP 000 - SIO 01-Output 6</Description>
<Supervised>false</Supervised>
<IsExternal>true</IsExternal>
</OutputInfo>
<OutputInfo>
<ID>21</ID>
<UID>{4E35F54F-727F-42E9-BA11-59A175D090D0}</UID>
<Name>SCP 000 - SIO 01-Output 2</Name>
<Description>SCP 000 - SIO 01-Output 2</Description>
<Supervised>false</Supervised>
<IsExternal>true</IsExternal>
</OutputInfo>
<OutputInfo>
<ID>22</ID>
<UID>{451A0ADB-756C-4B97-A6C9-92482BDD9D50}</UID>
<Name>SCP 000 - SIO 01-Output 5</Name>
<Description>SCP 000 - SIO 01-Output 5</Description>
<Supervised>false</Supervised>
<IsExternal>true</IsExternal>
</OutputInfo>
<OutputInfo>
<ID>23</ID>
<UID>{930EF234-6FBB-4302-8DFF-DE7258048C46}</UID>
<Name>SCP 000 - SIO 00-Output 2</Name>
<Description>SCP 000 - SIO 00-Output 2</Description>
<Supervised>false</Supervised>
<IsExternal>true</IsExternal>
</OutputInfo>
</OutputInfoList>
URI: /PSIA/AreaControl/Devices/Outputs/status
Return to Supported Service URIs
Method: GET
Query String(s): [optional] externalOnly=[true,false], [optional] portalID=[portalID], [optional] partitionID=[partitionID]
Inbound Data:
Return Result: <OutputStatusList>
Example Response:
<OutputStatusList xmlns="urn:psialliance-org">
<OutputStatus>
<ID>19</ID>
<Connection>OK</Connection>
<Output>Off</Output>
</OutputStatus>
<OutputStatus>
<ID>20</ID>
<Connection>OK</Connection>
<Output>Off</Output>
</OutputStatus>
<OutputStatus>
<ID>21</ID>
<Connection>OK</Connection>
<Output>Off</Output>
</OutputStatus>
<OutputStatus>
<ID>22</ID>
<Connection>OK</Connection>
<Output>Off</Output>
</OutputStatus>
<OutputStatus>
<ID>23</ID>
<Connection>OK</Connection>
<Output>Off</Output>
</OutputStatus>
</OutputStatusList>
URI: /PSIA/AreaControl/Devices/Outputs/state/<outputID>
Return to Supported Service URIs
Method: PUT
Query String(s): [required] state=[on,off]
Inbound Data:
Return Result: <ResponseStatus>
Example Response: 200 OK
URI: /PSIA/AreaControl/Devices/Outputs/instanceDescription/<outputID>
Return to Supported Service URIs
Method: GET
Query String(s):
Inbound Data:
Return Result: <OutputDescriptionInfo>
Example Response:
<OutputDescriptionInfo version="1.0" xmlns="urn:psialliance-org">
<Name>SCP 000 - SIO 01-Output 6</Name>
<Description>SCP 000 - SIO 01-Output 6</Description>
</OutputDescriptionInfo>
URI: /PSIA/AreaControl/Devices/Outputs/instanceDescription/<outputID>
Return to Supported Service URIs
Method: PUT
Query String(s):
Inbound Data: <OutputDescrptionInfo>
Inbound Data Examples:
<OutputDescriptionInfo version="1.0" xmlns="urn:psialliance-org">
<Name>SCP 000 - SIO 01-Output 6</Name>
<Description>SCP 000 - SIO 01-Output 6</Description>
</OutputDescriptionInfo>
Return Result: <ResponseStatus>
Example Response: 200 OK
Service details for Metadata and Events
Return to Supported Service URIs
Method: GET
Query String(s): [required] send=[all,history], [optional with send=history] time=[2017-01-01T00:00:00]
Inbound Data:
Return Result: <AreaControlEvent>