dolorealiquam
Version:
TypeScript mappings for the Bungie.net API
239 lines (221 loc) • 7.51 kB
text/typescript
/**
* Bungie.Net API
* These endpoints constitute the functionality exposed by Bungie.net, both for more traditional website functionality and for connectivity to Bungie video games and their related functionality.
*
* OpenAPI spec version: 2.1.5
* Contact: support@bungie.com
*
* NOTE: This class is auto generated by the bungie-api-ts code generator program.
* https://github.com/DestinyItemManager/bugie-api-ts
* Do not edit these files manually.
*/
import {
DestinyMilestoneContent,
DestinyPublicActivityStatus,
DestinyPublicMilestone
} from '../destiny2/interfaces';
import {
GeneralUser
} from '../user/interfaces';
import {
PagedQuery
} from '../common';
import {
PartnershipType
} from '../platform';
export const enum TrendingEntryType {
News = 0,
DestinyItem = 1,
DestinyActivity = 2,
DestinyRitual = 3,
SupportArticle = 4,
Creation = 5,
Stream = 6,
Update = 7,
Link = 8,
ForumTag = 9,
Container = 10,
Release = 11
}
export interface TrendingCategories {
readonly categories: TrendingCategory[];
}
export interface TrendingCategory {
readonly categoryName: string;
readonly entries: SearchResultOfTrendingEntry;
readonly categoryId: string;
}
export interface SearchResultOfTrendingEntry {
readonly results: TrendingEntry[];
readonly totalResults: number;
readonly hasMore: boolean;
readonly query: PagedQuery;
readonly replacementContinuationToken: string;
/**
* If useTotalResults is true, then totalResults represents an accurate count.
*
* If False, it does not, and may be estimated/only the size of the current page.
*
* Either way, you should probably always only trust hasMore.
*
* This is a long-held historical throwback to when we used to do paging with known
* total results. Those queries toasted our database, and we were left to hastily
* alter our endpoints and create backward- compatible shims, of which
* useTotalResults is one.
*/
readonly useTotalResults: boolean;
}
/**
* The list entry view for trending items. Returns just enough to show the item on
* the trending page.
*/
export interface TrendingEntry {
/** The weighted score of this trending item. */
readonly weight: number;
readonly isFeatured: boolean;
/**
* We don't know whether the identifier will be a string, a uint, or a long... so
* we're going to cast it all to a string. But either way, we need any trending
* item created to have a single unique identifier for its type.
*/
readonly identifier: string;
/**
* An enum - unfortunately - dictating all of the possible kinds of trending items
* that you might get in your result set, in case you want to do custom rendering
* or call to get the details of the item.
*/
readonly entityType: TrendingEntryType;
/**
* The localized "display name/article title/'primary localized identifier'" of the
* entity.
*/
readonly displayName: string;
/**
* If the entity has a localized tagline/subtitle/motto/whatever, that is found
* here.
*/
readonly tagline: string;
readonly image: string;
readonly startDate?: string;
readonly endDate?: string;
readonly link: string;
/**
* If this is populated, the entry has a related WebM video to show. I am 100%
* certain I am going to regret putting this directly on TrendingEntry, but it will
* work so yolo
*/
readonly webmVideo: string;
/**
* If this is populated, the entry has a related MP4 video to show. I am 100%
* certain I am going to regret putting this directly on TrendingEntry, but it will
* work so yolo
*/
readonly mp4Video: string;
/**
* If isFeatured, this image will be populated with whatever the featured image is.
* Note that this will likely be a very large image, so don't use it all the time.
*/
readonly featureImage: string;
/**
* If the item is of entityType TrendingEntryType.Container, it may have items -
* also Trending Entries - contained within it. This is the ordered list of those
* to display under the Container's header.
*/
readonly items: TrendingEntry[];
/** If the entry has a date at which it was created, this is that date. */
readonly creationDate?: string;
}
export interface TrendingDetail {
readonly identifier: string;
readonly entityType: TrendingEntryType;
readonly news: TrendingEntryNews;
readonly support: TrendingEntrySupportArticle;
readonly destinyItem: TrendingEntryDestinyItem;
readonly destinyActivity: TrendingEntryDestinyActivity;
readonly destinyRitual: TrendingEntryDestinyRitual;
readonly creation: TrendingEntryCommunityCreation;
readonly stream: TrendingEntryCommunityStream;
}
export interface TrendingEntryNews {
readonly article: ContentItemPublicContract;
}
export interface ContentItemPublicContract {
readonly contentId: string;
readonly cType: string;
readonly cmsPath: string;
readonly creationDate: string;
readonly modifyDate: string;
readonly allowComments: boolean;
readonly hasAgeGate: boolean;
readonly minimumAge: number;
readonly ratingImagePath: string;
readonly author: GeneralUser;
readonly autoEnglishPropertyFallback: boolean;
/**
* Firehose content is really a collection of metadata and "properties", which are
* the potentially-but-not-strictly localizable data that comprises the meat of
* whatever content is being shown.
*
* As Cole Porter would have crooned, "Anything Goes" with Firehose properties.
* They are most often strings, but they can theoretically be anything. They are
* JSON encoded, and could be JSON structures, simple strings, numbers etc... The
* Content Type of the item (cType) will describe the properties, and thus how they
* ought to be deserialized.
*/
readonly properties: { [key: string]: object };
readonly representations: ContentRepresentation[];
readonly tags: string[];
readonly commentSummary: CommentSummary;
}
export interface ContentRepresentation {
readonly name: string;
readonly path: string;
readonly validationString: string;
}
export interface CommentSummary {
readonly topicId: string;
readonly commentCount: number;
}
export interface TrendingEntrySupportArticle {
readonly article: ContentItemPublicContract;
}
export interface TrendingEntryDestinyItem {
readonly itemHash: number;
}
export interface TrendingEntryDestinyActivity {
readonly activityHash: number;
readonly status: DestinyPublicActivityStatus;
}
export interface TrendingEntryDestinyRitual {
readonly image: string;
readonly icon: string;
readonly title: string;
readonly subtitle: string;
readonly dateStart?: string;
readonly dateEnd?: string;
/**
* A destiny event does not necessarily have a related Milestone, but if it does
* the details will be returned here.
*/
readonly milestoneDetails: DestinyPublicMilestone;
/**
* A destiny event will not necessarily have milestone "custom content", but if it
* does the details will be here.
*/
readonly eventContent: DestinyMilestoneContent;
}
export interface TrendingEntryCommunityCreation {
readonly media: string;
readonly title: string;
readonly author: string;
readonly authorMembershipId: string;
readonly postId: string;
readonly body: string;
readonly upvotes: number;
}
export interface TrendingEntryCommunityStream {
readonly image: string;
readonly title: string;
readonly partnershipIdentifier: string;
readonly partnershipType: PartnershipType;
}