Platform API

<back to all web services

LogDeviceStatuses

Logs multiple device event details. Details include an event(crash,error,unexpected result) and the device status at the time of the event.

Requires Authentication
import 'package:servicestack/servicestack.dart';

/**
* Logs details of an event(crash,error,unexpected result) and the device status at the time of the event.
*/
// @Api(Description="Logs details of an event(crash,error,unexpected result) and the device status at the time of the event.")
class LogDeviceStatus implements IConvertible
{
    /**
    * Guid of the Appliance this Device is logging an event status for.
    */
    // @ApiMember(DataType="Guid", Description="Guid of the Appliance this Device is logging an event status for.", IsRequired=true, Name="ApplianceId", ParameterType="query")
    String? ApplianceId;

    /**
    * Guid representing the saved Device
    */
    // @ApiMember(DataType="Guid", Description="Guid representing the saved Device", IsRequired=true, Name="DeviceId", ParameterType="query")
    String? DeviceId;

    /**
    * The latitude the device was last located at.
    */
    // @ApiMember(DataType="double", Description="The latitude the device was last located at.", IsRequired=true, Name="Latitude", ParameterType="query")
    double? Latitude;

    /**
    * The longitude the device was last located at.
    */
    // @ApiMember(DataType="double", Description="The longitude the device was last located at.", IsRequired=true, Name="Longitude", ParameterType="query")
    double? Longitude;

    /**
    * Name of the event we're logging.
    */
    // @ApiMember(DataType="string", Description="Name of the event we're logging.", Name="EventName", ParameterType="query")
    String? EventName;

    /**
    * Details of the event up to (255 char).
    */
    // @ApiMember(DataType="string", Description="Details of the event up to (255 char).", Name="EventDetail1", ParameterType="query")
    String? EventDetail1;

    /**
    * Details of the event up to (255 char).
    */
    // @ApiMember(DataType="string", Description="Details of the event up to (255 char).", Name="EventDetail2", ParameterType="query")
    String? EventDetail2;

    /**
    * Details of the event up to (255 char).
    */
    // @ApiMember(DataType="string", Description="Details of the event up to (255 char).", Name="EventDetail3", ParameterType="query")
    String? EventDetail3;

    /**
    * Details of the event up to (255 char).
    */
    // @ApiMember(DataType="string", Description="Details of the event up to (255 char).", Name="EventDetail4", ParameterType="query")
    String? EventDetail4;

    /**
    * Details of the event up to (255 char).
    */
    // @ApiMember(DataType="string", Description="Details of the event up to (255 char).", Name="EventDetail5", ParameterType="query")
    String? EventDetail5;

    /**
    * Details of the event up to (255 char).
    */
    // @ApiMember(DataType="string", Description="Details of the event up to (255 char).", Name="Orientation", ParameterType="query")
    String? Orientation;

    /**
    * The device internet connection status.
    */
    // @ApiMember(DataType="string", Description="The device internet connection status.", Name="InternetConnectionStatus", ParameterType="query")
    String? InternetConnectionStatus;

    /**
    * Unlimited text field for logging details of the event.
    */
    // @ApiMember(DataType="string", Description="Unlimited text field for logging details of the event.", Name="Log", ParameterType="query")
    String? Log;

    /**
    * Date and Time of the event.
    */
    // @ApiMember(DataType="DateTime", Description="Date and Time of the event.", Name="Event", ParameterType="query")
    DateTime? Event;

    /**
    * True if the device is in portrait mode.
    */
    // @ApiMember(DataType="bool", Description="True if the device is in portrait mode.", Name="IsInPortrait", ParameterType="query")
    bool? IsInPortrait;

    /**
    * True if the device is in landscape mode.
    */
    // @ApiMember(DataType="bool", Description="True if the device is in landscape mode.", Name="IsInLandscape", ParameterType="query")
    bool? IsInLandscape;

    /**
    * True if cellular data is enabled.
    */
    // @ApiMember(DataType="bool", Description="True if cellular data is enabled.", Name="CellularDataEnabled", ParameterType="query")
    bool? CellularDataEnabled;

    /**
    * True if data roaming is enabled.
    */
    // @ApiMember(DataType="bool", Description="True if data roaming is enabled.", Name="DataRoamingEnabled", ParameterType="query")
    bool? DataRoamingEnabled;

