| POST | /{Workspace}/Track/{UserId} |
|---|
import Foundation
import ServiceStack
/**
* Service representing a Track object in a workspace. Note that request.TrackId is returned on successful POST else null. The Items property is a list of Item objects, each object representing a location where the user stopped for a period of time. The Item object is comprised of a Location property (Lat/Lon), Time property (Timestamp in UTC string format) and Interval Property (Time stopped in seconds). The RedlineItems property is a list of RedlineItem objects, each object representing a location where the user began exceeding the redline speed defined in the workspace for a period of time also defined in the workspace. The properties are identical to the StopItem object, however the Interval property represents time spent above the redline speed in seconds. Speed property is in meters per sec.
*/
public class Track : Codable
{
public var workspace:String
public var userId:String
public var trackId:String
public var items:[String] = []
public var stops:[StopItem] = []
public var spd:[RedlineItem] = []
public var address:Address
public var distance:Double
required public init(){}
}
/**
* Service representing a StopItem object in a workspace.
*/
public class StopItem : Codable
{
public var pt:String
public var int:Int
required public init(){}
}
/**
* Service representing a RedlineItem object in a workspace.
*/
public class RedlineItem : Codable
{
public var pt:String
public var int:Int
public var avg:Double
required public init(){}
}
public class Address : Codable
{
public var street:String
public var unit:String
public var city:String
public var state:String
public var zip:String
public var contactTitle:String
public var contactName:String
public var contactPhone:String
public var contactEmail:String
public var location:Location
public var siteName:String
public var geocodeFailed:Bool
public var country:String
required public init(){}
}
public class Location : Codable
{
public var y:Double
public var x:Double
required public init(){}
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /{Workspace}/Track/{UserId} HTTP/1.1
Host: dev.fieldsquared.com
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
Workspace: String,
UserId: String,
TrackId: String,
Items:
[
String
],
Stops:
[
{
PT: String,
Int: 0
}
],
Spd:
[
{
PT: String,
Int: 0,
Avg: 0
}
],
Address:
{
Street: String,
Unit: String,
City: String,
State: String,
Zip: String,
ContactTitle: String,
ContactName: String,
ContactPhone: String,
ContactEmail: String,
Location:
{
y: 0,
x: 0
},
SiteName: String,
GeocodeFailed: False,
Country: String
},
Distance: 0
}