import Foundation
import ServiceStack
// @ValidateRequest(Validator="IsAuthenticated")
public class UserData : IPost, Codable
{
required public init(){}
}
public class UserDataResponse : Codable
{
public var user:UserResult
public var profile:UserProfile
public var signups:[SignupType] = []
public var roles:[String] = []
public var responseStatus:ResponseStatus
required public init(){}
}
public class UserResult : Codable
{
public var refId:String
public var handle:String
public var avatar:String
public var profileUrl:String
public var likes:Likes
public var albums:[AlbumResult] = []
required public init(){}
}
public class Likes : Codable
{
public var artifactIds:[Int] = []
public var albumIds:[Int] = []
required public init(){}
}
public class AlbumResult : Codable
{
public var id:Int
public var name:String
public var slug:String
public var albumRef:String
public var ownerRef:String
public var primaryArtifactId:Int?
public var score:Int
public var artifactIds:[Int] = []
required public init(){}
}
public class UserProfile : Codable
{
public var displayName:String
public var avatar:String
public var handle:String
required public init(){}
}
public enum SignupType : String, Codable
{
case Updates
case Beta
}
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 /jsv/reply/UserData HTTP/1.1
Host: blazordiffusion.com
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
}
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { user: { refId: String, handle: String, avatar: String, profileUrl: String, likes: { artifactIds: [ 0 ], albumIds: [ 0 ] }, albums: [ { id: 0, name: String, slug: String, albumRef: String, ownerRef: String, primaryArtifactId: 0, score: 0, artifactIds: [ 0 ] } ] }, profile: { displayName: String, avatar: String, handle: String }, signups: [ Updates ], roles: [ String ], responseStatus: { errorCode: String, message: String, stackTrace: String, errors: [ { errorCode: String, fieldName: String, message: String, meta: { String: String } } ], meta: { String: String } } }