1Fetch Client API

<back to all web services

PlaceOrderFromQuote

The following routes are available for this service:
POST/quote/orderProvide a quoteId to create an order. This will bill the order to your account.
import Foundation
import ServiceStack

public class PlaceOrderFromQuote : ApiServiceRequest, ILogRequest
{
    /**
    * Optionally provide your own reference identifier
    */
    // @ApiMember(Description="Optionally provide your own reference identifier")
    public var clientReference:String

    /**
    * The quote the order is for
    */
    // @ApiMember(Description="The quote the order is for", IsRequired=true)
    public var quoteId:String

    /**
    * Set this to true to prevent creating an order and billing for it
    */
    // @ApiMember(Description="Set this to true to prevent creating an order and billing for it", IsRequired=true)
    public var test:Bool

    /**
    * Is your account allows Urgent Orders, you can use this flag to indicate when an Order is urgent.
    */
    // @ApiMember(Description="Is your account allows Urgent Orders, you can use this flag to indicate when an Order is urgent.")
    public var isUrgent:Bool

    required public init(){ super.init() }

    private enum CodingKeys : String, CodingKey {
        case clientReference
        case quoteId
        case test
        case isUrgent
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        clientReference = try container.decodeIfPresent(String.self, forKey: .clientReference)
        quoteId = try container.decodeIfPresent(String.self, forKey: .quoteId)
        test = try container.decodeIfPresent(Bool.self, forKey: .test)
        isUrgent = try container.decodeIfPresent(Bool.self, forKey: .isUrgent)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if clientReference != nil { try container.encode(clientReference, forKey: .clientReference) }
        if quoteId != nil { try container.encode(quoteId, forKey: .quoteId) }
        if test != nil { try container.encode(test, forKey: .test) }
        if isUrgent != nil { try container.encode(isUrgent, forKey: .isUrgent) }
    }
}

public class ApiServiceRequest : IServiceRequest, IHasApiKey, Codable
{
    /**
    * The API Key required for authentication
    */
    // @ApiMember(DataType="string", Description="The API Key required for authentication", IsRequired=true)
    public var apiKey:String

    required public init(){}
}

public class PlaceOrderFromQuoteResponse : ApiServiceResponse
{
    /**
    * The ID of the order.
    */
    // @ApiMember(Description="The ID of the order.")
    public var orderId:String

    /**
    * User friendly waybill number
    */
    // @ApiMember(Description="User friendly waybill number")
    public var wayBill:String

    required public init(){ super.init() }

    private enum CodingKeys : String, CodingKey {
        case orderId
        case wayBill
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        orderId = try container.decodeIfPresent(String.self, forKey: .orderId)
        wayBill = try container.decodeIfPresent(String.self, forKey: .wayBill)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if orderId != nil { try container.encode(orderId, forKey: .orderId) }
        if wayBill != nil { try container.encode(wayBill, forKey: .wayBill) }
    }
}

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

    required public init(){}
}


Swift PlaceOrderFromQuote DTOs

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

HTTP + JSV

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

POST /quote/order HTTP/1.1 
Host: api.1fetch.co.za 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	ClientReference: String,
	QuoteId: 00000000-0000-0000-0000-000000000000,
	Test: False,
	IsUrgent: False,
	ApiKey: String
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	OrderId: 00000000-0000-0000-0000-000000000000,
	WayBill: String,
	Description: String,
	Heading: String,
	WasSuccessful: False
}