All Verbs | /jwt |
---|
import Foundation
import ServiceStack
public class CreateJwt : AuthUserSession
{
public var jwtExpiry:Date?
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case jwtExpiry
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
jwtExpiry = try container.decodeIfPresent(Date.self, forKey: .jwtExpiry)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if jwtExpiry != nil { try container.encode(jwtExpiry, forKey: .jwtExpiry) }
}
}
// @DataContract
public class AuthUserSession : IMeta, Codable
{
// @DataMember(Order=1)
public var referrerUrl:String
// @DataMember(Order=2)
public var id:String
// @DataMember(Order=3)
public var userAuthId:String
// @DataMember(Order=4)
public var userAuthName:String
// @DataMember(Order=5)
public var userName:String
// @DataMember(Order=6)
public var twitterUserId:String
// @DataMember(Order=7)
public var twitterScreenName:String
// @DataMember(Order=8)
public var facebookUserId:String
// @DataMember(Order=9)
public var facebookUserName:String
// @DataMember(Order=10)
public var firstName:String
// @DataMember(Order=11)
public var lastName:String
// @DataMember(Order=12)
public var displayName:String
// @DataMember(Order=13)
public var company:String
// @DataMember(Order=14)
public var email:String
// @DataMember(Order=15)
public var primaryEmail:String
// @DataMember(Order=16)
public var phoneNumber:String
// @DataMember(Order=17)
public var birthDate:Date?
// @DataMember(Order=18)
public var birthDateRaw:String
// @DataMember(Order=19)
public var address:String
// @DataMember(Order=20)
public var address2:String
// @DataMember(Order=21)
public var city:String
// @DataMember(Order=22)
public var state:String
// @DataMember(Order=23)
public var country:String
// @DataMember(Order=24)
public var culture:String
// @DataMember(Order=25)
public var fullName:String
// @DataMember(Order=26)
public var gender:String
// @DataMember(Order=27)
public var language:String
// @DataMember(Order=28)
public var mailAddress:String
// @DataMember(Order=29)
public var nickname:String
// @DataMember(Order=30)
public var postalCode:String
// @DataMember(Order=31)
public var timeZone:String
// @DataMember(Order=32)
public var requestTokenSecret:String
// @DataMember(Order=33)
public var createdAt:Date
// @DataMember(Order=34)
public var lastModified:Date
// @DataMember(Order=35)
public var roles:[String]
// @DataMember(Order=36)
public var permissions:[String]
// @DataMember(Order=37)
public var isAuthenticated:Bool
// @DataMember(Order=38)
public var fromToken:Bool
// @DataMember(Order=39)
public var profileUrl:String
// @DataMember(Order=40)
public var sequence:String
// @DataMember(Order=41)
public var tag:Int
// @DataMember(Order=42)
public var authProvider:String
//providerOAuthAccess:[IAuthTokens] ignored. Swift doesn't support interface properties
// @DataMember(Order=44)
public var meta:[String:String]
// @DataMember(Order=45)
public var audiences:[String]
// @DataMember(Order=46)
public var scopes:[String]
// @DataMember(Order=47)
public var dns:String
// @DataMember(Order=48)
public var rsa:String
// @DataMember(Order=49)
public var sid:String
// @DataMember(Order=50)
public var hash:String
// @DataMember(Order=51)
public var homePhone:String
// @DataMember(Order=52)
public var mobilePhone:String
// @DataMember(Order=53)
public var webpage:String
// @DataMember(Order=54)
public var emailConfirmed:Bool?
// @DataMember(Order=55)
public var phoneNumberConfirmed:Bool?
// @DataMember(Order=56)
public var twoFactorEnabled:Bool?
// @DataMember(Order=57)
public var securityStamp:String
// @DataMember(Order=58)
public var type:String
// @DataMember(Order=59)
public var recoveryToken:String
// @DataMember(Order=60)
public var refId:Int?
// @DataMember(Order=61)
public var refIdStr:String
required public init(){}
}
public protocol IAuthTokens
{
var provider:String { get set }
var userId:String { get set }
var accessToken:String { get set }
var accessTokenSecret:String { get set }
var refreshToken:String { get set }
var refreshTokenExpiry:Date? { get set }
var requestToken:String { get set }
var requestTokenSecret:String { get set }
var items:[String:String] { get set }
}
public class CreateJwtResponse : Codable
{
public var token:String
public var responseStatus:ResponseStatus
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 /jwt HTTP/1.1
Host: test.servicestack.net
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
jwtExpiry: 0001-01-01,
referrerUrl: String,
id: String,
userAuthId: String,
userAuthName: String,
userName: String,
twitterUserId: String,
twitterScreenName: String,
facebookUserId: String,
facebookUserName: String,
firstName: String,
lastName: String,
displayName: String,
company: String,
email: String,
primaryEmail: String,
phoneNumber: String,
birthDate: 0001-01-01,
birthDateRaw: String,
address: String,
address2: String,
city: String,
state: String,
country: String,
culture: String,
fullName: String,
gender: String,
language: String,
mailAddress: String,
nickname: String,
postalCode: String,
timeZone: String,
requestTokenSecret: String,
createdAt: 0001-01-01,
lastModified: 0001-01-01,
roles:
[
String
],
permissions:
[
String
],
isAuthenticated: False,
fromToken: False,
profileUrl: String,
sequence: String,
tag: 0,
authProvider: String,
providerOAuthAccess:
[
{
}
],
meta:
{
String: String
},
audiences:
[
String
],
scopes:
[
String
],
dns: String,
rsa: String,
sid: String,
hash: String,
homePhone: String,
mobilePhone: String,
webpage: String,
emailConfirmed: False,
phoneNumberConfirmed: False,
twoFactorEnabled: False,
securityStamp: String,
type: String,
recoveryToken: String,
refId: 0,
refIdStr: String
}
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { token: String, responseStatus: { errorCode: String, message: String, stackTrace: String, errors: [ { errorCode: String, fieldName: String, message: String, meta: { String: String } } ], meta: { String: String } } }