TechStacks!

<back to all web services

SessionInfo

User
Requires Authentication
The following routes are available for this service:
All Verbs/my-session
using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using TechStacks.ServiceModel;
using TechStacks.ServiceModel.Types;

namespace TechStacks.ServiceModel
{
    [ValidateRequest("IsAuthenticated")]
    public partial class SessionInfo
        : IGet
    {
    }

    public partial class SessionInfoResponse
    {
        public SessionInfoResponse()
        {
            Roles = new List<string>{};
            Permissions = new List<string>{};
            TechStacks = new List<TechnologyStack>{};
            FavoriteTechStacks = new List<TechnologyStack>{};
            FavoriteTechnologies = new List<Technology>{};
            Members = new List<OrganizationMember>{};
            MemberInvites = new List<OrganizationMemberInvite>{};
            Subscriptions = new List<OrganizationSubscription>{};
        }

        public virtual DateTime Created { get; set; }
        public virtual string Id { get; set; }
        public virtual string ReferrerUrl { get; set; }
        public virtual string UserAuthId { get; set; }
        public virtual string UserAuthName { get; set; }
        public virtual string UserName { get; set; }
        public virtual string DisplayName { get; set; }
        public virtual string FirstName { get; set; }
        public virtual string LastName { get; set; }
        public virtual string Email { get; set; }
        public virtual DateTime CreatedAt { get; set; }
        public virtual DateTime LastModified { get; set; }
        public virtual List<string> Roles { get; set; }
        public virtual List<string> Permissions { get; set; }
        public virtual bool IsAuthenticated { get; set; }
        public virtual string AuthProvider { get; set; }
        public virtual string ProfileUrl { get; set; }
        public virtual string GithubProfileUrl { get; set; }
        public virtual string TwitterProfileUrl { get; set; }
        public virtual string AccessToken { get; set; }
        public virtual string AvatarUrl { get; set; }
        public virtual List<TechnologyStack> TechStacks { get; set; }
        public virtual List<TechnologyStack> FavoriteTechStacks { get; set; }
        public virtual List<Technology> FavoriteTechnologies { get; set; }
        public virtual UserActivity UserActivity { get; set; }
        public virtual List<OrganizationMember> Members { get; set; }
        public virtual List<OrganizationMemberInvite> MemberInvites { get; set; }
        public virtual List<OrganizationSubscription> Subscriptions { get; set; }
        public virtual ResponseStatus ResponseStatus { get; set; }
    }

}

namespace TechStacks.ServiceModel.Types
{
    public partial class OrganizationMember
    {
        public virtual int Id { get; set; }
        public virtual int OrganizationId { get; set; }
        public virtual int UserId { get; set; }
        public virtual string UserName { get; set; }
        public virtual bool IsOwner { get; set; }
        public virtual bool IsModerator { get; set; }
        public virtual bool DenyAll { get; set; }
        public virtual bool DenyPosts { get; set; }
        public virtual bool DenyComments { get; set; }
        public virtual string Notes { get; set; }
    }

    public partial class OrganizationMemberInvite
    {
        public virtual int Id { get; set; }
        public virtual int OrganizationId { get; set; }
        public virtual int UserId { get; set; }
        public virtual string UserName { get; set; }
        public virtual DateTime? Dismissed { get; set; }
    }

    public partial class OrganizationSubscription
    {
        public OrganizationSubscription()
        {
            PostTypes = new string[]{};
        }

        public virtual long Id { get; set; }
        public virtual int OrganizationId { get; set; }
        public virtual int UserId { get; set; }
        public virtual string UserName { get; set; }
        public virtual string[] PostTypes { get; set; }
        public virtual int? FrequencyDays { get; set; }
        public virtual long? LastSyncedId { get; set; }
        public virtual DateTime? LastSynced { get; set; }
        public virtual DateTime Created { get; set; }
    }

    public partial class Technology
        : TechnologyBase
    {
        public virtual long Id { get; set; }
        public virtual string Name { get; set; }
        public virtual string VendorName { get; set; }
        public virtual string VendorUrl { get; set; }
        public virtual string ProductUrl { get; set; }
        public virtual string LogoUrl { get; set; }
        public virtual string Description { get; set; }
        public virtual DateTime Created { get; set; }
        public virtual string CreatedBy { get; set; }
        public virtual DateTime LastModified { get; set; }
        public virtual string LastModifiedBy { get; set; }
        public virtual string OwnerId { get; set; }
        public virtual string Slug { get; set; }
        public virtual bool LogoApproved { get; set; }
        public virtual bool IsLocked { get; set; }
        public virtual TechnologyTier Tier { get; set; }
        public virtual DateTime? LastStatusUpdate { get; set; }
        public virtual int? OrganizationId { get; set; }
        public virtual long? CommentsPostId { get; set; }
        public virtual int ViewCount { get; set; }
        public virtual int FavCount { get; set; }
    }

    public partial class TechnologyBase
    {
        public virtual long Id { get; set; }
        public virtual string Name { get; set; }
        public virtual string VendorName { get; set; }
        public virtual string VendorUrl { get; set; }
        public virtual string ProductUrl { get; set; }
        public virtual string LogoUrl { get; set; }
        public virtual string Description { get; set; }
        public virtual DateTime Created { get; set; }
        public virtual string CreatedBy { get; set; }
        public virtual DateTime LastModified { get; set; }
        public virtual string LastModifiedBy { get; set; }
        public virtual string OwnerId { get; set; }
        public virtual string Slug { get; set; }
        public virtual bool LogoApproved { get; set; }
        public virtual bool IsLocked { get; set; }
        public virtual TechnologyTier Tier { get; set; }
        public virtual DateTime? LastStatusUpdate { get; set; }
        public virtual int? OrganizationId { get; set; }
        public virtual long? CommentsPostId { get; set; }
        public virtual int ViewCount { get; set; }
        public virtual int FavCount { get; set; }
    }

