| GET | /posts |
|---|
"use strict";
export class QueryBase {
/** @param {{skip?:number,take?:number,orderBy?:string,orderByDesc?:string,include?:string,fields?:string,meta?:{ [index:string]: string; }}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {?number} */
skip;
/** @type {?number} */
take;
/** @type {string} */
orderBy;
/** @type {string} */
orderByDesc;
/** @type {string} */
include;
/** @type {string} */
fields;
/** @type {{ [index:string]: string; }} */
meta;
}
/** @typedef T {any} */
export class QueryDb extends QueryBase {
/** @param {{skip?:number,take?:number,orderBy?:string,orderByDesc?:string,include?:string,fields?:string,meta?:{ [index:string]: string; }}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
}
/** @typedef {'Announcement'|'Post'|'Showcase'|'Question'|'Request'} */
export var PostType;
(function (PostType) {
PostType["Announcement"] = "Announcement"
PostType["Post"] = "Post"
PostType["Showcase"] = "Showcase"
PostType["Question"] = "Question"
PostType["Request"] = "Request"
})(PostType || (PostType = {}));
export class Post {
/** @param {{id?:number,organizationId?:number,userId?:number,type?:PostType,categoryId?:number,title?:string,slug?:string,url?:string,imageUrl?:string,content?:string,contentHtml?:string,pinCommentId?:number,technologyIds?:number[],fromDate?:string,toDate?:string,location?:string,metaType?:string,meta?:string,approved?:boolean,upVotes?:number,downVotes?:number,points?:number,views?:number,favorites?:number,subscribers?:number,replyCount?:number,commentsCount?:number,wordCount?:number,reportCount?:number,linksCount?:number,linkedToCount?:number,score?:number,rank?:number,labels?:string[],refUserIds?:number[],refLinks?:string[],muteUserIds?:number[],lastCommentDate?:string,lastCommentId?:number,lastCommentUserId?:number,deleted?:string,deletedBy?:string,locked?:string,lockedBy?:string,hidden?:string,hiddenBy?:string,status?:string,statusDate?:string,statusBy?:string,archived?:boolean,bumped?:string,created?:string,createdBy?:string,modified?:string,modifiedBy?:string,refId?:number,refSource?:string,refUrn?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
id;
/** @type {number} */
organizationId;
/** @type {number} */
userId;
/** @type {PostType} */
type;
/** @type {number} */
categoryId;
/** @type {string} */
title;
/** @type {string} */
slug;
/** @type {string} */
url;
/** @type {string} */
imageUrl;
/** @type {string} */
content;
/** @type {string} */
contentHtml;
/** @type {?number} */
pinCommentId;
/** @type {number[]} */
technologyIds;
/** @type {?string} */
fromDate;
/** @type {?string} */
toDate;
/** @type {string} */
location;
/** @type {string} */
metaType;
/** @type {string} */
meta;
/** @type {boolean} */
approved;
/** @type {number} */
upVotes;
/** @type {number} */
downVotes;
/** @type {number} */
points;
/** @type {number} */
views;
/** @type {number} */
favorites;
/** @type {number} */
subscribers;
/** @type {number} */
replyCount;
/** @type {number} */
commentsCount;
/** @type {number} */
wordCount;
/** @type {number} */
reportCount;
/** @type {number} */
linksCount;
/** @type {number} */
linkedToCount;
/** @type {number} */
score;
/** @type {number} */
rank;
/** @type {string[]} */
labels;
/** @type {number[]} */
refUserIds;
/** @type {string[]} */
refLinks;
/** @type {number[]} */
muteUserIds;
/** @type {?string} */
lastCommentDate;
/** @type {?number} */
lastCommentId;
/** @type {?number} */
lastCommentUserId;
/** @type {?string} */
deleted;
/** @type {string} */
deletedBy;
/** @type {?string} */
locked;
/** @type {string} */
lockedBy;
/** @type {?string} */
hidden;
/** @type {string} */
hiddenBy;
/** @type {string} */
status;
/** @type {?string} */
statusDate;
/** @type {string} */
statusBy;
/** @type {boolean} */
archived;
/** @type {?string} */
bumped;
/** @type {string} */
created;
/** @type {string} */
createdBy;
/** @type {string} */
modified;
/** @type {string} */
modifiedBy;
/** @type {?number} */
refId;
/** @type {string} */
refSource;
/** @type {string} */
refUrn;
}
export class QueryPosts extends QueryDb {
/** @param {{ids?:number[],organizationId?:number,organizationIds?:number[],types?:string[],anyTechnologyIds?:number[],is?:string[],skip?:number,take?:number,orderBy?:string,orderByDesc?:string,include?:string,fields?:string,meta?:{ [index:string]: string; }}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/** @type {number[]} */
ids;
/** @type {?number} */
organizationId;
/** @type {number[]} */
organizationIds;
/** @type {string[]} */
types;
/** @type {number[]} */
anyTechnologyIds;
/** @type {string[]} */
is;
}
/** @typedef T {any} */
export class QueryResponse {
/** @param {{offset?:number,total?:number,results?:T[],meta?:{ [index:string]: string; },responseStatus?:ResponseStatus}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
offset;
/** @type {number} */
total;
/** @type {T[]} */
results;
/** @type {{ [index:string]: string; }} */
meta;
/** @type {ResponseStatus} */
responseStatus;
}
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.
GET /posts HTTP/1.1 Host: techstacks.io Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
offset: 0,
total: 0,
results:
[
{
id: 0,
organizationId: 0,
userId: 0,
type: Announcement,
categoryId: 0,
title: String,
slug: String,
url: String,
imageUrl: String,
content: String,
contentHtml: String,
pinCommentId: 0,
technologyIds:
[
0
],
fromDate: 0001-01-01,
toDate: 0001-01-01,
location: String,
metaType: String,
meta: String,
approved: False,
upVotes: 0,
downVotes: 0,
points: 0,
views: 0,
favorites: 0,
subscribers: 0,
replyCount: 0,
commentsCount: 0,
wordCount: 0,
reportCount: 0,
linksCount: 0,
linkedToCount: 0,
score: 0,
rank: 0,
labels:
[
String
],
refUserIds:
[
0
],
refLinks:
[
String
],
muteUserIds:
[
0
],
lastCommentDate: 0001-01-01,
lastCommentId: 0,
lastCommentUserId: 0,
deleted: 0001-01-01,
deletedBy: String,
locked: 0001-01-01,
lockedBy: String,
hidden: 0001-01-01,
hiddenBy: String,
status: String,
statusDate: 0001-01-01,
statusBy: String,
archived: False,
bumped: 0001-01-01,
created: 0001-01-01,
createdBy: String,
modified: 0001-01-01,
modifiedBy: String,
refId: 0,
refSource: String,
refUrn: String
}
],
meta:
{
String: String
},
responseStatus:
{
errorCode: String,
message: String,
stackTrace: String,
errors:
[
{
errorCode: String,
fieldName: String,
message: String,
meta:
{
String: String
}
}
],
meta:
{
String: String
}
}
}