All Verbs | /my-session |
---|
import Foundation
import ServiceStack
// @ValidateRequest(Validator="IsAuthenticated")
public class SessionInfo : IGet, Codable
{
required public init(){}
}
public class SessionInfoResponse : Codable
{
public var created:Date
public var id:String
public var referrerUrl:String
public var userAuthId:String
public var userAuthName:String
public var userName:String
public var displayName:String
public var firstName:String
public var lastName:String
public var email:String
public var createdAt:Date
public var lastModified:Date
public var roles:[String] = []
public var permissions:[String] = []
public var isAuthenticated:Bool
public var authProvider:String
public var profileUrl:String
public var githubProfileUrl:String
public var twitterProfileUrl:String
public var accessToken:String
public var avatarUrl:String
public var techStacks:[TechnologyStack] = []
public var favoriteTechStacks:[TechnologyStack] = []
public var favoriteTechnologies:[Technology] = []
public var userActivity:UserActivity
public var members:[OrganizationMember] = []
public var memberInvites:[OrganizationMemberInvite] = []
public var subscriptions:[OrganizationSubscription] = []
public var responseStatus:ResponseStatus
required public init(){}
}
public class TechnologyStack : TechnologyStackBase
{
public var id:Int
public var name:String
public var vendorName:String
public var Description:String
public var appUrl:String
public var screenshotUrl:String
public var created:Date
public var createdBy:String
public var lastModified:Date
public var lastModifiedBy:String
public var isLocked:Bool
public var ownerId:String
public var slug:String
// @StringLength(Int32.max)
public var details:String
// @StringLength(Int32.max)
public var detailsHtml:String
public var lastStatusUpdate:Date?
public var organizationId:Int?
public var commentsPostId:Int?
public var viewCount:Int
public var favCount:Int
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case id
case name
case vendorName
case Description
case appUrl
case screenshotUrl
case created
case createdBy
case lastModified
case lastModifiedBy
case isLocked
case ownerId
case slug
case details
case detailsHtml
case lastStatusUpdate
case organizationId
case commentsPostId
case viewCount
case favCount
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
id = try container.decodeIfPresent(Int.self, forKey: .id)
name = try container.decodeIfPresent(String.self, forKey: .name)
vendorName = try container.decodeIfPresent(String.self, forKey: .vendorName)
Description = try container.decodeIfPresent(String.self, forKey: .Description)
appUrl = try container.decodeIfPresent(String.self, forKey: .appUrl)
screenshotUrl = try container.decodeIfPresent(String.self, forKey: .screenshotUrl)
created = try container.decodeIfPresent(Date.self, forKey: .created)
createdBy = try container.decodeIfPresent(String.self, forKey: .createdBy)
lastModified = try container.decodeIfPresent(Date.self, forKey: .lastModified)
lastModifiedBy = try container.decodeIfPresent(String.self, forKey: .lastModifiedBy)
isLocked = try container.decodeIfPresent(Bool.self, forKey: .isLocked)
ownerId = try container.decodeIfPresent(String.self, forKey: .ownerId)
slug = try container.decodeIfPresent(String.self, forKey: .slug)
details = try container.decodeIfPresent(String.self, forKey: .details)
detailsHtml = try container.decodeIfPresent(String.self, forKey: .detailsHtml)
lastStatusUpdate = try container.decodeIfPresent(Date.self, forKey: .lastStatusUpdate)
organizationId = try container.decodeIfPresent(Int.self, forKey: .organizationId)
commentsPostId = try container.decodeIfPresent(Int.self, forKey: .commentsPostId)
viewCount = try container.decodeIfPresent(Int.self, forKey: .viewCount)
favCount = try container.decodeIfPresent(Int.self, forKey: .favCount)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if id != nil { try container.encode(id, forKey: .id) }
if name != nil { try container.encode(name, forKey: .name) }
if vendorName != nil { try container.encode(vendorName, forKey: .vendorName) }
if Description != nil { try container.encode(Description, forKey: .Description) }
if appUrl != nil { try container.encode(appUrl, forKey: .appUrl) }
if screenshotUrl != nil { try container.encode(screenshotUrl, forKey: .screenshotUrl) }
if created != nil { try container.encode(created, forKey: .created) }
if createdBy != nil { try container.encode(createdBy, forKey: .createdBy) }
if lastModified != nil { try container.encode(lastModified, forKey: .lastModified) }
if lastModifiedBy != nil { try container.encode(lastModifiedBy, forKey: .lastModifiedBy) }
if isLocked != nil { try container.encode(isLocked, forKey: .isLocked) }
if ownerId != nil { try container.encode(ownerId, forKey: .ownerId) }
if slug != nil { try container.encode(slug, forKey: .slug) }
if details != nil { try container.encode(details, forKey: .details) }
if detailsHtml != nil { try container.encode(detailsHtml, forKey: .detailsHtml) }
if lastStatusUpdate != nil { try container.encode(lastStatusUpdate, forKey: .lastStatusUpdate) }
if organizationId != nil { try container.encode(organizationId, forKey: .organizationId) }
if commentsPostId != nil { try container.encode(commentsPostId, forKey: .commentsPostId) }
if viewCount != nil { try container.encode(viewCount, forKey: .viewCount) }
if favCount != nil { try container.encode(favCount, forKey: .favCount) }
}
}
public class TechnologyStackBase : Codable
{
public var id:Int
public var name:String
public var vendorName:String
public var Description:String
public var appUrl:String
public var screenshotUrl:String
public var created:Date
public var createdBy:String
public var lastModified:Date
public var lastModifiedBy:String
public var isLocked:Bool
public var ownerId:String
public var slug:String
// @StringLength(Int32.max)
public var details:String
// @StringLength(Int32.max)
public var detailsHtml:String
public var lastStatusUpdate:Date?
public var organizationId:Int?
public var commentsPostId:Int?
public var viewCount:Int
public var favCount:Int
required public init(){}
}
public class Technology : TechnologyBase
{
public var id:Int
public var name:String
public var vendorName:String
public var vendorUrl:String
public var productUrl:String
public var logoUrl:String
public var Description:String
public var created:Date
public var createdBy:String
public var lastModified:Date
public var lastModifiedBy:String
public var ownerId:String
public var slug:String
public var logoApproved:Bool
public var isLocked:Bool
public var tier:TechnologyTier
public var lastStatusUpdate:Date?
public var organizationId:Int?
public var commentsPostId:Int?
public var viewCount:Int
public var favCount:Int
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case id
case name
case vendorName
case vendorUrl
case productUrl
case logoUrl
case Description
case created
case createdBy
case lastModified
case lastModifiedBy
case ownerId
case slug
case logoApproved
case isLocked
case tier
case lastStatusUpdate
case organizationId
case commentsPostId
case viewCount
case favCount
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
id = try container.decodeIfPresent(Int.self, forKey: .id)
name = try container.decodeIfPresent(String.self, forKey: .name)
vendorName = try container.decodeIfPresent(String.self, forKey: .vendorName)
vendorUrl = try container.decodeIfPresent(String.self, forKey: .vendorUrl)
productUrl = try container.decodeIfPresent(String.self, forKey: .productUrl)
logoUrl = try container.decodeIfPresent(String.self, forKey: .logoUrl)
Description = try container.decodeIfPresent(String.self, forKey: .Description)
created = try container.decodeIfPresent(Date.self, forKey: .created)
createdBy = try container.decodeIfPresent(String.self, forKey: .createdBy)
lastModified = try container.decodeIfPresent(Date.self, forKey: .lastModified)
lastModifiedBy = try container.decodeIfPresent(String.self, forKey: .lastModifiedBy)
ownerId = try container.decodeIfPresent(String.self, forKey: .ownerId)
slug = try container.decodeIfPresent(String.self, forKey: .slug)
logoApproved = try container.decodeIfPresent(Bool.self, forKey: .logoApproved)
isLocked = try container.decodeIfPresent(Bool.self, forKey: .isLocked)
tier = try container.decodeIfPresent(TechnologyTier.self, forKey: .tier)
lastStatusUpdate = try container.decodeIfPresent(Date.self, forKey: .lastStatusUpdate)
organizationId = try container.decodeIfPresent(Int.self, forKey: .organizationId)
commentsPostId = try container.decodeIfPresent(Int.self, forKey: .commentsPostId)
viewCount = try container.decodeIfPresent(Int.self, forKey: .viewCount)
favCount = try container.decodeIfPresent(Int.self, forKey: .favCount)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if id != nil { try container.encode(id, forKey: .id) }
if name != nil { try container.encode(name, forKey: .name) }
if vendorName != nil { try container.encode(vendorName, forKey: .vendorName) }
if vendorUrl != nil { try container.encode(vendorUrl, forKey: .vendorUrl) }
if productUrl != nil { try container.encode(productUrl, forKey: .productUrl) }
if logoUrl != nil { try container.encode(logoUrl, forKey: .logoUrl) }
if Description != nil { try container.encode(Description, forKey: .Description) }
if created != nil { try container.encode(created, forKey: .created) }
if createdBy != nil { try container.encode(createdBy, forKey: .createdBy) }
if lastModified != nil { try container.encode(lastModified, forKey: .lastModified) }
if lastModifiedBy != nil { try container.encode(lastModifiedBy, forKey: .lastModifiedBy) }
if ownerId != nil { try container.encode(ownerId, forKey: .ownerId) }
if slug != nil { try container.encode(slug, forKey: .slug) }
if logoApproved != nil { try container.encode(logoApproved, forKey: .logoApproved) }
if isLocked != nil { try container.encode(isLocked, forKey: .isLocked) }
if tier != nil { try container.encode(tier, forKey: .tier) }
if lastStatusUpdate != nil { try container.encode(lastStatusUpdate, forKey: .lastStatusUpdate) }
if organizationId != nil { try container.encode(organizationId, forKey: .organizationId) }
if commentsPostId != nil { try container.encode(commentsPostId, forKey: .commentsPostId) }
if viewCount != nil { try container.encode(viewCount, forKey: .viewCount) }
if favCount != nil { try container.encode(favCount, forKey: .favCount) }
}
}
public class TechnologyBase : Codable
{
public var id:Int
public var name:String
public var vendorName:String
public var vendorUrl:String
public var productUrl:String
public var logoUrl:String
public var Description:String
public var created:Date
public var createdBy:String
public var lastModified:Date
public var lastModifiedBy:String
public var ownerId:String
public var slug:String
public var logoApproved:Bool
public var isLocked:Bool
public var tier:TechnologyTier
public var lastStatusUpdate:Date?
public var organizationId:Int?
public var commentsPostId:Int?
public var viewCount:Int
public var favCount:Int
required public init(){}
}
public enum TechnologyTier : String, Codable
{
case ProgrammingLanguage
case Client
case Http
case Server
case Data
case SoftwareInfrastructure
case OperatingSystem
case HardwareInfrastructure
case ThirdPartyServices
}
public class UserActivity : Codable
{
public var id:Int
public var userName:String
public var karma:Int
public var technologyCount:Int
public var techStacksCount:Int
public var postsCount:Int
public var postUpVotes:Int
public var postDownVotes:Int
public var commentUpVotes:Int
public var commentDownVotes:Int
public var postCommentsCount:Int
public var pinnedCommentCount:Int
public var postReportCount:Int
public var postCommentReportCount:Int
public var created:Date
public var modified:Date
required public init(){}
}
public class OrganizationMember : Codable
{
public var id:Int
public var organizationId:Int
public var userId:Int
public var userName:String
public var isOwner:Bool
public var isModerator:Bool
public var denyAll:Bool
public var denyPosts:Bool
public var denyComments:Bool
public var notes:String
required public init(){}
}
public class OrganizationMemberInvite : Codable
{
public var id:Int
public var organizationId:Int
public var userId:Int
public var userName:String
public var dismissed:Date?
required public init(){}
}
public class OrganizationSubscription : Codable
{
public var id:Int
public var organizationId:Int
public var userId:Int
public var userName:String
public var postTypes:[String] = []
public var frequencyDays:Int?
public var lastSyncedId:Int?
public var lastSynced:Date?
public var created:Date
required public init(){}
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json
To embed the response in a jsonp callback, append ?callback=myCallback
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /my-session HTTP/1.1
Host: techstacks.io
Accept: application/json
Content-Type: application/json
Content-Length: length
{}
HTTP/1.1 200 OK Content-Type: application/json Content-Length: length {"created":"0001-01-01T00:00:00.0000000","id":"String","referrerUrl":"String","userAuthId":"String","userAuthName":"String","userName":"String","displayName":"String","firstName":"String","lastName":"String","email":"String","createdAt":"0001-01-01T00:00:00.0000000","lastModified":"0001-01-01T00:00:00.0000000","roles":["String"],"permissions":["String"],"isAuthenticated":false,"authProvider":"String","profileUrl":"String","githubProfileUrl":"String","twitterProfileUrl":"String","accessToken":"String","avatarUrl":"String","techStacks":[{"id":0,"name":"String","vendorName":"String","description":"String","appUrl":"String","screenshotUrl":"String","created":"0001-01-01T00:00:00.0000000","createdBy":"String","lastModified":"0001-01-01T00:00:00.0000000","lastModifiedBy":"String","isLocked":false,"ownerId":"String","slug":"String","details":"String","detailsHtml":"String","lastStatusUpdate":"0001-01-01T00:00:00.0000000","organizationId":0,"commentsPostId":0,"viewCount":0,"favCount":0}],"favoriteTechStacks":[{"id":0,"name":"String","vendorName":"String","description":"String","appUrl":"String","screenshotUrl":"String","created":"0001-01-01T00:00:00.0000000","createdBy":"String","lastModified":"0001-01-01T00:00:00.0000000","lastModifiedBy":"String","isLocked":false,"ownerId":"String","slug":"String","details":"String","detailsHtml":"String","lastStatusUpdate":"0001-01-01T00:00:00.0000000","organizationId":0,"commentsPostId":0,"viewCount":0,"favCount":0}],"favoriteTechnologies":[{"id":0,"name":"String","vendorName":"String","vendorUrl":"String","productUrl":"String","logoUrl":"String","description":"String","created":"0001-01-01T00:00:00.0000000","createdBy":"String","lastModified":"0001-01-01T00:00:00.0000000","lastModifiedBy":"String","ownerId":"String","slug":"String","logoApproved":false,"isLocked":false,"tier":"ProgrammingLanguage","lastStatusUpdate":"0001-01-01T00:00:00.0000000","organizationId":0,"commentsPostId":0,"viewCount":0,"favCount":0}],"userActivity":{"id":0,"userName":"String","karma":0,"technologyCount":0,"techStacksCount":0,"postsCount":0,"postUpVotes":0,"postDownVotes":0,"commentUpVotes":0,"commentDownVotes":0,"postCommentsCount":0,"pinnedCommentCount":0,"postReportCount":0,"postCommentReportCount":0,"created":"0001-01-01T00:00:00.0000000","modified":"0001-01-01T00:00:00.0000000"},"members":[{"id":0,"organizationId":0,"userId":0,"userName":"String","isOwner":false,"isModerator":false,"denyAll":false,"denyPosts":false,"denyComments":false,"notes":"String"}],"memberInvites":[{"id":0,"organizationId":0,"userId":0,"userName":"String","dismissed":"0001-01-01T00:00:00.0000000"}],"subscriptions":[{"id":0,"organizationId":0,"userId":0,"userName":"String","postTypes":["String"],"frequencyDays":0,"lastSyncedId":0,"lastSynced":"0001-01-01T00:00:00.0000000","created":"0001-01-01T00:00:00.0000000"}],"responseStatus":{"errorCode":"String","message":"String","stackTrace":"String","errors":[{"errorCode":"String","fieldName":"String","message":"String","meta":{"String":"String"}}],"meta":{"String":"String"}}}