| POST,OPTIONS | /v1/customerlink |
|---|
import Foundation
import ServiceStack
public class CustomerLinkCreateRequest : Codable
{
public var resourceType:String
public var resourceUid:String
public var recipientContactId:Int?
public var recipientEmail:String
public var recipientPhone:String
public var deliverEmail:Bool
public var deliverSms:Bool
public var expiresInHours:Int?
public var maxViews:Int?
required public init(){}
}
public class CustomerLinkCreateResponse : Codable
{
public var responseStatus:ResponseStatus
public var link:CustomerLinkExtended
public var portalUrl:String
public var deliveryErrors:[String] = []
required public init(){}
}
public class CustomerLinkExtended : CustomerLink
{
public var recipientDisplayName:String
public var recipientType:String
public var status:String
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case recipientDisplayName
case recipientType
case status
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
recipientDisplayName = try container.decodeIfPresent(String.self, forKey: .recipientDisplayName)
recipientType = try container.decodeIfPresent(String.self, forKey: .recipientType)
status = try container.decodeIfPresent(String.self, forKey: .status)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if recipientDisplayName != nil { try container.encode(recipientDisplayName, forKey: .recipientDisplayName) }
if recipientType != nil { try container.encode(recipientType, forKey: .recipientType) }
if status != nil { try container.encode(status, forKey: .status) }
}
}
public class CustomerLink : Codable
{
public var customerLinkId:Int
public var customerLinkUID:String
public var tokenHash:String
public var resourceType:String
public var resourceUid:String
public var sensitivityTier:String
public var requireOtp:Bool
public var otpChannel:String
public var deliveryChannels:String
public var recipientContactId:Int?
public var recipientEmail:String
public var recipientPhone:String
public var smsConsentSnapshot:Bool
public var createdByUserId:String
public var createdByAgentId:Int?
public var createdAtUtc:Date
public var expiresAtUtc:Date?
public var maxViews:Int?
public var viewCount:Int
public var revokedAtUtc:Date?
public var revokedByUserId:String?
public var tenantId:String
required public init(){}
}
Swift CustomerLinkCreateRequest 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 /v1/customerlink HTTP/1.1
Host: api.dev.dynamics.trendsic.com
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
ResourceType: String,
ResourceUid: 00000000000000000000000000000000,
RecipientContactId: 0,
RecipientEmail: String,
RecipientPhone: String,
DeliverEmail: False,
DeliverSms: False,
ExpiresInHours: 0,
MaxViews: 0
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
ResponseStatus:
{
ErrorCode: String,
Message: String,
StackTrace: String,
Errors:
[
{
ErrorCode: String,
FieldName: String,
Message: String,
Meta:
{
String: String
}
}
],
Meta:
{
String: String
}
},
Link:
{
RecipientDisplayName: String,
RecipientType: String,
Status: String,
CustomerLinkId: 0,
CustomerLinkUID: 00000000000000000000000000000000,
TokenHash: String,
ResourceType: String,
ResourceUid: 00000000000000000000000000000000,
SensitivityTier: String,
RequireOtp: False,
OtpChannel: String,
DeliveryChannels: String,
RecipientContactId: 0,
RecipientEmail: String,
RecipientPhone: String,
SmsConsentSnapshot: False,
CreatedByUserId: 00000000000000000000000000000000,
CreatedByAgentId: 0,
CreatedAtUtc: 0001-01-01,
ExpiresAtUtc: 0001-01-01,
MaxViews: 0,
ViewCount: 0,
RevokedAtUtc: 0001-01-01,
RevokedByUserId: 00000000000000000000000000000000,
TenantId: 00000000000000000000000000000000
},
PortalUrl: String,
DeliveryErrors:
[
String
]
}