| POST | /sync/saveincompleteuplift |
|---|
import Foundation
import ServiceStack
public class SaveIncompleteUpliftRequest : ApiServiceRequest
{
public var incompleteUpliftRequestId:String?
public var imageIdsOnDevice:[String] = []
public var upliftRequestData:UpliftRequestData?
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case incompleteUpliftRequestId
case imageIdsOnDevice
case upliftRequestData
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
incompleteUpliftRequestId = try container.decodeIfPresent(String.self, forKey: .incompleteUpliftRequestId)
imageIdsOnDevice = try container.decodeIfPresent([String].self, forKey: .imageIdsOnDevice) ?? []
upliftRequestData = try container.decodeIfPresent(UpliftRequestData.self, forKey: .upliftRequestData)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if incompleteUpliftRequestId != nil { try container.encode(incompleteUpliftRequestId, forKey: .incompleteUpliftRequestId) }
if imageIdsOnDevice.count > 0 { try container.encode(imageIdsOnDevice, forKey: .imageIdsOnDevice) }
if upliftRequestData != nil { try container.encode(upliftRequestData, forKey: .upliftRequestData) }
}
}
public class ApiServiceRequest : IServiceRequest, IHasApiKey, IHasDeviceInfo, Codable
{
/**
* The API Key required for authentication
*/
// @ApiMember(DataType="string", Description="The API Key required for authentication", IsRequired=true)
public var apiKey:String?
/**
* Latitude of the user making this request
*/
// @ApiMember(DataType="double", Description="Latitude of the user making this request")
public var latitude:Double?
/**
* Longitude of the user making this request
*/
// @ApiMember(DataType="double", Description="Longitude of the user making this request")
public var longitude:Double?
required public init(){}
}
public class UpliftRequestData : Codable
{
public var upliftRequestId:Int?
public var id:String?
public var outletId:Int?
public var products:[UpliftRequestProductData] = []
public var outletEmailAddress:String?
public var outletContactName:String?
public var outletChannel:String?
public var outletRegion:String?
public var additionalNotes:String?
//merchandiserSignatureImage:Object ignored. Type could not be extended in Swift
public var startTime:String?
public var startLatitude:Double?
public var startLongitude:Double?
public var endTime:String?
public var endLatitude:Double?
public var endLongitude:Double?
public var lastUpdated:Date?
public var lastSynced:Date?
public var incompleteUpliftRequestId:String?
public var authRequestId:String?
public var authorised:Bool?
public var principalId:Int?
public var seals:[SealData] = []
public var confirmed:Bool?
public var cancelled:Bool?
public var images:[Object] = []
public var submitImmediately:Bool?
required public init(){}
}
public class UpliftRequestProductData : Codable
{
public var id:String?
public var upliftRequestProductId:Int?
public var productId:Int?
public var principalId:Int?
public var unitPrice:Double?
public var name:String?
public var category:String?
public var unitBarcode:String?
public var unitSize:String?
public var unitWeight:Double?
public var code:String?
public var images:[Object] = []
public var quantity:Double?
public var value:Double?
public var productionDate:String?
public var expiryDate:String?
public var batchCode:String?
public var seal:SealData?
public var serialNumber:String?
public var stockStatusId:Int?
public var principalLogoUrl:String?
public var principalName:String?
public var stockStatusName:String?
public var stockStatusColor:String?
public var unitOfMeasureId:Int?
required public init(){}
}
public class SealData : Seal
{
required public init(){ super.init() }
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
}
}
public class Seal : Codable
{
public var number:String?
public var weight:Double?
required public init(){}
}
public class SaveIncompleteUpliftRequestResponse : ApiServiceResponse
{
public var imageIds:[String] = []
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case imageIds
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
imageIds = try container.decodeIfPresent([String].self, forKey: .imageIds) ?? []
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if imageIds.count > 0 { try container.encode(imageIds, forKey: .imageIds) }
}
}
public class ApiServiceResponse : IServiceResponse, Codable
{
/**
* Information about the response.
*/
// @ApiMember(Description="Information about the response.", IsRequired=true)
public var Description:String?
/**
* Heading or summary of the response.
*/
// @ApiMember(Description="Heading or summary of the response.", IsRequired=true)
public var heading:String?
/**
* Did the intended operation for this response complete successfully?
*/
// @ApiMember(DataType="boolean", Description="Did the intended operation for this response complete successfully?", IsRequired=true)
public var wasSuccessful:Bool?
public var responseStatus:ResponseStatus?
required public init(){}
}
Swift SaveIncompleteUpliftRequest DTOs
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 /sync/saveincompleteuplift HTTP/1.1
Host: returnit-api-dev.happen.zone
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
ImageIdsOnDevice:
[
String
],
UpliftRequestData:
{
UpliftRequestId: 0,
OutletId: 0,
Products:
[
{
UpliftRequestProductId: 0,
ProductId: 0,
PrincipalId: 0,
UnitPrice: 0,
Name: String,
Category: String,
UnitBarcode: String,
UnitSize: String,
UnitWeight: 0,
Code: String,
Images:
[
{
}
],
Quantity: 0,
Value: 0,
ProductionDate: String,
ExpiryDate: String,
BatchCode: String,
Seal:
{
Number: String,
Weight: 0
},
SerialNumber: String,
StockStatusId: 0,
PrincipalLogoUrl: String,
PrincipalName: String,
StockStatusName: String,
StockStatusColor: String,
UnitOfMeasureId: 0
}
],
OutletEmailAddress: String,
OutletContactName: String,
OutletChannel: String,
OutletRegion: String,
AdditionalNotes: String,
MerchandiserSignatureImage: {},
StartTime: String,
StartLatitude: 0,
StartLongitude: 0,
EndTime: String,
EndLatitude: 0,
EndLongitude: 0,
LastUpdated: 0001-01-01,
LastSynced: 0001-01-01,
IncompleteUpliftRequestId: String,
Authorised: False,
PrincipalId: 0,
Seals:
[
{
Number: String,
Weight: 0
}
],
Confirmed: False,
Cancelled: False,
Images:
[
{
}
],
SubmitImmediately: False
},
ApiKey: String,
Latitude: 0,
Longitude: 0
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
ImageIds:
[
String
],
Description: String,
Heading: String,
WasSuccessful: False,
ResponseStatus:
{
ErrorCode: String,
Message: String,
StackTrace: String,
Errors:
[
{
ErrorCode: String,
FieldName: String,
Message: String,
Meta:
{
String: String
}
}
],
Meta:
{
String: String
}
}
}