    /**
    * True if the network is available.
    */
    // @ApiMember(DataType="bool", Description="True if the network is available.", Name="IsNetworkAvailable", ParameterType="query")
    bool? IsNetworkAvailable;

    /**
    * True if the device can send an sms.
    */
    // @ApiMember(DataType="bool", Description="True if the device can send an sms.", Name="CanSendSMS", ParameterType="query")
    bool? CanSendSMS;

    /**
    * True if the battery is charging.
    */
    // @ApiMember(DataType="bool", Description="True if the battery is charging.", Name="BatteryCharging", ParameterType="query")
    bool? BatteryCharging;

    /**
    * The amount of battery life left as a percentage.
    */
    // @ApiMember(DataType="int", Description="The amount of battery life left as a percentage.", Name="BatteryLevel", ParameterType="query")
    int? BatteryLevel;

    /**
    * The Guid of a saved Media Object.
    */
    // @ApiMember(DataType="Guid", Description="The Guid of a saved Media Object.", Name="MediaFileId1", ParameterType="query")
    String? MediaFileId1;

    /**
    * The Guid of a saved Media Object.
    */
    // @ApiMember(DataType="Guid", Description="The Guid of a saved Media Object.", Name="MediaFileId2", ParameterType="query")
    String? MediaFileId2;

    LogDeviceStatus({this.ApplianceId,this.DeviceId,this.Latitude,this.Longitude,this.EventName,this.EventDetail1,this.EventDetail2,this.EventDetail3,this.EventDetail4,this.EventDetail5,this.Orientation,this.InternetConnectionStatus,this.Log,this.Event,this.IsInPortrait,this.IsInLandscape,this.CellularDataEnabled,this.DataRoamingEnabled,this.IsNetworkAvailable,this.CanSendSMS,this.BatteryCharging,this.BatteryLevel,this.MediaFileId1,this.MediaFileId2});
    LogDeviceStatus.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ApplianceId = json['ApplianceId'];
        DeviceId = json['DeviceId'];
        Latitude = JsonConverters.toDouble(json['Latitude']);
        Longitude = JsonConverters.toDouble(json['Longitude']);
        EventName = json['EventName'];
        EventDetail1 = json['EventDetail1'];
        EventDetail2 = json['EventDetail2'];
        EventDetail3 = json['EventDetail3'];
        EventDetail4 = json['EventDetail4'];
        EventDetail5 = json['EventDetail5'];
        Orientation = json['Orientation'];
        InternetConnectionStatus = json['InternetConnectionStatus'];
        Log = json['Log'];
        Event = JsonConverters.fromJson(json['Event'],'DateTime',context!);
        IsInPortrait = json['IsInPortrait'];
        IsInLandscape = json['IsInLandscape'];
        CellularDataEnabled = json['CellularDataEnabled'];
        DataRoamingEnabled = json['DataRoamingEnabled'];
        IsNetworkAvailable = json['IsNetworkAvailable'];
        CanSendSMS = json['CanSendSMS'];
        BatteryCharging = json['BatteryCharging'];
        BatteryLevel = json['BatteryLevel'];
        MediaFileId1 = json['MediaFileId1'];
        MediaFileId2 = json['MediaFileId2'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ApplianceId': ApplianceId,
        'DeviceId': DeviceId,
        'Latitude': Latitude,
        'Longitude': Longitude,
        'EventName': EventName,
        'EventDetail1': EventDetail1,
        'EventDetail2': EventDetail2,
        'EventDetail3': EventDetail3,
        'EventDetail4': EventDetail4,
        'EventDetail5': EventDetail5,
        'Orientation': Orientation,
        'InternetConnectionStatus': InternetConnectionStatus,
        'Log': Log,
        'Event': JsonConverters.toJson(Event,'DateTime',context!),
        'IsInPortrait': IsInPortrait,
        'IsInLandscape': IsInLandscape,
        'CellularDataEnabled': CellularDataEnabled,
        'DataRoamingEnabled': DataRoamingEnabled,
        'IsNetworkAvailable': IsNetworkAvailable,
        'CanSendSMS': CanSendSMS,
        'BatteryCharging': BatteryCharging,
        'BatteryLevel': BatteryLevel,
        'MediaFileId1': MediaFileId1,
        'MediaFileId2': MediaFileId2
    };

