TechStacks!

<back to all web services

Overview

Site
The following routes are available for this service:
All Verbs/overview
"use strict";
export class UserInfo {
    /** @param {{userName?:string,avatarUrl?:string,stacksCount?:number}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    userName;
    /** @type {string} */
    avatarUrl;
    /** @type {number} */
    stacksCount;
}
/** @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 TechnologyInfo {
    /** @param {{tier?:TechnologyTier,slug?:string,name?:string,logoUrl?:string,stacksCount?:number}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {TechnologyTier} */
    tier;
    /** @type {string} */
    slug;
    /** @type {string} */
    name;
    /** @type {string} */
    logoUrl;
    /** @type {number} */
    stacksCount;
}
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 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 TechnologyInStack extends TechnologyBase {
    /** @param {{technologyId?:number,technologyStackId?:number,justification?:string,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,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) }
    /** @type {number} */
    technologyId;
    /** @type {number} */
    technologyStackId;
    /** @type {string} */
    justification;
    /** @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 TechStackDetails extends TechnologyStackBase {
    /** @param {{technologyChoices?:TechnologyInStack[],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,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) }
    /** @type {TechnologyInStack[]} */
    technologyChoices;
    /** @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,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) }
    /** @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 LabelInfo {
    /** @param {{slug?:string,color?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    slug;
    /** @type {string} */
    color;
}
export class CategoryInfo {
    /** @param {{id?:number,name?:string,slug?:string}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    id;
    /** @type {string} */
    name;
    /** @type {string} */
    slug;
}
export class OrganizationInfo {
    /** @param {{id?:number,name?:string,slug?:string,refId?:number,refSource?:string,upVotes?:number,downVotes?:number,membersCount?:number,rank?:number,disableInvites?:boolean,lang?:string,postTypes?:string[],moderatorPostTypes?:string[],locked?:string,labels?:LabelInfo[],categories?:CategoryInfo[]}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {number} */
    id;
    /** @type {string} */
    name;
    /** @type {string} */
    slug;
    /** @type {?number} */
    refId;
    /** @type {string} */
    refSource;
    /** @type {?number} */
    upVotes;
    /** @type {?number} */
    downVotes;
    /** @type {number} */
    membersCount;
    /** @type {number} */
    rank;
    /** @type {?boolean} */
    disableInvites;
    /** @type {string} */
    lang;
    /** @type {string[]} */
    postTypes;
    /** @type {string[]} */
    moderatorPostTypes;
    /** @type {?string} */
    locked;
    /** @type {LabelInfo[]} */
    labels;
    /** @type {CategoryInfo[]} */
    categories;
}
export class OverviewResponse {
    /** @param {{created?:string,topUsers?:UserInfo[],topTechnologies?:TechnologyInfo[],latestTechStacks?:TechStackDetails[],popularTechStacks?:TechnologyStack[],allOrganizations?:OrganizationInfo[],topTechnologiesByTier?:{ [index: string]: TechnologyInfo[]; },responseStatus?:ResponseStatus}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {string} */
    created;
    /** @type {UserInfo[]} */
    topUsers;
    /** @type {TechnologyInfo[]} */
    topTechnologies;
    /** @type {TechStackDetails[]} */
    latestTechStacks;
    /** @type {TechnologyStack[]} */
    popularTechStacks;
    /** @type {OrganizationInfo[]} */
    allOrganizations;
    /** @type {{ [index: string]: TechnologyInfo[]; }} */
    topTechnologiesByTier;
    /** @type {ResponseStatus} */
    responseStatus;
}
export class Overview {
    /** @param {{reload?:boolean}} [init] */
    constructor(init) { Object.assign(this, init) }
    /** @type {boolean} */
    reload;
}

JavaScript Overview 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 /overview HTTP/1.1 
Host: techstacks.io 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

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

{
	created: 0001-01-01,
	topUsers: 
	[
		{
			userName: String,
			avatarUrl: String,
			stacksCount: 0
		}
	],
	topTechnologies: 
	[
		{
			tier: ProgrammingLanguage,
			slug: String,
			name: String,
			logoUrl: String,
			stacksCount: 0
		}
	],
	latestTechStacks: 
	[
		{
			technologyChoices: 
			[
				{
					technologyId: 0,
					technologyStackId: 0,
					justification: String,
					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
				}
			],
			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
		}
	],
	popularTechStacks: 
	[
		{
			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
		}
	],
	allOrganizations: 
	[
		{
			id: 0,
			name: String,
			slug: String,
			refId: 0,
			refSource: String,
			upVotes: 0,
			downVotes: 0,
			membersCount: 0,
			rank: 0,
			disableInvites: False,
			lang: String,
			postTypes: 
			[
				String
			],
			moderatorPostTypes: 
			[
				String
			],
			locked: 0001-01-01,
			labels: 
			[
				{
					slug: String,
					color: String
				}
			],
			categories: 
			[
				{
					id: 0,
					name: String,
					slug: String
				}
			]
		}
	],
	topTechnologiesByTier: 
	{
		String: 
		[
			{
				tier: ProgrammingLanguage,
				slug: String,
				name: String,
				logoUrl: String,
				stacksCount: 0
			}
		]
	},
	responseStatus: 
	{
		errorCode: String,
		message: String,
		stackTrace: String,
		errors: 
		[
			{
				errorCode: String,
				fieldName: String,
				message: String,
				meta: 
				{
					String: String
				}
			}
		],
		meta: 
		{
			String: String
		}
	}
}