All Verbs | /my-session |
---|
"use strict";
export class TechnologyStackBase {
/** @param {{id?:number,name?:string,vendorName?:string,description?:string,appUrl?:string,screenshotUrl?:string,created?:string,createdBy?:string,lastModified?:string,lastModifiedBy?:string,isLocked?:boolean,ownerId?:string,slug?:string,details?:string,detailsHtml?:string,lastStatusUpdate?:string,organizationId?:number,commentsPostId?:number,viewCount?:number,favCount?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
id;
/** @type {string} */
name;
/** @type {string} */
vendorName;
/** @type {string} */
description;
/** @type {string} */
appUrl;
/** @type {string} */
screenshotUrl;
/** @type {string} */
created;
/** @type {string} */
createdBy;
/** @type {string} */
lastModified;
/** @type {string} */
lastModifiedBy;
/** @type {boolean} */
isLocked;
/** @type {string} */
ownerId;
/** @type {string} */
slug;
/** @type {string} */
details;
/** @type {string} */
detailsHtml;
/** @type {?string} */
lastStatusUpdate;
/** @type {?number} */
organizationId;
/** @type {?number} */
commentsPostId;
/** @type {number} */
viewCount;
/** @type {number} */
favCount;
}
export class TechnologyStack extends TechnologyStackBase {
/** @param {{id?:number,name?:string,vendorName?:string,description?:string,appUrl?:string,screenshotUrl?:string,created?:string,createdBy?:string,lastModified?:string,lastModifiedBy?:string,isLocked?:boolean,ownerId?:string,slug?:string,details?:string,detailsHtml?:string,lastStatusUpdate?:string,organizationId?:number,commentsPostId?:number,viewCount?:number,favCount?:number}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
}
/** @typedef {'ProgrammingLanguage'|'Client'|'Http'|'Server'|'Data'|'SoftwareInfrastructure'|'OperatingSystem'|'HardwareInfrastructure'|'ThirdPartyServices'} */
export var TechnologyTier;
(function (TechnologyTier) {
TechnologyTier["ProgrammingLanguage"] = "ProgrammingLanguage"
TechnologyTier["Client"] = "Client"
TechnologyTier["Http"] = "Http"
TechnologyTier["Server"] = "Server"
TechnologyTier["Data"] = "Data"
TechnologyTier["SoftwareInfrastructure"] = "SoftwareInfrastructure"
TechnologyTier["OperatingSystem"] = "OperatingSystem"
TechnologyTier["HardwareInfrastructure"] = "HardwareInfrastructure"
TechnologyTier["ThirdPartyServices"] = "ThirdPartyServices"
})(TechnologyTier || (TechnologyTier = {}));
export class TechnologyBase {
/** @param {{id?:number,name?:string,vendorName?:string,vendorUrl?:string,productUrl?:string,logoUrl?:string,description?:string,created?:string,createdBy?:string,lastModified?:string,lastModifiedBy?:string,ownerId?:string,slug?:string,logoApproved?:boolean,isLocked?:boolean,tier?:TechnologyTier,lastStatusUpdate?:string,organizationId?:number,commentsPostId?:number,viewCount?:number,favCount?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
id;
/** @type {string} */
name;
/** @type {string} */
vendorName;
/** @type {string} */
vendorUrl;
/** @type {string} */
productUrl;
/** @type {string} */
logoUrl;
/** @type {string} */
description;
/** @type {string} */
created;
/** @type {string} */
createdBy;
/** @type {string} */
lastModified;
/** @type {string} */
lastModifiedBy;
/** @type {string} */
ownerId;
/** @type {string} */
slug;
/** @type {boolean} */
logoApproved;
/** @type {boolean} */
isLocked;
/** @type {TechnologyTier} */
tier;
/** @type {?string} */
lastStatusUpdate;
/** @type {?number} */
organizationId;
/** @type {?number} */
commentsPostId;
/** @type {number} */
viewCount;
/** @type {number} */
favCount;
}
export class Technology extends TechnologyBase {
/** @param {{id?:number,name?:string,vendorName?:string,vendorUrl?:string,productUrl?:string,logoUrl?:string,description?:string,created?:string,createdBy?:string,lastModified?:string,lastModifiedBy?:string,ownerId?:string,slug?:string,logoApproved?:boolean,isLocked?:boolean,tier?:TechnologyTier,lastStatusUpdate?:string,organizationId?:number,commentsPostId?:number,viewCount?:number,favCount?:number}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
}
export class UserActivity {
/** @param {{id?:number,userName?:string,karma?:number,technologyCount?:number,techStacksCount?:number,postsCount?:number,postUpVotes?:number,postDownVotes?:number,commentUpVotes?:number,commentDownVotes?:number,postCommentsCount?:number,pinnedCommentCount?:number,postReportCount?:number,postCommentReportCount?:number,created?:string,modified?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
id;
/** @type {string} */
userName;
/** @type {number} */
karma;
/** @type {number} */
technologyCount;
/** @type {number} */
techStacksCount;
/** @type {number} */
postsCount;
/** @type {number} */
postUpVotes;
/** @type {number} */
postDownVotes;
/** @type {number} */
commentUpVotes;
/** @type {number} */
commentDownVotes;
/** @type {number} */
postCommentsCount;
/** @type {number} */
pinnedCommentCount;
/** @type {number} */
postReportCount;
/** @type {number} */
postCommentReportCount;
/** @type {string} */
created;
/** @type {string} */
modified;
}
export class OrganizationMember {
/** @param {{id?:number,organizationId?:number,userId?:number,userName?:string,isOwner?:boolean,isModerator?:boolean,denyAll?:boolean,denyPosts?:boolean,denyComments?:boolean,notes?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
id;
/** @type {number} */
organizationId;
/** @type {number} */
userId;
/** @type {string} */
userName;
/** @type {boolean} */
isOwner;
/** @type {boolean} */
isModerator;
/** @type {boolean} */
denyAll;
/** @type {boolean} */
denyPosts;
/** @type {boolean} */
denyComments;
/** @type {string} */
notes;
}
export class OrganizationMemberInvite {
/** @param {{id?:number,organizationId?:number,userId?:number,userName?:string,dismissed?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
id;
/** @type {number} */
organizationId;
/** @type {number} */
userId;
/** @type {string} */
userName;
/** @type {?string} */
dismissed;
}
export class OrganizationSubscription {
/** @param {{id?:number,organizationId?:number,userId?:number,userName?:string,postTypes?:string[],frequencyDays?:number,lastSyncedId?:number,lastSynced?:string,created?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
id;
/** @type {number} */
organizationId;
/** @type {number} */
userId;
/** @type {string} */
userName;
/** @type {string[]} */
postTypes;
/** @type {?number} */
frequencyDays;
/** @type {?number} */
lastSyncedId;
/** @type {?string} */
lastSynced;
/** @type {string} */
created;
}
export class SessionInfoResponse {
/** @param {{created?:string,id?:string,referrerUrl?:string,userAuthId?:string,userAuthName?:string,userName?:string,displayName?:string,firstName?:string,lastName?:string,email?:string,createdAt?:string,lastModified?:string,roles?:string[],permissions?:string[],isAuthenticated?:boolean,authProvider?:string,profileUrl?:string,githubProfileUrl?:string,twitterProfileUrl?:string,accessToken?:string,avatarUrl?:string,techStacks?:TechnologyStack[],favoriteTechStacks?:TechnologyStack[],favoriteTechnologies?:Technology[],userActivity?:UserActivity,members?:OrganizationMember[],memberInvites?:OrganizationMemberInvite[],subscriptions?:OrganizationSubscription[],responseStatus?:ResponseStatus}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
created;
/** @type {string} */
id;
/** @type {string} */
referrerUrl;
/** @type {string} */
userAuthId;
/** @type {string} */
userAuthName;
/** @type {string} */
userName;
/** @type {string} */
displayName;
/** @type {string} */
firstName;
/** @type {string} */
lastName;
/** @type {string} */
email;
/** @type {string} */
createdAt;
/** @type {string} */
lastModified;
/** @type {string[]} */
roles;
/** @type {string[]} */
permissions;
/** @type {boolean} */
isAuthenticated;
/** @type {string} */
authProvider;
/** @type {string} */
profileUrl;
/** @type {string} */
githubProfileUrl;
/** @type {string} */
twitterProfileUrl;
/** @type {string} */
accessToken;
/** @type {string} */
avatarUrl;
/** @type {TechnologyStack[]} */
techStacks;
/** @type {TechnologyStack[]} */
favoriteTechStacks;
/** @type {Technology[]} */
favoriteTechnologies;
/** @type {UserActivity} */
userActivity;
/** @type {OrganizationMember[]} */
members;
/** @type {OrganizationMemberInvite[]} */
memberInvites;
/** @type {OrganizationSubscription[]} */
subscriptions;
/** @type {ResponseStatus} */
responseStatus;
}
export class SessionInfo {
constructor(init) { Object.assign(this, 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 /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 } } }