bgg-sdk
Version:
Node SDK for querying the Board Game Geek (BGG) XML2 API
631 lines (623 loc) • 19.5 kB
text/typescript
type boardgame = "boardgame";
type boardgameaccessory = "boardgameaccessory";
type boardgamecompany = "boardgamecompany";
type boardgamecompilation = "boardgamecompilation";
type boardgameexpansion = "boardgameexpansion";
type boardgamefamily = "boardgamefamily";
type boardgameimplementation = "boardgameimplementation";
type boardgameintegration = "boardgameintegration";
type boardgameperson = "boardgameperson";
type family = "family";
type rpg = "rpg";
type rpgcompany = "rpgcompany";
type rpgissue = "rpgissue";
type rpgitem = "rpgitem";
type rpgperiodical = "rpgperiodical";
type rpgperson = "rpgperson";
type thing = "thing";
type videogame = "videogame";
type videogamecompany = "videogamecompany";
/** YYYY-MM-DD */
type Date = string;
/** YYYY-MM-DD HH:MM:SS */
type DateTime = string;
type contentTypes_Date = Date;
type contentTypes_DateTime = DateTime;
type contentTypes_boardgame = boardgame;
type contentTypes_boardgameaccessory = boardgameaccessory;
type contentTypes_boardgamecompany = boardgamecompany;
type contentTypes_boardgamecompilation = boardgamecompilation;
type contentTypes_boardgameexpansion = boardgameexpansion;
type contentTypes_boardgamefamily = boardgamefamily;
type contentTypes_boardgameimplementation = boardgameimplementation;
type contentTypes_boardgameintegration = boardgameintegration;
type contentTypes_boardgameperson = boardgameperson;
type contentTypes_family = family;
type contentTypes_rpg = rpg;
type contentTypes_rpgcompany = rpgcompany;
type contentTypes_rpgissue = rpgissue;
type contentTypes_rpgitem = rpgitem;
type contentTypes_rpgperiodical = rpgperiodical;
type contentTypes_rpgperson = rpgperson;
type contentTypes_thing = thing;
type contentTypes_videogame = videogame;
type contentTypes_videogamecompany = videogamecompany;
declare namespace contentTypes {
export type { contentTypes_Date as Date, contentTypes_DateTime as DateTime, contentTypes_boardgame as boardgame, contentTypes_boardgameaccessory as boardgameaccessory, contentTypes_boardgamecompany as boardgamecompany, contentTypes_boardgamecompilation as boardgamecompilation, contentTypes_boardgameexpansion as boardgameexpansion, contentTypes_boardgamefamily as boardgamefamily, contentTypes_boardgameimplementation as boardgameimplementation, contentTypes_boardgameintegration as boardgameintegration, contentTypes_boardgameperson as boardgameperson, contentTypes_family as family, contentTypes_rpg as rpg, contentTypes_rpgcompany as rpgcompany, contentTypes_rpgissue as rpgissue, contentTypes_rpgitem as rpgitem, contentTypes_rpgperiodical as rpgperiodical, contentTypes_rpgperson as rpgperson, contentTypes_thing as thing, contentTypes_videogame as videogame, contentTypes_videogamecompany as videogamecompany };
}
type PayloadPlaysId = {
attributes: {
termsofuse: string;
total: string;
page: string;
};
plays: Array<{
id: string;
date: string;
quantity: string;
length: string;
incomplete: string;
nowInStats: string;
location: string;
item: {
name: string;
objectType: string;
objectId: string;
subtypes: Array<string>;
};
players?: Array<{
username: string;
userid: string;
name: string;
startPosition: string;
color: string;
score: string;
new: string;
rating: string;
win: string;
}>;
}>;
};
type PayloadPlaysUsername = {
attributes: {
termsofuse: string;
username: string;
userid: string;
total: string;
page: string;
};
plays: Array<{
id: string;
date: string;
quantity: string;
length: string;
incomplete: string;
nowinstats: string;
location: string;
item: {
name: string;
objecttype: string;
objectid: string;
subtypes: Array<string>;
};
}>;
} | null;
type PayloadCollection = {
attributes: {
termsOfUse: string;
totalItems: string;
pubDate: string;
};
items: Array<{
id: string;
collId: string;
type: string;
name: string;
yearPublished?: string;
image?: string;
thumbnail?: string;
status: {
own: string;
prevOwned: string;
forTrade: string;
want: string;
wantToPlay: string;
wantToBuy: string;
wishList: string;
preOrdered: string;
lastModified: string;
};
numPlays: string;
}>;
} | null;
type PayloadFamily = {
attributes: {
termsOfUse: string;
};
items: Array<{
id: string;
type: string;
thumbnail: string;
image: string;
description: string;
names: Array<{
type: string;
sortIndex: string;
value: string;
}>;
links: Array<{
type: string;
id: string;
value: string;
inbound: boolean;
}>;
}>;
};
type PayloadForum = {
attributes: {
id: string;
title: string;
numThreads: string;
numPosts: string;
lastPostDate: string;
noPosting: string;
termsOfUse: string;
};
threads: Array<{
id: string;
subject: string;
author: string;
numArticles: string;
postDate: string;
lastPostDate: string;
}>;
} | null;
type PayloadForumList = {
attributes: {
type: thing | family;
termsOfUse: string;
id: string;
};
forums: Array<{
id: string;
groupId: string;
title: string;
noPosting: string;
description: string;
numThreads: string;
numPosts: string;
lastPostDate: string;
}>;
};
type PayloadGuildSuccess = {
attributes: {
termsOfUse: string;
id: string;
name: string;
created: string;
};
guild: {
id: string;
name: string;
created: string;
category: string;
website?: string;
manager: string;
description: string;
location: {
addr1?: string;
addr2?: string;
city?: string;
stateorprovince?: string;
postalcode?: string;
country?: string;
};
members?: {
count: string;
page: string;
member: Array<{
name: string;
date: string;
}>;
};
};
};
type PayloadGuildError = {
attributes: {
termsOfUse: string;
};
guild: null;
};
type PayloadGuild = PayloadGuildSuccess | PayloadGuildError;
type PayloadHot = {
attributes: {
termsofuse: string;
};
items: Array<{
id: string;
rank: string;
name: string;
yearPublished?: string;
thumbnail: string;
}>;
};
type PayloadSearch = {
attributes: {
termsofuse: string;
};
items: Array<{
id: string;
type: string;
name: string;
yearPublished?: string;
}>;
};
type PayloadThingPollLanguageDependence = {
name: "language_dependence";
title: string;
totalvotes: string;
results: Array<{
level: string;
value: string;
numvotes: string;
}>;
};
type PayloadThingPollSuggestedPlayerAge = {
name: string;
title: string;
totalvotes: string;
results: Array<{
value: string;
numvotes: string;
}>;
};
type PayloadThingPollNumPlayers = {
name: string;
title: string;
totalvotes: string;
results: Array<{
numplayers: string;
result: Array<{
value: string;
numvotes: string;
}>;
}>;
};
type PayloadThingPolls = Array<PayloadThingPollLanguageDependence | PayloadThingPollNumPlayers | PayloadThingPollSuggestedPlayerAge>;
type PayloadThingLinks = {
type: string;
id: string;
value: string;
};
type PayloadThingNames = {
type: string;
sortindex: string;
value: string;
};
type PayloadThing = {
attributes: {
termsofuse: string;
};
items: Array<{
id: string;
type: string;
thumbnail?: string;
image?: string;
names: Array<PayloadThingNames>;
description: string;
yearPublished: string;
minPlayers: string;
maxPlayers: string;
playingTime: string;
minPlayTime: string;
maxPlayTime: string;
minAge: string;
links: Array<PayloadThingLinks>;
polls: PayloadThingPolls;
comments?: {
page: string;
total: string;
comment: Array<{
username: string;
rating: string;
value: string;
}>;
};
marketplace?: {
listings: Array<{
listDate: string;
price: {
value: string;
currency: string;
};
condition: string;
notes: string;
link: {
href: string;
title: string;
};
}>;
};
statistics?: {
page: string;
ratings: {
usersRated: string;
average: string;
bayesAverage: string;
ranks: Array<{
type: string;
id: string;
name: string;
friendlyName: string;
value: string;
bayesAverage: string;
}>;
};
stdDev: string;
median: string;
owned: string;
trading: string;
wanting: string;
wishing: string;
numComments: string;
numWeights: string;
averageWeight: string;
};
versions?: Array<{
type: string;
id: string;
thumbnail?: string;
image?: string;
links: Array<PayloadThingLinks>;
names: Array<PayloadThingNames>;
yearPublished: string;
productCode: string;
width: string;
length: string;
depth: string;
weight: string;
}>;
videos?: {
total: string;
videos: Array<{
id: string;
title: string;
category: string;
language: string;
link: string;
username: string;
userid: string;
postdate: string;
}>;
};
}>;
};
type PayloadThread = {
attributes: {
id: string;
numArticles: string;
link: string;
termsOfUse: string;
};
subject: string;
articles: Array<{
id: string;
username: string;
link: string;
postDate: string;
editDate: string;
numEdits: string;
body: string;
}>;
} | null;
type PayloadUser = {
termsOfUse: string;
user: {
id: string;
name: string;
termsOfUse: string;
firstName: string;
lastName: string;
avatarLink: string;
yearRegistered: string;
lastLogin: string;
stateOrProvince: string;
country: string;
webAddress: string;
xboxAccount: string;
wiiAccount: string;
psnAccount: string;
battlenetAccount: string;
steamAccount: string;
tradeRating: string;
buddies?: {
total: string;
page: string;
buddy: Array<{
id: string;
name: string;
}>;
};
guilds?: {
total: string;
page: string;
guild: Array<{
id: string;
name: string;
}>;
};
hot?: {
domain: string;
item: Array<{
rank: string;
type: string;
id: string;
name: string;
}>;
};
top?: {
domain: string;
item: Array<{
rank: string;
type: string;
id: string;
name: string;
}>;
};
};
} | null;
type payloads_PayloadCollection = PayloadCollection;
type payloads_PayloadFamily = PayloadFamily;
type payloads_PayloadForum = PayloadForum;
type payloads_PayloadForumList = PayloadForumList;
type payloads_PayloadGuild = PayloadGuild;
type payloads_PayloadGuildError = PayloadGuildError;
type payloads_PayloadGuildSuccess = PayloadGuildSuccess;
type payloads_PayloadHot = PayloadHot;
type payloads_PayloadPlaysId = PayloadPlaysId;
type payloads_PayloadPlaysUsername = PayloadPlaysUsername;
type payloads_PayloadSearch = PayloadSearch;
type payloads_PayloadThing = PayloadThing;
type payloads_PayloadThingLinks = PayloadThingLinks;
type payloads_PayloadThingNames = PayloadThingNames;
type payloads_PayloadThingPollLanguageDependence = PayloadThingPollLanguageDependence;
type payloads_PayloadThingPollNumPlayers = PayloadThingPollNumPlayers;
type payloads_PayloadThingPollSuggestedPlayerAge = PayloadThingPollSuggestedPlayerAge;
type payloads_PayloadThingPolls = PayloadThingPolls;
type payloads_PayloadThread = PayloadThread;
type payloads_PayloadUser = PayloadUser;
declare namespace payloads {
export type { payloads_PayloadCollection as PayloadCollection, payloads_PayloadFamily as PayloadFamily, payloads_PayloadForum as PayloadForum, payloads_PayloadForumList as PayloadForumList, payloads_PayloadGuild as PayloadGuild, payloads_PayloadGuildError as PayloadGuildError, payloads_PayloadGuildSuccess as PayloadGuildSuccess, payloads_PayloadHot as PayloadHot, payloads_PayloadPlaysId as PayloadPlaysId, payloads_PayloadPlaysUsername as PayloadPlaysUsername, payloads_PayloadSearch as PayloadSearch, payloads_PayloadThing as PayloadThing, payloads_PayloadThingLinks as PayloadThingLinks, payloads_PayloadThingNames as PayloadThingNames, payloads_PayloadThingPollLanguageDependence as PayloadThingPollLanguageDependence, payloads_PayloadThingPollNumPlayers as PayloadThingPollNumPlayers, payloads_PayloadThingPollSuggestedPlayerAge as PayloadThingPollSuggestedPlayerAge, payloads_PayloadThingPolls as PayloadThingPolls, payloads_PayloadThread as PayloadThread, payloads_PayloadUser as PayloadUser };
}
type ParamsPlayBase = {
minDate?: Date;
maxDate?: Date;
subtype?: boardgame | boardgameexpansion | boardgameaccessory | boardgameintegration | boardgamecompilation | boardgameimplementation | rpg | rpgitem | videogame;
page?: string;
};
type ParamsPlaysId = ParamsPlayBase & {
id: string;
type: thing | family;
};
type ParamsPlaysUsername = ParamsPlayBase & {
username: string;
};
type ParamsCollection = {
username: string;
version?: true;
subtype?: boardgame | boardgameaccessory | boardgameexpansion | rpgissue | rpgitem | videogame;
excludesubtype?: string;
id?: Array<string>;
brief?: true;
stats?: true;
own?: 0 | 1;
rated?: 0 | 1;
played?: 0 | 1;
comment?: 0 | 1;
trade?: 0 | 1;
want?: 0 | 1;
wishlist?: 0 | 1;
wishlistpriority?: 1 | 2 | 3 | 4 | 5;
preordered?: 0 | 1;
wanttoplay?: 0 | 1;
wanttobuy?: 0 | 1;
prevowned?: 0 | 1;
hasparts?: 0 | 1;
wantparts?: 0 | 1;
minrating?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;
rating?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;
minbggrating?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;
bggrating?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;
minplays?: string;
maxplays?: string;
showprivate?: true;
collid?: string;
modifiedsince?: string;
};
type ParamsFamily = {
id: Array<string>;
type?: Array<rpg | rpgperiodical | boardgamefamily>;
};
type ParamsForum = {
id: string;
page?: string;
};
type ParamsForumList = {
id: string;
type: thing | family;
};
type ParamsGuild = {
id: string;
members?: true;
sort?: "username" | "date";
page?: string;
};
type ParamsHot = {
type: Array<boardgame | boardgamecompany | boardgameperson | rpg | rpgcompany | rpgperson | videogame | videogamecompany>;
};
type ParamsSearch = {
query: string;
type?: Array<boardgame | boardgameaccessory | boardgameexpansion | rpgitem | videogame>;
exact?: boolean;
};
type ParamsThing = {
id: Array<string>;
type?: Array<boardgame | boardgameaccessory | boardgameexpansion | rpgissue | rpgitem | videogame>;
versions?: true;
videos?: true;
stats?: true;
marketplace?: true;
comments?: true;
ratingcomments?: true;
page?: string;
pagesize?: string;
};
type ParamsThread = {
id: string;
minArticleId?: string;
minArticleDate?: Date | DateTime;
count?: string;
};
type ParamsUser = {
name: string;
buddies?: true;
guilds?: true;
hot?: true;
top?: true;
domain?: boardgame | rpg | videogame;
page?: string;
};
type params_ParamsCollection = ParamsCollection;
type params_ParamsFamily = ParamsFamily;
type params_ParamsForum = ParamsForum;
type params_ParamsForumList = ParamsForumList;
type params_ParamsGuild = ParamsGuild;
type params_ParamsHot = ParamsHot;
type params_ParamsPlayBase = ParamsPlayBase;
type params_ParamsPlaysId = ParamsPlaysId;
type params_ParamsPlaysUsername = ParamsPlaysUsername;
type params_ParamsSearch = ParamsSearch;
type params_ParamsThing = ParamsThing;
type params_ParamsThread = ParamsThread;
type params_ParamsUser = ParamsUser;
declare namespace params {
export type { params_ParamsCollection as ParamsCollection, params_ParamsFamily as ParamsFamily, params_ParamsForum as ParamsForum, params_ParamsForumList as ParamsForumList, params_ParamsGuild as ParamsGuild, params_ParamsHot as ParamsHot, params_ParamsPlayBase as ParamsPlayBase, params_ParamsPlaysId as ParamsPlaysId, params_ParamsPlaysUsername as ParamsPlaysUsername, params_ParamsSearch as ParamsSearch, params_ParamsThing as ParamsThing, params_ParamsThread as ParamsThread, params_ParamsUser as ParamsUser };
}
/** @namespace */
declare const bgg: {
collection: (params: ParamsCollection) => Promise<PayloadCollection>;
family: (params: ParamsFamily) => Promise<PayloadFamily>;
forum: (params: ParamsForum) => Promise<PayloadForum>;
forumList: (params: ParamsForumList) => Promise<PayloadForumList>;
guild: (params: ParamsGuild) => Promise<PayloadGuild>;
hot: (params?: ParamsHot | undefined) => Promise<PayloadHot>;
search: (args: ParamsSearch) => Promise<PayloadSearch>;
thing: (params: ParamsThing) => Promise<PayloadThing>;
thread: (params: ParamsThread) => Promise<PayloadThread>;
user: (params: ParamsUser) => Promise<PayloadUser>;
plays: {
username: (params: ParamsPlaysUsername) => Promise<PayloadPlaysUsername>;
id: (params: ParamsPlaysId) => Promise<PayloadPlaysId>;
};
};
export { contentTypes as ContentTypes, params as ParamTypes, payloads as PayloadTypes, bgg, bgg as default };