FrameAppWS

<back to all web services

CustomUserSession

Requires Authentication
import Foundation
import ServiceStack

// @DataContract
public class CustomUserSession : AuthUserSession
{
    // @DataMember
    public var idUsuario:String?

    // @DataMember
    public var idSistema:Double?

    // @DataMember
    public var idEmpresaProd:String?

    // @DataMember
    public var idEmpresa:Double?

    // @DataMember
    public var idModulo:String?

    // @DataMember
    public var motorProd:MotorBD?

    // @DataMember
    public var motorAppAdm:MotorBD?

    // @DataMember
    public var prodConnectionString:String?

    // @DataMember
    public var appAdmConnectionString:String?

    // @DataMember
    public var cacheKeyAdm:String?

    // @DataMember
    public var password:String?

    // @DataMember
    public var sessionDB:Bool?

    // @DataMember
    public var mensajeError:String?

    // @DataMember
    public var documentoUsuario:String?

    // @DataMember
    public var app_adm:String?

    // @DataMember
    public var imei:String?

    // @DataMember
    public var baseURL:String?

    // @DataMember
    public var usaServAux:String?

    // @DataMember
    public var tipoValidaAuth:String?

    // @DataMember
    public var tokenExt:String?

    // @DataMember
    public var subsistema:String?

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

    private enum CodingKeys : String, CodingKey {
        case idUsuario
        case idSistema
        case idEmpresaProd
        case idEmpresa
        case idModulo
        case motorProd
        case motorAppAdm
        case prodConnectionString
        case appAdmConnectionString
        case cacheKeyAdm
        case password
        case sessionDB
        case mensajeError
        case documentoUsuario
        case app_adm
        case imei
        case baseURL
        case usaServAux
        case tipoValidaAuth
        case tokenExt
        case subsistema
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        idUsuario = try container.decodeIfPresent(String.self, forKey: .idUsuario)
        idSistema = try container.decodeIfPresent(Double.self, forKey: .idSistema)
        idEmpresaProd = try container.decodeIfPresent(String.self, forKey: .idEmpresaProd)
        idEmpresa = try container.decodeIfPresent(Double.self, forKey: .idEmpresa)
        idModulo = try container.decodeIfPresent(String.self, forKey: .idModulo)
        motorProd = try container.decodeIfPresent(MotorBD.self, forKey: .motorProd)
        motorAppAdm = try container.decodeIfPresent(MotorBD.self, forKey: .motorAppAdm)
        prodConnectionString = try container.decodeIfPresent(String.self, forKey: .prodConnectionString)
        appAdmConnectionString = try container.decodeIfPresent(String.self, forKey: .appAdmConnectionString)
        cacheKeyAdm = try container.decodeIfPresent(String.self, forKey: .cacheKeyAdm)
        password = try container.decodeIfPresent(String.self, forKey: .password)
        sessionDB = try container.decodeIfPresent(Bool.self, forKey: .sessionDB)
        mensajeError = try container.decodeIfPresent(String.self, forKey: .mensajeError)
        documentoUsuario = try container.decodeIfPresent(String.self, forKey: .documentoUsuario)
        app_adm = try container.decodeIfPresent(String.self, forKey: .app_adm)
        imei = try container.decodeIfPresent(String.self, forKey: .imei)
        baseURL = try container.decodeIfPresent(String.self, forKey: .baseURL)
        usaServAux = try container.decodeIfPresent(String.self, forKey: .usaServAux)
        tipoValidaAuth = try container.decodeIfPresent(String.self, forKey: .tipoValidaAuth)
        tokenExt = try container.decodeIfPresent(String.self, forKey: .tokenExt)
        subsistema = try container.decodeIfPresent(String.self, forKey: .subsistema)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if idUsuario != nil { try container.encode(idUsuario, forKey: .idUsuario) }
        if idSistema != nil { try container.encode(idSistema, forKey: .idSistema) }
        if idEmpresaProd != nil { try container.encode(idEmpresaProd, forKey: .idEmpresaProd) }
        if idEmpresa != nil { try container.encode(idEmpresa, forKey: .idEmpresa) }
        if idModulo != nil { try container.encode(idModulo, forKey: .idModulo) }
        if motorProd != nil { try container.encode(motorProd, forKey: .motorProd) }
        if motorAppAdm != nil { try container.encode(motorAppAdm, forKey: .motorAppAdm) }
        if prodConnectionString != nil { try container.encode(prodConnectionString, forKey: .prodConnectionString) }
        if appAdmConnectionString != nil { try container.encode(appAdmConnectionString, forKey: .appAdmConnectionString) }
        if cacheKeyAdm != nil { try container.encode(cacheKeyAdm, forKey: .cacheKeyAdm) }
        if password != nil { try container.encode(password, forKey: .password) }
        if sessionDB != nil { try container.encode(sessionDB, forKey: .sessionDB) }
        if mensajeError != nil { try container.encode(mensajeError, forKey: .mensajeError) }
        if documentoUsuario != nil { try container.encode(documentoUsuario, forKey: .documentoUsuario) }
        if app_adm != nil { try container.encode(app_adm, forKey: .app_adm) }
        if imei != nil { try container.encode(imei, forKey: .imei) }
        if baseURL != nil { try container.encode(baseURL, forKey: .baseURL) }
        if usaServAux != nil { try container.encode(usaServAux, forKey: .usaServAux) }
        if tipoValidaAuth != nil { try container.encode(tipoValidaAuth, forKey: .tipoValidaAuth) }
        if tokenExt != nil { try container.encode(tokenExt, forKey: .tokenExt) }
        if subsistema != nil { try container.encode(subsistema, forKey: .subsistema) }
    }
}