    getTypeName() => "LogDeviceStatus";
    TypeContext? context = _ctx;
}

/**
* Logs multiple device event details.  Details include an event(crash,error,unexpected result) and the device status at the time of the event.
*/
// @Api(Description="Logs multiple device event details.  Details include an event(crash,error,unexpected result) and the device status at the time of the event.")
class LogDeviceStatuses implements IConvertible
{
    /**
    * A list of logged event statuses for a device.
    */
    // @ApiMember(DataType="int", Description="A list of logged event statuses for a device.", IsRequired=true, Name="DeviceStatuses", ParameterType="query")
    List<LogDeviceStatus>? DeviceStatuses = [];

    LogDeviceStatuses({this.DeviceStatuses});
    LogDeviceStatuses.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        DeviceStatuses = JsonConverters.fromJson(json['DeviceStatuses'],'List<LogDeviceStatus>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'DeviceStatuses': JsonConverters.toJson(DeviceStatuses,'List<LogDeviceStatus>',context!)
    };

    getTypeName() => "LogDeviceStatuses";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'pfapi.pstpf.com.au', types: <String, TypeInfo> {
    'LogDeviceStatus': TypeInfo(TypeOf.Class, create:() => LogDeviceStatus()),
    'LogDeviceStatuses': TypeInfo(TypeOf.Class, create:() => LogDeviceStatuses()),
    'List<LogDeviceStatus>': TypeInfo(TypeOf.Class, create:() => <LogDeviceStatus>[]),
});

Dart LogDeviceStatuses DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml

HTTP + XML

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /xml/reply/LogDeviceStatuses HTTP/1.1 
Host: pfapi.pstpf.com.au 
Accept: application/xml
Content-Type: application/xml
Content-Length: length

<LogDeviceStatuses xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Eros.Subtle.Canvara.WebAPIModel.ServiceModel">
  <DeviceStatuses>
    <LogDeviceStatus>
      <ApplianceId>00000000-0000-0000-0000-000000000000</ApplianceId>
      <BatteryCharging>false</BatteryCharging>
      <BatteryLevel>0</BatteryLevel>
      <CanSendSMS>false</CanSendSMS>
      <CellularDataEnabled>false</CellularDataEnabled>
      <DataRoamingEnabled>false</DataRoamingEnabled>
      <DeviceId>00000000-0000-0000-0000-000000000000</DeviceId>
      <Event>0001-01-01T00:00:00</Event>
      <EventDetail1>String</EventDetail1>
      <EventDetail2>String</EventDetail2>
      <EventDetail3>String</EventDetail3>
      <EventDetail4>String</EventDetail4>
      <EventDetail5>String</EventDetail5>
      <EventName>String</EventName>
      <InternetConnectionStatus>String</InternetConnectionStatus>
      <IsInLandscape>false</IsInLandscape>
      <IsInPortrait>false</IsInPortrait>
      <IsNetworkAvailable>false</IsNetworkAvailable>
      <Latitude>0</Latitude>
      <Log>String</Log>
      <Longitude>0</Longitude>
      <MediaFileId1>00000000-0000-0000-0000-000000000000</MediaFileId1>
      <MediaFileId2>00000000-0000-0000-0000-000000000000</MediaFileId2>
      <Orientation>String</Orientation>
    </LogDeviceStatus>
  </DeviceStatuses>
</LogDeviceStatuses>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<ResponseStatus xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.servicestack.net/types">
  <ErrorCode>String</ErrorCode>
  <Message>String</Message>
  <StackTrace>String</StackTrace>
  <Errors>
    <ResponseError>
      <ErrorCode>String</ErrorCode>
      <FieldName>String</FieldName>
      <Message>String</Message>
      <Meta xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
        <d4p1:KeyValueOfstringstring>
          <d4p1:Key>String</d4p1:Key>
          <d4p1:Value>String</d4p1:Value>
        </d4p1:KeyValueOfstringstring>
      </Meta>
    </ResponseError>
  </Errors>
  <Meta xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
    <d2p1:KeyValueOfstringstring>
      <d2p1:Key>String</d2p1:Key>
      <d2p1:Value>String</d2p1:Value>
    </d2p1:KeyValueOfstringstring>
  </Meta>
</ResponseStatus>