    public partial class TechnologyStack
        : TechnologyStackBase
    {
        public virtual long Id { get; set; }
        public virtual string Name { get; set; }
        public virtual string VendorName { get; set; }
        public virtual string Description { get; set; }
        public virtual string AppUrl { get; set; }
        public virtual string ScreenshotUrl { get; set; }
        public virtual DateTime Created { get; set; }
        public virtual string CreatedBy { get; set; }
        public virtual DateTime LastModified { get; set; }
        public virtual string LastModifiedBy { get; set; }
        public virtual bool IsLocked { get; set; }
        public virtual string OwnerId { get; set; }
        public virtual string Slug { get; set; }
        [StringLength(int.MaxValue)]
        public virtual string Details { get; set; }

        [StringLength(int.MaxValue)]
        public virtual string DetailsHtml { get; set; }

        public virtual DateTime? LastStatusUpdate { get; set; }
        public virtual int? OrganizationId { get; set; }
        public virtual long? CommentsPostId { get; set; }
        public virtual int ViewCount { get; set; }
        public virtual int FavCount { get; set; }
    }

    public partial class TechnologyStackBase
    {
        public virtual long Id { get; set; }
        public virtual string Name { get; set; }
        public virtual string VendorName { get; set; }
        public virtual string Description { get; set; }
        public virtual string AppUrl { get; set; }
        public virtual string ScreenshotUrl { get; set; }
        public virtual DateTime Created { get; set; }
        public virtual string CreatedBy { get; set; }
        public virtual DateTime LastModified { get; set; }
        public virtual string LastModifiedBy { get; set; }
        public virtual bool IsLocked { get; set; }
        public virtual string OwnerId { get; set; }
        public virtual string Slug { get; set; }
        [StringLength(int.MaxValue)]
        public virtual string Details { get; set; }

        [StringLength(int.MaxValue)]
        public virtual string DetailsHtml { get; set; }

        public virtual DateTime? LastStatusUpdate { get; set; }
        public virtual int? OrganizationId { get; set; }
        public virtual long? CommentsPostId { get; set; }
        public virtual int ViewCount { get; set; }
        public virtual int FavCount { get; set; }
    }

    public enum TechnologyTier
    {
        ProgrammingLanguage,
        Client,
        Http,
        Server,
        Data,
        SoftwareInfrastructure,
        OperatingSystem,
        HardwareInfrastructure,
        ThirdPartyServices,
    }

    public partial class UserActivity
    {
        public virtual int Id { get; set; }
        public virtual string UserName { get; set; }
        public virtual int Karma { get; set; }
        public virtual int TechnologyCount { get; set; }
        public virtual int TechStacksCount { get; set; }
        public virtual int PostsCount { get; set; }
        public virtual int PostUpVotes { get; set; }
        public virtual int PostDownVotes { get; set; }
        public virtual int CommentUpVotes { get; set; }
        public virtual int CommentDownVotes { get; set; }
        public virtual int PostCommentsCount { get; set; }
        public virtual int PinnedCommentCount { get; set; }
        public virtual int PostReportCount { get; set; }
        public virtual int PostCommentReportCount { get; set; }
        public virtual DateTime Created { get; set; }
        public virtual DateTime Modified { get; set; }
    }

}

C# SessionInfo 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 /my-session HTTP/1.1 
Host: techstacks.io 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	created: 0001-01-01,
	id: String,
	referrerUrl: String,
	userAuthId: String,
	userAuthName: String,
	userName: String,
	displayName: String,
	firstName: String,
	lastName: String,
	email: String,
	createdAt: 0001-01-01,
	lastModified: 0001-01-01,
	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-01,
			createdBy: String,
			lastModified: 0001-01-01,
			lastModifiedBy: String,
			isLocked: False,
			ownerId: String,
			slug: String,
			details: String,
			detailsHtml: String,
			lastStatusUpdate: 0001-01-01,
			organizationId: 0,
			commentsPostId: 0,
			viewCount: 0,
			favCount: 0
		}
	],
	favoriteTechStacks: 
	[
		{
			id: 0,
			name: String,
			vendorName: String,
			description: String,
			appUrl: String,
			screenshotUrl: String,
			created: 0001-01-01,
			createdBy: String,
			lastModified: 0001-01-01,
			lastModifiedBy: String,
			isLocked: False,
			ownerId: String,
			slug: String,
			details: String,
			detailsHtml: String,
			lastStatusUpdate: 0001-01-01,
			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-01,
			createdBy: String,
			lastModified: 0001-01-01,
			lastModifiedBy: String,
			ownerId: String,
			slug: String,
			logoApproved: False,
			isLocked: False,
			tier: ProgrammingLanguage,
			lastStatusUpdate: 0001-01-01,
			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-01,
		modified: 0001-01-01
	},
	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-01
		}
	],
	subscriptions: 
	[
		{
			id: 0,
			organizationId: 0,
			userId: 0,
			userName: String,
			postTypes: 
			[
				String
			],
			frequencyDays: 0,
			lastSyncedId: 0,
			lastSynced: 0001-01-01,
			created: 0001-01-01
		}
	],
	responseStatus: 
	{
		errorCode: String,
		message: String,
		stackTrace: String,
		errors: 
		[
			{
				errorCode: String,
				fieldName: String,
				message: String,
				meta: 
				{
					String: String
				}
			}
		],
		meta: 
		{
			String: String
		}
	}
}