// @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?

    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 enum MotorBD : String, Codable
{
    case POSTGRESQL
    case ORACLE
    case SQLSERVER
}


Swift CustomUserSession 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 /jsv/reply/CustomUserSession HTTP/1.1 
Host: ws.jimsnwa.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	"IDUsuario": "String",
	"IDSistema": 0,
	"IDEmpresaProd": "String",
	"IDEmpresa": 0,
	"IDModulo": "String",
	"MotorProd": "POSTGRESQL",
	"MotorAppAdm": "POSTGRESQL",
	"ProdConnectionString": "String",
	"AppAdmConnectionString": "String",
	"CacheKeyAdm": "String",
	"Password": "String",
	"SessionDB": false,
	"MensajeError": "String",
	"DocumentoUsuario": "String",
	"app_adm": "String",
	"imei": "String",
	"BaseURL": "String",
	"UsaServAux": "String",
	"TipoValidaAuth": "String",
	"TokenExt": "String",
	"Subsistema": "String",
	"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-01T00:00:00.0000000",
	"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-01T00:00:00.0000000",
	"LastModified": "0001-01-01T00:00:00.0000000",
	"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"
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	"IDUsuario": "String",
	"IDSistema": 0,
	"IDEmpresaProd": "String",
	"IDEmpresa": 0,
	"IDModulo": "String",
	"MotorProd": "POSTGRESQL",
	"MotorAppAdm": "POSTGRESQL",
	"ProdConnectionString": "String",
	"AppAdmConnectionString": "String",
	"CacheKeyAdm": "String",
	"Password": "String",
	"SessionDB": false,
	"MensajeError": "String",
	"DocumentoUsuario": "String",
	"app_adm": "String",
	"imei": "String",
	"BaseURL": "String",
	"UsaServAux": "String",
	"TipoValidaAuth": "String",
	"TokenExt": "String",
	"Subsistema": "String",
	"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-01T00:00:00.0000000",
	"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-01T00:00:00.0000000",
	"LastModified": "0001-01-01T00:00:00.0000000",
	"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"
}