UNPKG

bungie-net-core

Version:

An easy way to interact with the Bungie.net API

486 lines (485 loc) 24.1 kB
/** * 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. * * Contact: support@bungie.com * * NOTE: This class is auto generated by the bungie-net-core code generator program * Repository: {@link https://github.com/owens1127/bungie-net-core} * Do not edit these files manually. */ import { DestinyDisplayPropertiesDefinition } from './Common/DestinyDisplayPropertiesDefinition'; import { DestinyItemTooltipNotification } from './DestinyItemTooltipNotification'; import { DestinyColor } from '../Misc/DestinyColor'; import { DestinyItemActionBlockDefinition } from './DestinyItemActionBlockDefinition'; import { DestinyItemCraftingBlockDefinition } from './DestinyItemCraftingBlockDefinition'; import { DestinyItemInventoryBlockDefinition } from './DestinyItemInventoryBlockDefinition'; import { DestinyItemSetBlockDefinition } from './DestinyItemSetBlockDefinition'; import { DestinyItemStatBlockDefinition } from './DestinyItemStatBlockDefinition'; import { DestinyEquippingBlockDefinition } from './DestinyEquippingBlockDefinition'; import { DestinyItemTranslationBlockDefinition } from './DestinyItemTranslationBlockDefinition'; import { DestinyItemPreviewBlockDefinition } from './DestinyItemPreviewBlockDefinition'; import { DestinyItemQualityBlockDefinition } from './DestinyItemQualityBlockDefinition'; import { DestinyItemValueBlockDefinition } from './DestinyItemValueBlockDefinition'; import { DestinyItemSourceBlockDefinition } from './DestinyItemSourceBlockDefinition'; import { DestinyItemObjectiveBlockDefinition } from './DestinyItemObjectiveBlockDefinition'; import { DestinyItemMetricBlockDefinition } from './DestinyItemMetricBlockDefinition'; import { DestinyItemPlugDefinition } from './Items/DestinyItemPlugDefinition'; import { DestinyItemGearsetBlockDefinition } from './DestinyItemGearsetBlockDefinition'; import { DestinyItemSackBlockDefinition } from './DestinyItemSackBlockDefinition'; import { DestinyItemSocketBlockDefinition } from './DestinyItemSocketBlockDefinition'; import { DestinyItemSummaryBlockDefinition } from './DestinyItemSummaryBlockDefinition'; import { DestinyItemTalentGridBlockDefinition } from './DestinyItemTalentGridBlockDefinition'; import { DestinyItemInvestmentStatDefinition } from './DestinyItemInvestmentStatDefinition'; import { DestinyItemPerkEntryDefinition } from './DestinyItemPerkEntryDefinition'; import { DestinyAnimationReference } from './Animations/DestinyAnimationReference'; import { HyperlinkReference } from '../../Links/HyperlinkReference'; import { SpecialItemType } from '../SpecialItemType'; import { DestinyItemType } from '../DestinyItemType'; import { DestinyItemSubType } from '../DestinyItemSubType'; import { DestinyClass } from '../DestinyClass'; import { DestinyBreakerType } from '../DestinyBreakerType'; import { DamageType } from '../DamageType'; /** * So much of what you see in Destiny is actually an Item used in a new and * creative way. This is the definition for Items in Destiny, which started off as * just entities that could exist in your Inventory but ended up being the backing * data for so much more: quests, reward previews, slots, and subclasses. * * In practice, you will want to associate this data with "live" item data from a * Bungie.Net Platform call: these definitions describe the item in generic, non- * instanced terms: but an actual instance of an item can vary widely from these * generic definitions. * @see {@link https://bungie-net.github.io/#/components/schemas/Destiny.Definitions.DestinyInventoryItemDefinition} */ export interface DestinyInventoryItemDefinition { readonly displayProperties: DestinyDisplayPropertiesDefinition; /** * Tooltips that only come up conditionally for the item. Check the live data * DestinyItemComponent.tooltipNotificationIndexes property for which of these * should be shown at runtime. */ readonly tooltipNotifications: DestinyItemTooltipNotification[]; /** * If this item has a collectible related to it, this is the hash identifier of * that collectible entry. Mapped to DestinyCollectibleDefinition in the manifest. */ readonly collectibleHash?: number; /** * If available, this is the original 'active' release watermark overlay for the * icon. If the item has different versions, this can be overridden by the 'display * version watermark icon' from the 'quality' block. Alternatively, if there is no * watermark for the version, and the item version has a power cap below the * current season power cap, this can be overridden by the iconWatermarkShelved * property. */ readonly iconWatermark: string; /** * If available, this is the 'shelved' release watermark overlay for the icon. If * the item version has a power cap below the current season power cap, it can be * treated as 'shelved', and should be shown with this 'shelved' watermark overlay. */ readonly iconWatermarkShelved: string; /** * This is the active watermark for the item if it is currently Featured in-game. * Clients should use the isFeaturedItem boolean to decide whether or not to show * this as opposed to iconWatermark. */ readonly iconWatermarkFeatured: string; /** * A secondary icon associated with the item. Currently this is used in very * context specific applications, such as Emblem Nameplates. */ readonly secondaryIcon: string; /** * Pulled from the secondary icon, this is the "secondary background" of the * secondary icon. Confusing? Sure, that's why I call it "overlay" here: because as * far as it's been used thus far, it has been for an optional overlay image. We'll * see if that holds up, but at least for now it explains what this image is a bit * better. */ readonly secondaryOverlay: string; /** * Pulled from the Secondary Icon, this is the "special" background for the item. * For Emblems, this is the background image used on the Details view: but it need * not be limited to that for other types of items. */ readonly secondarySpecial: string; /** * Sometimes, an item will have a background color. Most notably this occurs with * Emblems, who use the Background Color for small character nameplates such as the * "friends" view you see in-game. There are almost certainly other items that have * background color as well, though I have not bothered to investigate what items * have it nor what purposes they serve: use it as you will. */ readonly backgroundColor: DestinyColor; /** * Whether or not this item is currently featured in the game, giving it a special * watermark */ readonly isFeaturedItem: boolean; /** * If we were able to acquire an in-game screenshot for the item, the path to that * screenshot will be returned here. Note that not all items have screenshots: * particularly not any non-equippable items. */ readonly screenshot: string; /** * The localized title/name of the item's type. This can be whatever the designers * want, and has no guarantee of consistency between items. */ readonly itemTypeDisplayName: string; readonly flavorText: string; /** * A string identifier that the game's UI uses to determine how the item should be * rendered in inventory screens and the like. This could really be anything - at * the moment, we don't have the time to really breakdown and maintain all the * possible strings this could be, partly because new ones could be added ad hoc. * But if you want to use it to dictate your own UI, or look for items with a * certain display style, go for it! */ readonly uiItemDisplayStyle: string; /** * It became a common enough pattern in our UI to show Item Type and Tier combined * into a single localized string that I'm just going to go ahead and start pre- * creating these for items. */ readonly itemTypeAndTierDisplayName: string; /** * In theory, it is a localized string telling you about how you can find the item. * I really wish this was more consistent. Many times, it has nothing. Sometimes, * it's instead a more narrative-forward description of the item. Which is cool, * and I wish all properties had that data, but it should really be its own * property. */ readonly displaySource: string; /** * An identifier that the game UI uses to determine what type of tooltip to show * for the item. These have no corresponding definitions that BNet can link to: so * it'll be up to you to interpret and display your UI differently according to * these styles (or ignore it). */ readonly tooltipStyle: string; /** * If the item can be "used", this block will be non-null, and will have data * related to the action performed when using the item. (Guess what? 99% of the * time, this action is "dismantle". Shocker) */ readonly action?: DestinyItemActionBlockDefinition; /** Recipe items will have relevant crafting information available here. */ readonly crafting: DestinyItemCraftingBlockDefinition; /** * If this item can exist in an inventory, this block will be non-null. In practice, * every item that currently exists has one of these blocks. But note that it is * not necessarily guaranteed. */ readonly inventory?: DestinyItemInventoryBlockDefinition; /** * If this item is a quest, this block will be non-null. In practice, I wish I had * called this the Quest block, but at the time it wasn't clear to me whether it * would end up being used for purposes other than quests. It will contain data * about the steps in the quest, and mechanics we can use for displaying and * tracking the quest. */ readonly setData?: DestinyItemSetBlockDefinition; /** * If this item can have stats (such as a weapon, armor, or vehicle), this block * will be non-null and populated with the stats found on the item. */ readonly stats?: DestinyItemStatBlockDefinition; /** * If the item is an emblem that has a special Objective attached to it - for * instance, if the emblem tracks PVP Kills, or what-have-you. This is a bit * different from, for example, the Vanguard Kill Tracker mod, which pipes data * into the "art channel". When I get some time, I would like to standardize these * so you can get at the values they expose without having to care about what they' * re being used for and how they are wired up, but for now here's the raw data. */ readonly emblemObjectiveHash?: number; /** * If this item can be equipped, this block will be non-null and will be populated * with the conditions under which it can be equipped. */ readonly equippingBlock?: DestinyEquippingBlockDefinition; /** * If this item can be rendered, this block will be non-null and will be populated * with rendering information. */ readonly translationBlock?: DestinyItemTranslationBlockDefinition; /** * If this item can be Used or Acquired to gain other items (for instance, how * Eververse Boxes can be consumed to get items from the box), this block will be * non-null and will give summary information for the items that can be acquired. */ readonly preview?: DestinyItemPreviewBlockDefinition; /** * If this item can have a level or stats, this block will be non-null and will be * populated with default quality (item level, "quality", and infusion) data. See * the block for more details, there's often less upfront information in D2 so you' * ll want to be aware of how you use quality and item level on the definition * level now. */ readonly quality?: DestinyItemQualityBlockDefinition; /** * The conceptual "Value" of an item, if any was defined. See the * DestinyItemValueBlockDefinition for more details. */ readonly value: DestinyItemValueBlockDefinition; /** * If this item has a known source, this block will be non-null and populated with * source information. Unfortunately, at this time we are not generating sources: * that is some aggressively manual work which we didn't have time for, and I'm * hoping to get back to at some point in the future. */ readonly sourceData?: DestinyItemSourceBlockDefinition; /** * If this item has Objectives (extra tasks that can be accomplished related to the * item... most frequently when the item is a Quest Step and the Objectives need to * be completed to move on to the next Quest Step), this block will be non-null and * the objectives defined herein. */ readonly objectives?: DestinyItemObjectiveBlockDefinition; /** * If this item has available metrics to be shown, this block will be non-null have * the appropriate hashes defined. */ readonly metrics?: DestinyItemMetricBlockDefinition; /** * If this item *is* a Plug, this will be non-null and the info defined herein. See * DestinyItemPlugDefinition for more information. */ readonly plug?: DestinyItemPlugDefinition; /** * If this item has related items in a "Gear Set", this will be non-null and the * relationships defined herein. */ readonly gearset?: DestinyItemGearsetBlockDefinition; /** * If this item is a "reward sack" that can be opened to provide other items, this * will be non-null and the properties of the sack contained herein. */ readonly sack?: DestinyItemSackBlockDefinition; /** * If this item has any Sockets, this will be non-null and the individual sockets * on the item will be defined herein. */ readonly sockets?: DestinyItemSocketBlockDefinition; /** Summary data about the item. */ readonly summary: DestinyItemSummaryBlockDefinition; /** * If the item has a Talent Grid, this will be non-null and the properties of the * grid defined herein. Note that, while many items still have talent grids, the * only ones with meaningful Nodes still on them will be Subclass/"Build" items. */ readonly talentGrid?: DestinyItemTalentGridBlockDefinition; /** * If the item has stats, this block will be defined. It has the "raw" investment * stats for the item. These investment stats don't take into account the ways that * the items can spawn, nor do they take into account any Stat Group * transformations. I have retained them for debugging purposes, but I do not know * how useful people will find them. */ readonly investmentStats: DestinyItemInvestmentStatDefinition[]; /** * If the item has any *intrinsic* Perks (Perks that it will provide regardless of * Sockets, Talent Grid, and other transitory state), they will be defined here. */ readonly perks: DestinyItemPerkEntryDefinition[]; /** * If the item has any related Lore (DestinyLoreDefinition), this will be the hash * identifier you can use to look up the lore definition. Mapped to * DestinyLoreDefinition in the manifest. */ readonly loreHash?: number; /** * There are times when the game will show you a "summary/vague" version of an item * - such as a description of its type represented as a * DestinyInventoryItemDefinition - rather than display the item itself. * * This happens sometimes when summarizing possible rewards in a tooltip. This is * the item displayed instead, if it exists. Mapped to * DestinyInventoryItemDefinition in the manifest. */ readonly summaryItemHash?: number; /** * If any animations were extracted from game content for this item, these will be * the definitions of those animations. */ readonly animations: DestinyAnimationReference[]; /** * BNet may forbid the execution of actions on this item via the API. If that is * occurring, allowActions will be set to false. */ readonly allowActions: boolean; /** * If we added any help or informational URLs about this item, these will be those * links. */ readonly links: HyperlinkReference[]; /** * The boolean will indicate to us (and you!) whether something *could* happen when * you transfer this item from the Postmaster that might be considered a " * destructive" action. * * It is not feasible currently to tell you (or ourelves!) in a consistent way * whether this *will* actually cause a destructive action, so we are playing it * safe: if it has the potential to do so, we will not allow it to be transferred * from the Postmaster by default. You will need to check for this flag before * transferring an item from the Postmaster, or else you'll end up receiving an * error. */ readonly doesPostmasterPullHaveSideEffects: boolean; /** * The intrinsic transferability of an item. * * I hate that this boolean is negative - but there's a reason. * * Just because an item is intrinsically transferrable doesn't mean that it can be * transferred, and we don't want to imply that this is the only source of that * transferability. */ readonly nonTransferrable: boolean; /** * BNet attempts to make a more formal definition of item "Categories", as defined * by DestinyItemCategoryDefinition. This is a list of all Categories that we were * able to algorithmically determine that this item is a member of. (for instance, * that it's a "Weapon", that it's an "Auto Rifle", etc...) * * The algorithm for these is, unfortunately, volatile. If you believe you see a * miscategorized item, please let us know on the Bungie API forums. Mapped to * DestinyItemCategoryDefinition in the manifest. */ readonly itemCategoryHashes?: number[]; /** * In Destiny 1, we identified some items as having particular categories that we'd * like to know about for various internal logic purposes. These are defined in * SpecialItemType, and while these days the itemCategoryHashes are the preferred * way of identifying types, we have retained this enum for its convenience. */ readonly specialItemType: SpecialItemType; /** * A value indicating the "base" the of the item. This enum is a useful but * dramatic oversimplification of what it means for an item to have a "Type". Still, * it's handy in many situations. * * itemCategoryHashes are the preferred way of identifying types, we have retained * this enum for its convenience. */ readonly itemType: DestinyItemType; /** * A value indicating the "sub-type" of the item. For instance, where an item might * have an itemType value "Weapon", this will be something more specific like "Auto * Rifle". * * itemCategoryHashes are the preferred way of identifying types, we have retained * this enum for its convenience. */ readonly itemSubType: DestinyItemSubType; /** * We run a similarly weak-sauce algorithm to try and determine whether an item is * restricted to a specific class. If we find it to be restricted in such a way, we * set this classType property to match the class' enumeration value so that users * can easily identify class restricted items. * * If you see a mis-classed item, please inform the developers in the Bungie API * forum. */ readonly classType: DestinyClass; /** * Some weapons and plugs can have a "Breaker Type": a special ability that works * sort of like damage type vulnerabilities. This is (almost?) always set on items * by plugs. */ readonly breakerType: DestinyBreakerType; /** * Since we also have a breaker type definition, this is the hash for that breaker * type for your convenience. Whether you use the enum or hash and look up the * definition depends on what's cleanest for your code. Mapped to * DestinyBreakerTypeDefinition in the manifest. */ readonly breakerTypeHash?: number; /** * If true, then you will be allowed to equip the item if you pass its other * requirements. * * This being false means that you cannot equip the item under any circumstances. */ readonly equippable: boolean; /** * Theoretically, an item can have many possible damage types. In *practice*, this * is not true, but just in case weapons start being made that have multiple (for * instance, an item where a socket has reusable plugs for every possible damage * type that you can choose from freely), this field will return all of the * possible damage types that are available to the weapon by default. Mapped to * DestinyDamageTypeDefinition in the manifest. */ readonly damageTypeHashes: number[]; /** * This is the list of all damage types that we know ahead of time the item can * take on. Unfortunately, this does not preclude the possibility of something * funky happening to give the item a damage type that cannot be predicted * beforehand: for example, if some designer decides to create arbitrary non- * reusable plugs that cause damage type to change. * * This damage type prediction will only use the following to determine potential * damage types: * * - Intrinsic perks * * - Talent Node perks * * - Known, reusable plugs for sockets */ readonly damageTypes: DamageType[]; /** * If the item has a damage type that could be considered to be default, it will be * populated here. * * For various upsetting reasons, it's surprisingly cumbersome to figure this out. * I hope you're happy. */ readonly defaultDamageType: DamageType; /** * Similar to defaultDamageType, but represented as the hash identifier for a * DestinyDamageTypeDefinition. * * I will likely regret leaving in the enumeration versions of these properties, * but for now they're very convenient. Mapped to DestinyDamageTypeDefinition in * the manifest. */ readonly defaultDamageTypeHash?: number; /** * If this item is related directly to a Season of Destiny, this is the hash * identifier for that season. Mapped to DestinySeasonDefinition in the manifest. */ readonly seasonHash?: number; /** * If true, this is a dummy vendor-wrapped item template. Items purchased from * Eververse will be "wrapped" by one of these items so that we can safely provide * refund capabilities before the item is "unwrapped". */ readonly isWrapper: boolean; /** * Traits are metadata tags applied to this item. For example: armor slot, weapon * type, foundry, faction, etc. These IDs come from the game and don't map to any * content, but should still be useful. */ readonly traitIds: string[]; /** These are the corresponding trait definition hashes for the entries in traitIds. */ readonly traitHashes: number[]; /** * The unique identifier for this entity. Guaranteed to be unique for the type of * entity, but not globally. * * When entities refer to each other in Destiny content, it is this hash that they * are referring to. */ readonly hash: number; /** The index of the entity as it was found in the investment tables. */ readonly index: number; /** * If this is true, then there is an entity with this identifier/type combination, * but BNet is not yet allowed to show it. Sorry! */ readonly redacted: boolean; }