{ "swagger": "2.0", "info": { "title": "Bungie.Net API", "description": "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.", "termsOfService": "https://www.bungie.net/en/View/Bungie/terms", "contact": { "name": "Bungie.net API Support", "url": "https://github.com/Bungie-net/api", "email": "support@bungie.com" }, "license": { "name": "BSD License 2.0", "url": "https://github.com/Bungie-net/api/blob/master/LICENSE" }, "version": "2.18.0" }, "host": "www.bungie.net", "basePath": "/Platform", "schemes": [ "https" ], "paths": { "/App/ApiUsage/{applicationId}/": { "get": { "tags": [ "App" ], "description": "Get API usage by application for time frame specified. You can go as far back as 30 days ago, and can ask for up to a 48 hour window of time in a single request. You must be authenticated with at least the ReadUserData permission to access this endpoint.", "operationId": "App.GetApplicationApiUsage", "parameters": [ { "name": "applicationId", "in": "path", "description": "ID of the application to get usage statistics.", "required": true, "type": "integer", "format": "int32" }, { "name": "end", "in": "query", "description": "End time for query. Goes to now if not specified.", "type": "string", "format": "date-time" }, { "name": "start", "in": "query", "description": "Start time for query. Goes to 24 hours ago if not specified.", "type": "string", "format": "date-time" } ], "deprecated": false, "security": [ { "oauth2": [ "ReadUserData" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Applications.ApiUsage" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/App/FirstParty/": { "get": { "tags": [ "App" ], "description": "Get list of applications created by Bungie.", "operationId": "App.GetBungieApplications", "parameters": [], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "array", "items": { "$ref": "#/definitions/Applications.Application" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/User/GetBungieNetUserById/{id}/": { "get": { "tags": [ "User" ], "description": "Loads a bungienet user by membership id.", "operationId": "User.GetBungieNetUserById", "parameters": [ { "name": "id", "in": "path", "description": "The requested Bungie.net membership id.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/User.GeneralUser" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/User/GetSanitizedPlatformDisplayNames/{membershipId}/": { "get": { "tags": [ "User" ], "description": "Gets a list of all display names linked to this membership id but sanitized (profanity filtered). Obeys all visibility rules of calling user and is heavily cached.", "operationId": "User.GetSanitizedPlatformDisplayNames", "parameters": [ { "name": "membershipId", "in": "path", "description": "The requested membership id to load.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "object", "additionalProperties": { "type": "string" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/User/GetCredentialTypesForTargetAccount/{membershipId}/": { "get": { "tags": [ "User" ], "description": "Returns a list of credential types attached to the requested account", "operationId": "User.GetCredentialTypesForTargetAccount", "parameters": [ { "name": "membershipId", "in": "path", "description": "The user's membership id", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "array", "items": { "$ref": "#/definitions/User.Models.GetCredentialTypesForAccountResponse" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/User/GetAvailableThemes/": { "get": { "tags": [ "User" ], "description": "Returns a list of all available user themes.", "operationId": "User.GetAvailableThemes", "parameters": [], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "array", "items": { "$ref": "#/definitions/Config.UserTheme" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/User/GetMembershipsById/{membershipId}/{membershipType}/": { "get": { "tags": [ "User" ], "description": "Returns a list of accounts associated with the supplied membership ID and membership type. This will include all linked accounts (even when hidden) if supplied credentials permit it.", "operationId": "User.GetMembershipDataById", "parameters": [ { "name": "membershipId", "in": "path", "description": "The membership ID of the target user.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "Type of the supplied membership ID.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/User.UserMembershipData" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/User/GetMembershipsForCurrentUser/": { "get": { "tags": [ "User" ], "description": "Returns a list of accounts associated with signed in user. This is useful for OAuth implementations that do not give you access to the token response.", "operationId": "User.GetMembershipDataForCurrentUser", "parameters": [], "deprecated": false, "security": [ { "oauth2": [ "ReadBasicUserProfile" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/User.UserMembershipData" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/User/GetMembershipFromHardLinkedCredential/{crType}/{credential}/": { "get": { "tags": [ "User" ], "description": "Gets any hard linked membership given a credential. Only works for credentials that are public (just SteamID64 right now). Cross Save aware.", "operationId": "User.GetMembershipFromHardLinkedCredential", "parameters": [ { "name": "credential", "in": "path", "description": "The credential to look up. Must be a valid SteamID64.", "required": true, "type": "string" }, { "name": "crType", "in": "path", "description": "The credential type. 'SteamId' is the only valid value at present.", "required": true, "type": "integer", "format": "byte" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/User.HardLinkedUserMembership" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/User/Search/Prefix/{displayNamePrefix}/{page}/": { "get": { "tags": [ "User" ], "description": "[OBSOLETE] Do not use this to search users, use SearchByGlobalNamePost instead.", "operationId": "User.SearchByGlobalNamePrefix", "parameters": [ { "name": "displayNamePrefix", "in": "path", "description": "The display name prefix you're looking for.", "required": true, "type": "string" }, { "name": "page", "in": "path", "description": "The zero-based page of results you desire.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/User.UserSearchResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/User/Search/GlobalName/{page}/": { "post": { "tags": [ "User" ], "description": "Given the prefix of a global display name, returns all users who share that name.", "operationId": "User.SearchByGlobalNamePost", "parameters": [ { "name": "page", "in": "path", "description": "The zero-based page of results you desire.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/User.UserSearchResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Content/GetContentType/{type}/": { "get": { "tags": [ "Content" ], "description": "Gets an object describing a particular variant of content.", "operationId": "Content.GetContentType", "parameters": [ { "name": "type", "in": "path", "description": "", "required": true, "type": "string" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Content.Models.ContentTypeDescription" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Content/GetContentById/{id}/{locale}/": { "get": { "tags": [ "Content" ], "description": "Returns a content item referenced by id", "operationId": "Content.GetContentById", "parameters": [ { "name": "head", "in": "query", "description": "false", "type": "boolean" }, { "name": "id", "in": "path", "description": "", "required": true, "type": "integer", "format": "int64" }, { "name": "locale", "in": "path", "description": "", "required": true, "type": "string" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Content.ContentItemPublicContract" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Content/GetContentByTagAndType/{tag}/{type}/{locale}/": { "get": { "tags": [ "Content" ], "description": "Returns the newest item that matches a given tag and Content Type.", "operationId": "Content.GetContentByTagAndType", "parameters": [ { "name": "head", "in": "query", "description": "Not used.", "type": "boolean" }, { "name": "locale", "in": "path", "description": "", "required": true, "type": "string" }, { "name": "tag", "in": "path", "description": "", "required": true, "type": "string" }, { "name": "type", "in": "path", "description": "", "required": true, "type": "string" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Content.ContentItemPublicContract" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Content/Search/{locale}/": { "get": { "tags": [ "Content" ], "description": "Gets content based on querystring information passed in. Provides basic search and text search capabilities.", "operationId": "Content.SearchContentWithText", "parameters": [ { "name": "ctype", "in": "query", "description": "Content type tag: Help, News, etc. Supply multiple ctypes separated by space.", "type": "string" }, { "name": "currentpage", "in": "query", "description": "Page number for the search results, starting with page 1.", "type": "integer", "format": "int32" }, { "name": "head", "in": "query", "description": "Not used.", "type": "boolean" }, { "name": "locale", "in": "path", "description": "", "required": true, "type": "string" }, { "name": "searchtext", "in": "query", "description": "Word or phrase for the search.", "type": "string" }, { "name": "source", "in": "query", "description": "For analytics, hint at the part of the app that triggered the search. Optional.", "type": "string" }, { "name": "tag", "in": "query", "description": "Tag used on the content to be searched.", "type": "string" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/SearchResultOfContentItemPublicContract" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Content/SearchContentByTagAndType/{tag}/{type}/{locale}/": { "get": { "tags": [ "Content" ], "description": "Searches for Content Items that match the given Tag and Content Type.", "operationId": "Content.SearchContentByTagAndType", "parameters": [ { "name": "currentpage", "in": "query", "description": "Page number for the search results starting with page 1.", "type": "integer", "format": "int32" }, { "name": "head", "in": "query", "description": "Not used.", "type": "boolean" }, { "name": "itemsperpage", "in": "query", "description": "Not used.", "type": "integer", "format": "int32" }, { "name": "locale", "in": "path", "description": "", "required": true, "type": "string" }, { "name": "tag", "in": "path", "description": "", "required": true, "type": "string" }, { "name": "type", "in": "path", "description": "", "required": true, "type": "string" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/SearchResultOfContentItemPublicContract" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Content/SearchHelpArticles/{searchtext}/{size}/": { "get": { "tags": [ "Content" ], "description": "Search for Help Articles.", "operationId": "Content.SearchHelpArticles", "parameters": [ { "name": "searchtext", "in": "path", "description": "", "required": true, "type": "string" }, { "name": "size", "in": "path", "description": "", "required": true, "type": "string" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "object" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Content/Rss/NewsArticles/{pageToken}/": { "get": { "tags": [ "Content" ], "description": "Returns a JSON string response that is the RSS feed for news articles.", "operationId": "Content.RssNewsArticles", "parameters": [ { "name": "categoryfilter", "in": "query", "description": "Optionally filter response to only include news items in a certain category.", "type": "string" }, { "name": "includebody", "in": "query", "description": "Optionally include full content body for each news item.", "type": "boolean" }, { "name": "pageToken", "in": "path", "description": "Zero-based pagination token for paging through result sets.", "required": true, "type": "string" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Content.NewsArticleRssResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Forum/GetTopicsPaged/{page}/{pageSize}/{group}/{sort}/{quickDate}/{categoryFilter}/": { "get": { "tags": [ "Forum" ], "description": "Get topics from any forum.", "operationId": "Forum.GetTopicsPaged", "parameters": [ { "name": "categoryFilter", "in": "path", "description": "A category filter", "required": true, "type": "integer", "format": "int32" }, { "name": "group", "in": "path", "description": "The group, if any.", "required": true, "type": "integer", "format": "int64" }, { "name": "locales", "in": "query", "description": "Comma seperated list of locales posts must match to return in the result list. Default 'en'", "type": "string" }, { "name": "page", "in": "path", "description": "Zero paged page number", "required": true, "type": "integer", "format": "int32" }, { "name": "pageSize", "in": "path", "description": "Unused", "required": true, "type": "integer", "format": "int32" }, { "name": "quickDate", "in": "path", "description": "A date filter.", "required": true, "type": "integer", "format": "int32" }, { "name": "sort", "in": "path", "description": "The sort mode.", "required": true, "type": "integer", "format": "byte" }, { "name": "tagstring", "in": "query", "description": "The tags to search, if any.", "type": "string" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Forum.PostSearchResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Forum/GetCoreTopicsPaged/{page}/{sort}/{quickDate}/{categoryFilter}/": { "get": { "tags": [ "Forum" ], "description": "Gets a listing of all topics marked as part of the core group.", "operationId": "Forum.GetCoreTopicsPaged", "parameters": [ { "name": "categoryFilter", "in": "path", "description": "The category filter.", "required": true, "type": "integer", "format": "int32" }, { "name": "locales", "in": "query", "description": "Comma seperated list of locales posts must match to return in the result list. Default 'en'", "type": "string" }, { "name": "page", "in": "path", "description": "Zero base page", "required": true, "type": "integer", "format": "int32" }, { "name": "quickDate", "in": "path", "description": "The date filter.", "required": true, "type": "integer", "format": "int32" }, { "name": "sort", "in": "path", "description": "The sort mode.", "required": true, "type": "integer", "format": "byte" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Forum.PostSearchResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Forum/GetPostsThreadedPaged/{parentPostId}/{page}/{pageSize}/{replySize}/{getParentPost}/{rootThreadMode}/{sortMode}/": { "get": { "tags": [ "Forum" ], "description": "Returns a thread of posts at the given parent, optionally returning replies to those posts as well as the original parent.", "operationId": "Forum.GetPostsThreadedPaged", "parameters": [ { "name": "getParentPost", "in": "path", "description": "", "required": true, "type": "boolean" }, { "name": "page", "in": "path", "description": "", "required": true, "type": "integer", "format": "int32" }, { "name": "pageSize", "in": "path", "description": "", "required": true, "type": "integer", "format": "int32" }, { "name": "parentPostId", "in": "path", "description": "", "required": true, "type": "integer", "format": "int64" }, { "name": "replySize", "in": "path", "description": "", "required": true, "type": "integer", "format": "int32" }, { "name": "rootThreadMode", "in": "path", "description": "", "required": true, "type": "boolean" }, { "name": "showbanned", "in": "query", "description": "If this value is not null or empty, banned posts are requested to be returned", "type": "string" }, { "name": "sortMode", "in": "path", "description": "", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Forum.PostSearchResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Forum/GetPostsThreadedPagedFromChild/{childPostId}/{page}/{pageSize}/{replySize}/{rootThreadMode}/{sortMode}/": { "get": { "tags": [ "Forum" ], "description": "Returns a thread of posts starting at the topicId of the input childPostId, optionally returning replies to those posts as well as the original parent.", "operationId": "Forum.GetPostsThreadedPagedFromChild", "parameters": [ { "name": "childPostId", "in": "path", "description": "", "required": true, "type": "integer", "format": "int64" }, { "name": "page", "in": "path", "description": "", "required": true, "type": "integer", "format": "int32" }, { "name": "pageSize", "in": "path", "description": "", "required": true, "type": "integer", "format": "int32" }, { "name": "replySize", "in": "path", "description": "", "required": true, "type": "integer", "format": "int32" }, { "name": "rootThreadMode", "in": "path", "description": "", "required": true, "type": "boolean" }, { "name": "showbanned", "in": "query", "description": "If this value is not null or empty, banned posts are requested to be returned", "type": "string" }, { "name": "sortMode", "in": "path", "description": "", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Forum.PostSearchResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Forum/GetPostAndParent/{childPostId}/": { "get": { "tags": [ "Forum" ], "description": "Returns the post specified and its immediate parent.", "operationId": "Forum.GetPostAndParent", "parameters": [ { "name": "childPostId", "in": "path", "description": "", "required": true, "type": "integer", "format": "int64" }, { "name": "showbanned", "in": "query", "description": "If this value is not null or empty, banned posts are requested to be returned", "type": "string" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Forum.PostSearchResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Forum/GetPostAndParentAwaitingApproval/{childPostId}/": { "get": { "tags": [ "Forum" ], "description": "Returns the post specified and its immediate parent of posts that are awaiting approval.", "operationId": "Forum.GetPostAndParentAwaitingApproval", "parameters": [ { "name": "childPostId", "in": "path", "description": "", "required": true, "type": "integer", "format": "int64" }, { "name": "showbanned", "in": "query", "description": "If this value is not null or empty, banned posts are requested to be returned", "type": "string" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Forum.PostSearchResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Forum/GetTopicForContent/{contentId}/": { "get": { "tags": [ "Forum" ], "description": "Gets the post Id for the given content item's comments, if it exists.", "operationId": "Forum.GetTopicForContent", "parameters": [ { "name": "contentId", "in": "path", "description": "", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int64", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Forum/GetForumTagSuggestions/": { "get": { "tags": [ "Forum" ], "description": "Gets tag suggestions based on partial text entry, matching them with other tags previously used in the forums.", "operationId": "Forum.GetForumTagSuggestions", "parameters": [ { "name": "partialtag", "in": "query", "description": "The partial tag input to generate suggestions from.", "type": "string" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "array", "items": { "$ref": "#/definitions/Tags.Models.Contracts.TagResponse" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Forum/Poll/{topicId}/": { "get": { "tags": [ "Forum" ], "description": "Gets the specified forum poll.", "operationId": "Forum.GetPoll", "parameters": [ { "name": "topicId", "in": "path", "description": "The post id of the topic that has the poll.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Forum.PostSearchResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Forum/Recruit/Summaries/": { "post": { "tags": [ "Forum" ], "description": "Allows the caller to get a list of to 25 recruitment thread summary information objects.", "operationId": "Forum.GetRecruitmentThreadSummaries", "parameters": [], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "array", "items": { "$ref": "#/definitions/Forum.ForumRecruitmentDetail" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/GetAvailableAvatars/": { "get": { "tags": [ "GroupV2" ], "description": "Returns a list of all available group avatars for the signed-in user.", "operationId": "GroupV2.GetAvailableAvatars", "parameters": [], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "object", "additionalProperties": { "type": "string" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/GetAvailableThemes/": { "get": { "tags": [ "GroupV2" ], "description": "Returns a list of all available group themes.", "operationId": "GroupV2.GetAvailableThemes", "parameters": [], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "array", "items": { "$ref": "#/definitions/Config.GroupTheme" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/GetUserClanInviteSetting/{mType}/": { "get": { "tags": [ "GroupV2" ], "description": "Gets the state of the user's clan invite preferences for a particular membership type - true if they wish to be invited to clans, false otherwise.", "operationId": "GroupV2.GetUserClanInviteSetting", "parameters": [ { "name": "mType", "in": "path", "description": "The Destiny membership type of the account we wish to access settings.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "security": [ { "oauth2": [ "ReadUserData" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "boolean" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/Recommended/{groupType}/{createDateRange}/": { "post": { "tags": [ "GroupV2" ], "description": "Gets groups recommended for you based on the groups to whom those you follow belong.", "operationId": "GroupV2.GetRecommendedGroups", "parameters": [ { "name": "createDateRange", "in": "path", "description": "Requested range in which to pull recommended groups", "required": true, "type": "integer", "format": "int32" }, { "name": "groupType", "in": "path", "description": "Type of groups requested", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "security": [ { "oauth2": [ "ReadGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "array", "items": { "$ref": "#/definitions/GroupsV2.GroupV2Card" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/Search/": { "post": { "tags": [ "GroupV2" ], "description": "Search for Groups.", "operationId": "GroupV2.GroupSearch", "parameters": [], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/GroupsV2.GroupSearchResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/": { "get": { "tags": [ "GroupV2" ], "description": "Get information about a specific group of the given ID.", "operationId": "GroupV2.GetGroup", "parameters": [ { "name": "groupId", "in": "path", "description": "Requested group's id.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/GroupsV2.GroupResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/Name/{groupName}/{groupType}/": { "get": { "tags": [ "GroupV2" ], "description": "Get information about a specific group with the given name and type.", "operationId": "GroupV2.GetGroupByName", "parameters": [ { "name": "groupName", "in": "path", "description": "Exact name of the group to find.", "required": true, "type": "string" }, { "name": "groupType", "in": "path", "description": "Type of group to find.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/GroupsV2.GroupResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/NameV2/": { "post": { "tags": [ "GroupV2" ], "description": "Get information about a specific group with the given name and type. The POST version.", "operationId": "GroupV2.GetGroupByNameV2", "parameters": [], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/GroupsV2.GroupResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/OptionalConversations/": { "get": { "tags": [ "GroupV2" ], "description": "Gets a list of available optional conversation channels and their settings.", "operationId": "GroupV2.GetGroupOptionalConversations", "parameters": [ { "name": "groupId", "in": "path", "description": "Requested group's id.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "array", "items": { "$ref": "#/definitions/GroupsV2.GroupOptionalConversation" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/Edit/": { "post": { "tags": [ "GroupV2" ], "description": "Edit an existing group. You must have suitable permissions in the group to perform this operation. This latest revision will only edit the fields you pass in - pass null for properties you want to leave unaltered.", "operationId": "GroupV2.EditGroup", "parameters": [ { "name": "groupId", "in": "path", "description": "Group ID of the group to edit.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "security": [ { "oauth2": [ "AdminGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int32", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/EditClanBanner/": { "post": { "tags": [ "GroupV2" ], "description": "Edit an existing group's clan banner. You must have suitable permissions in the group to perform this operation. All fields are required.", "operationId": "GroupV2.EditClanBanner", "parameters": [ { "name": "groupId", "in": "path", "description": "Group ID of the group to edit.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "security": [ { "oauth2": [ "AdminGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int32", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/EditFounderOptions/": { "post": { "tags": [ "GroupV2" ], "description": "Edit group options only available to a founder. You must have suitable permissions in the group to perform this operation.", "operationId": "GroupV2.EditFounderOptions", "parameters": [ { "name": "groupId", "in": "path", "description": "Group ID of the group to edit.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "security": [ { "oauth2": [ "AdminGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int32", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/OptionalConversations/Add/": { "post": { "tags": [ "GroupV2" ], "description": "Add a new optional conversation/chat channel. Requires admin permissions to the group.", "operationId": "GroupV2.AddOptionalConversation", "parameters": [ { "name": "groupId", "in": "path", "description": "Group ID of the group to edit.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "security": [ { "oauth2": [ "AdminGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int64", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/OptionalConversations/Edit/{conversationId}/": { "post": { "tags": [ "GroupV2" ], "description": "Edit the settings of an optional conversation/chat channel. Requires admin permissions to the group.", "operationId": "GroupV2.EditOptionalConversation", "parameters": [ { "name": "conversationId", "in": "path", "description": "Conversation Id of the channel being edited.", "required": true, "type": "integer", "format": "int64" }, { "name": "groupId", "in": "path", "description": "Group ID of the group to edit.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "security": [ { "oauth2": [ "AdminGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int64", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/Members/": { "get": { "tags": [ "GroupV2" ], "description": "Get the list of members in a given group.", "operationId": "GroupV2.GetMembersOfGroup", "parameters": [ { "name": "currentpage", "in": "path", "description": "Page number (starting with 1). Each page has a fixed size of 50 items per page.", "required": true, "type": "integer", "format": "int32" }, { "name": "groupId", "in": "path", "description": "The ID of the group.", "required": true, "type": "integer", "format": "int64" }, { "name": "memberType", "in": "query", "description": "Filter out other member types. Use None for all members.", "type": "integer", "format": "int32" }, { "name": "nameSearch", "in": "query", "description": "The name fragment upon which a search should be executed for members with matching display or unique names.", "type": "string" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/SearchResultOfGroupMember" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/AdminsAndFounder/": { "get": { "tags": [ "GroupV2" ], "description": "Get the list of members in a given group who are of admin level or higher.", "operationId": "GroupV2.GetAdminsAndFounderOfGroup", "parameters": [ { "name": "currentpage", "in": "path", "description": "Page number (starting with 1). Each page has a fixed size of 50 items per page.", "required": true, "type": "integer", "format": "int32" }, { "name": "groupId", "in": "path", "description": "The ID of the group.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/SearchResultOfGroupMember" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/Members/{membershipType}/{membershipId}/SetMembershipType/{memberType}/": { "post": { "tags": [ "GroupV2" ], "description": "Edit the membership type of a given member. You must have suitable permissions in the group to perform this operation.", "operationId": "GroupV2.EditGroupMembership", "parameters": [ { "name": "groupId", "in": "path", "description": "ID of the group to which the member belongs.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipId", "in": "path", "description": "Membership ID to modify.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "Membership type of the provide membership ID.", "required": true, "type": "integer", "format": "int32" }, { "name": "memberType", "in": "path", "description": "New membertype for the specified member.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "security": [ { "oauth2": [ "AdminGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int32", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/Members/{membershipType}/{membershipId}/Kick/": { "post": { "tags": [ "GroupV2" ], "description": "Kick a member from the given group, forcing them to reapply if they wish to re-join the group. You must have suitable permissions in the group to perform this operation.", "operationId": "GroupV2.KickMember", "parameters": [ { "name": "groupId", "in": "path", "description": "Group ID to kick the user from.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipId", "in": "path", "description": "Membership ID to kick.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "Membership type of the provided membership ID.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "security": [ { "oauth2": [ "AdminGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/GroupsV2.GroupMemberLeaveResult" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/Members/{membershipType}/{membershipId}/Ban/": { "post": { "tags": [ "GroupV2" ], "description": "Bans the requested member from the requested group for the specified period of time.", "operationId": "GroupV2.BanMember", "parameters": [ { "name": "groupId", "in": "path", "description": "Group ID that has the member to ban.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipId", "in": "path", "description": "Membership ID of the member to ban from the group.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "Membership type of the provided membership ID.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "security": [ { "oauth2": [ "AdminGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int32", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/Members/{membershipType}/{membershipId}/Unban/": { "post": { "tags": [ "GroupV2" ], "description": "Unbans the requested member, allowing them to re-apply for membership.", "operationId": "GroupV2.UnbanMember", "parameters": [ { "name": "groupId", "in": "path", "description": "", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipId", "in": "path", "description": "Membership ID of the member to unban from the group", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "Membership type of the provided membership ID.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "security": [ { "oauth2": [ "AdminGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int32", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/Banned/": { "get": { "tags": [ "GroupV2" ], "description": "Get the list of banned members in a given group. Only accessible to group Admins and above. Not applicable to all groups. Check group features.", "operationId": "GroupV2.GetBannedMembersOfGroup", "parameters": [ { "name": "currentpage", "in": "path", "description": "Page number (starting with 1). Each page has a fixed size of 50 entries.", "required": true, "type": "integer", "format": "int32" }, { "name": "groupId", "in": "path", "description": "Group ID whose banned members you are fetching", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "security": [ { "oauth2": [ "AdminGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/SearchResultOfGroupBan" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/Admin/AbdicateFoundership/{membershipType}/{founderIdNew}/": { "post": { "tags": [ "GroupV2" ], "description": "An administrative method to allow the founder of a group or clan to give up their position to another admin permanently.", "operationId": "GroupV2.AbdicateFoundership", "parameters": [ { "name": "founderIdNew", "in": "path", "description": "The new founder for this group. Must already be a group admin.", "required": true, "type": "integer", "format": "int64" }, { "name": "groupId", "in": "path", "description": "The target group id.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "Membership type of the provided founderIdNew.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "boolean" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/Members/Pending/": { "get": { "tags": [ "GroupV2" ], "description": "Get the list of users who are awaiting a decision on their application to join a given group. Modified to include application info.", "operationId": "GroupV2.GetPendingMemberships", "parameters": [ { "name": "currentpage", "in": "path", "description": "Page number (starting with 1). Each page has a fixed size of 50 items per page.", "required": true, "type": "integer", "format": "int32" }, { "name": "groupId", "in": "path", "description": "ID of the group.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "security": [ { "oauth2": [ "AdminGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/SearchResultOfGroupMemberApplication" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/Members/InvitedIndividuals/": { "get": { "tags": [ "GroupV2" ], "description": "Get the list of users who have been invited into the group.", "operationId": "GroupV2.GetInvitedIndividuals", "parameters": [ { "name": "currentpage", "in": "path", "description": "Page number (starting with 1). Each page has a fixed size of 50 items per page.", "required": true, "type": "integer", "format": "int32" }, { "name": "groupId", "in": "path", "description": "ID of the group.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "security": [ { "oauth2": [ "AdminGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/SearchResultOfGroupMemberApplication" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/Members/ApproveAll/": { "post": { "tags": [ "GroupV2" ], "description": "Approve all of the pending users for the given group.", "operationId": "GroupV2.ApproveAllPending", "parameters": [ { "name": "groupId", "in": "path", "description": "ID of the group.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "security": [ { "oauth2": [ "AdminGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "array", "items": { "$ref": "#/definitions/Entities.EntityActionResult" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/Members/DenyAll/": { "post": { "tags": [ "GroupV2" ], "description": "Deny all of the pending users for the given group.", "operationId": "GroupV2.DenyAllPending", "parameters": [ { "name": "groupId", "in": "path", "description": "ID of the group.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "security": [ { "oauth2": [ "AdminGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "array", "items": { "$ref": "#/definitions/Entities.EntityActionResult" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/Members/ApproveList/": { "post": { "tags": [ "GroupV2" ], "description": "Approve all of the pending users for the given group.", "operationId": "GroupV2.ApprovePendingForList", "parameters": [ { "name": "groupId", "in": "path", "description": "ID of the group.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "security": [ { "oauth2": [ "AdminGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "array", "items": { "$ref": "#/definitions/Entities.EntityActionResult" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/Members/Approve/{membershipType}/{membershipId}/": { "post": { "tags": [ "GroupV2" ], "description": "Approve the given membershipId to join the group/clan as long as they have applied.", "operationId": "GroupV2.ApprovePending", "parameters": [ { "name": "groupId", "in": "path", "description": "ID of the group.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipId", "in": "path", "description": "The membership id being approved.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "Membership type of the supplied membership ID.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "security": [ { "oauth2": [ "AdminGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "boolean" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/Members/DenyList/": { "post": { "tags": [ "GroupV2" ], "description": "Deny all of the pending users for the given group that match the passed-in .", "operationId": "GroupV2.DenyPendingForList", "parameters": [ { "name": "groupId", "in": "path", "description": "ID of the group.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "security": [ { "oauth2": [ "AdminGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "array", "items": { "$ref": "#/definitions/Entities.EntityActionResult" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/User/{membershipType}/{membershipId}/{filter}/{groupType}/": { "get": { "tags": [ "GroupV2" ], "description": "Get information about the groups that a given member has joined.", "operationId": "GroupV2.GetGroupsForMember", "parameters": [ { "name": "filter", "in": "path", "description": "Filter apply to list of joined groups.", "required": true, "type": "integer", "format": "int32" }, { "name": "groupType", "in": "path", "description": "Type of group the supplied member founded.", "required": true, "type": "integer", "format": "int32" }, { "name": "membershipId", "in": "path", "description": "Membership ID to for which to find founded groups.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "Membership type of the supplied membership ID.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/GroupsV2.GetGroupsForMemberResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/Recover/{membershipType}/{membershipId}/{groupType}/": { "get": { "tags": [ "GroupV2" ], "description": "Allows a founder to manually recover a group they can see in game but not on bungie.net", "operationId": "GroupV2.RecoverGroupForFounder", "parameters": [ { "name": "groupType", "in": "path", "description": "Type of group the supplied member founded.", "required": true, "type": "integer", "format": "int32" }, { "name": "membershipId", "in": "path", "description": "Membership ID to for which to find founded groups.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "Membership type of the supplied membership ID.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/GroupsV2.GroupMembershipSearchResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/User/Potential/{membershipType}/{membershipId}/{filter}/{groupType}/": { "get": { "tags": [ "GroupV2" ], "description": "Get information about the groups that a given member has applied to or been invited to.", "operationId": "GroupV2.GetPotentialGroupsForMember", "parameters": [ { "name": "filter", "in": "path", "description": "Filter apply to list of potential joined groups.", "required": true, "type": "integer", "format": "int32" }, { "name": "groupType", "in": "path", "description": "Type of group the supplied member applied.", "required": true, "type": "integer", "format": "int32" }, { "name": "membershipId", "in": "path", "description": "Membership ID to for which to find applied groups.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "Membership type of the supplied membership ID.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/GroupsV2.GroupPotentialMembershipSearchResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/Members/IndividualInvite/{membershipType}/{membershipId}/": { "post": { "tags": [ "GroupV2" ], "description": "Invite a user to join this group.", "operationId": "GroupV2.IndividualGroupInvite", "parameters": [ { "name": "groupId", "in": "path", "description": "ID of the group you would like to join.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipId", "in": "path", "description": "Membership id of the account being invited.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "MembershipType of the account being invited.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "security": [ { "oauth2": [ "AdminGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/GroupsV2.GroupApplicationResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GroupV2/{groupId}/Members/IndividualInviteCancel/{membershipType}/{membershipId}/": { "post": { "tags": [ "GroupV2" ], "description": "Cancels a pending invitation to join a group.", "operationId": "GroupV2.IndividualGroupInviteCancel", "parameters": [ { "name": "groupId", "in": "path", "description": "ID of the group you would like to join.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipId", "in": "path", "description": "Membership id of the account being cancelled.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "MembershipType of the account being cancelled.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "security": [ { "oauth2": [ "AdminGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/GroupsV2.GroupApplicationResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Tokens/Partner/ForceDropsRepair/": { "post": { "tags": [ "Tokens" ], "description": "Twitch Drops self-repair function - scans twitch for drops not marked as fulfilled and resyncs them.", "operationId": "Tokens.ForceDropsRepair", "parameters": [], "deprecated": false, "security": [ { "oauth2": [ "PartnerOfferGrant" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "boolean" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Tokens/Partner/ClaimOffer/": { "post": { "tags": [ "Tokens" ], "description": "Claim a partner offer as the authenticated user.", "operationId": "Tokens.ClaimPartnerOffer", "parameters": [], "deprecated": false, "security": [ { "oauth2": [ "PartnerOfferGrant" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "boolean" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Tokens/Partner/ApplyMissingOffers/{partnerApplicationId}/{targetBnetMembershipId}/": { "post": { "tags": [ "Tokens" ], "description": "Apply a partner offer to the targeted user. This endpoint does not claim a new offer, but any already claimed offers will be applied to the game if not already.", "operationId": "Tokens.ApplyMissingPartnerOffersWithoutClaim", "parameters": [ { "name": "partnerApplicationId", "in": "path", "description": "The partner application identifier.", "required": true, "type": "integer", "format": "int32" }, { "name": "targetBnetMembershipId", "in": "path", "description": "The bungie.net user to apply missing offers to. If not self, elevated permissions are required.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "security": [ { "oauth2": [ "PartnerOfferGrant" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "boolean" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Tokens/Partner/History/{partnerApplicationId}/{targetBnetMembershipId}/": { "get": { "tags": [ "Tokens" ], "description": "Returns the partner sku and offer history of the targeted user. Elevated permissions are required to see users that are not yourself.", "operationId": "Tokens.GetPartnerOfferSkuHistory", "parameters": [ { "name": "partnerApplicationId", "in": "path", "description": "The partner application identifier.", "required": true, "type": "integer", "format": "int32" }, { "name": "targetBnetMembershipId", "in": "path", "description": "The bungie.net user to apply missing offers to. If not self, elevated permissions are required.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "security": [ { "oauth2": [ "PartnerOfferGrant" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "array", "items": { "$ref": "#/definitions/Tokens.PartnerOfferSkuHistoryResponse" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Tokens/Partner/History/{targetBnetMembershipId}/Application/{partnerApplicationId}/": { "get": { "tags": [ "Tokens" ], "description": "Returns the partner rewards history of the targeted user, both partner offers and Twitch drops.", "operationId": "Tokens.GetPartnerRewardHistory", "parameters": [ { "name": "partnerApplicationId", "in": "path", "description": "The partner application identifier.", "required": true, "type": "integer", "format": "int32" }, { "name": "targetBnetMembershipId", "in": "path", "description": "The bungie.net user to return reward history for.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "security": [ { "oauth2": [ "PartnerOfferGrant" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Tokens.PartnerRewardHistoryResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Tokens/Rewards/GetRewardsForUser/{membershipId}/": { "get": { "tags": [ "Tokens" ], "description": "Returns the bungie rewards for the targeted user.", "operationId": "Tokens.GetBungieRewardsForUser", "parameters": [ { "name": "membershipId", "in": "path", "description": "bungie.net user membershipId for requested user rewards. If not self, elevated permissions are required.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "security": [ { "oauth2": [ "ReadAndApplyTokens" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Tokens.BungieRewardDisplay" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Tokens/Rewards/GetRewardsForPlatformUser/{membershipId}/{membershipType}/": { "get": { "tags": [ "Tokens" ], "description": "Returns the bungie rewards for the targeted user when a platform membership Id and Type are used.", "operationId": "Tokens.GetBungieRewardsForPlatformUser", "parameters": [ { "name": "membershipId", "in": "path", "description": "users platform membershipId for requested user rewards. If not self, elevated permissions are required.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "The target Destiny 2 membership type.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "security": [ { "oauth2": [ "ReadAndApplyTokens" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Tokens.BungieRewardDisplay" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Tokens/Rewards/BungieRewards/": { "get": { "tags": [ "Tokens" ], "description": "Returns a list of the current bungie rewards", "operationId": "Tokens.GetBungieRewardsList", "parameters": [], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Tokens.BungieRewardDisplay" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/Manifest/": { "get": { "tags": [ "Destiny2" ], "description": "Returns the current version of the manifest as a json object.", "operationId": "Destiny2.GetDestinyManifest", "parameters": [], "deprecated": false, "responses": { "200": { "description": "DestinyManifest is the external-facing contract for just the properties needed by those calling the Destiny Platform.", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.Config.DestinyManifest" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/Manifest/{entityType}/{hashIdentifier}/": { "get": { "tags": [ "Destiny2" ], "description": "Returns the static definition of an entity of the given Type and hash identifier. Examine the API Documentation for the Type Names of entities that have their own definitions. Note that the return type will always *inherit from* DestinyDefinition, but the specific type returned will be the requested entity type if it can be found. Please don't use this as a chatty alternative to the Manifest database if you require large sets of data, but for simple and one-off accesses this should be handy.", "operationId": "Destiny2.GetDestinyEntityDefinition", "parameters": [ { "name": "entityType", "in": "path", "description": "The type of entity for whom you would like results. These correspond to the entity's definition contract name. For instance, if you are looking for items, this property should be 'DestinyInventoryItemDefinition'. PREVIEW: This endpoint is still in beta, and may experience rough edges. The schema is tentatively in final form, but there may be bugs that prevent desirable operation.", "required": true, "type": "string" }, { "name": "hashIdentifier", "in": "path", "description": "The hash identifier for the specific Entity you want returned.", "required": true, "type": "integer", "format": "uint32" } ], "deprecated": false, "responses": { "200": { "description": "Provides common properties for destiny definitions.", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.Definitions.DestinyDefinition" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/SearchDestinyPlayerByBungieName/{membershipType}/": { "post": { "tags": [ "Destiny2" ], "description": "Returns a list of Destiny memberships given a global Bungie Display Name. This method will hide overridden memberships due to cross save.", "operationId": "Destiny2.SearchDestinyPlayerByBungieName", "parameters": [ { "name": "membershipType", "in": "path", "description": "A valid non-BungieNet membership type, or All. Indicates which memberships to return. You probably want this set to All.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "array", "items": { "$ref": "#/definitions/User.UserInfoCard" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/{membershipType}/Profile/{membershipId}/LinkedProfiles/": { "get": { "tags": [ "Destiny2" ], "description": "Returns a summary information about all profiles linked to the requesting membership type/membership ID that have valid Destiny information. The passed-in Membership Type/Membership ID may be a Bungie.Net membership or a Destiny membership. It only returns the minimal amount of data to begin making more substantive requests, but will hopefully serve as a useful alternative to UserServices for people who just care about Destiny data. Note that it will only return linked accounts whose linkages you are allowed to view.", "operationId": "Destiny2.GetLinkedProfiles", "parameters": [ { "name": "getAllMemberships", "in": "query", "description": "(optional) if set to 'true', all memberships regardless of whether they're obscured by overrides will be returned. Normal privacy restrictions on account linking will still apply no matter what.", "type": "boolean" }, { "name": "membershipId", "in": "path", "description": "The ID of the membership whose linked Destiny accounts you want returned. Make sure your membership ID matches its Membership Type: don't pass us a PSN membership ID and the XBox membership type, it's not going to work!", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "The type for the membership whose linked Destiny accounts you want returned.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "I know what you seek. You seek linked accounts. Found them, you have.\r\nThis contract returns a minimal amount of data about Destiny Accounts that are linked through your Bungie.Net account. We will not return accounts in this response whose", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.Responses.DestinyLinkedProfilesResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/{membershipType}/Profile/{destinyMembershipId}/": { "get": { "tags": [ "Destiny2" ], "description": "Returns Destiny Profile information for the supplied membership.", "operationId": "Destiny2.GetProfile", "parameters": [ { "name": "components", "in": "query", "description": "A comma separated list of components to return (as strings or numeric values). See the DestinyComponentType enum for valid components to request. You must request at least one component to receive results.", "type": "array", "items": { "format": "int32", "description": "Represents the possible components that can be returned from Destiny \"Get\" calls such as GetProfile, GetCharacter, GetVendor etc...\r\nWhen making one of these requests, you will pass one or more of these components as a comma separated list in the \"?components=\" querystring parameter. For instance, if you want baseline Profile data, Character Data, and character progressions, you would pass \"?components=Profiles,Characters,CharacterProgressions\" You may use either the numerical or string values.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyComponentType" } } }, { "name": "destinyMembershipId", "in": "path", "description": "Destiny membership ID.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "A valid non-BungieNet membership type.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "The response for GetDestinyProfile, with components for character and item-level data.", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.Responses.DestinyProfileResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/{membershipType}/Profile/{destinyMembershipId}/Character/{characterId}/": { "get": { "tags": [ "Destiny2" ], "description": "Returns character information for the supplied character.", "operationId": "Destiny2.GetCharacter", "parameters": [ { "name": "characterId", "in": "path", "description": "ID of the character.", "required": true, "type": "integer", "format": "int64" }, { "name": "components", "in": "query", "description": "A comma separated list of components to return (as strings or numeric values). See the DestinyComponentType enum for valid components to request. You must request at least one component to receive results.", "type": "array", "items": { "format": "int32", "description": "Represents the possible components that can be returned from Destiny \"Get\" calls such as GetProfile, GetCharacter, GetVendor etc...\r\nWhen making one of these requests, you will pass one or more of these components as a comma separated list in the \"?components=\" querystring parameter. For instance, if you want baseline Profile data, Character Data, and character progressions, you would pass \"?components=Profiles,Characters,CharacterProgressions\" You may use either the numerical or string values.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyComponentType" } } }, { "name": "destinyMembershipId", "in": "path", "description": "Destiny membership ID.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "A valid non-BungieNet membership type.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "The response contract for GetDestinyCharacter, with components that can be returned for character and item-level data.", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.Responses.DestinyCharacterResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/Clan/{groupId}/WeeklyRewardState/": { "get": { "tags": [ "Destiny2" ], "description": "Returns information on the weekly clan rewards and if the clan has earned them or not. Note that this will always report rewards as not redeemed.", "operationId": "Destiny2.GetClanWeeklyRewardState", "parameters": [ { "name": "groupId", "in": "path", "description": "A valid group id of clan.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "responses": { "200": { "description": "Represents a runtime instance of a user's milestone status. Live Milestone data should be combined with DestinyMilestoneDefinition data to show the user a picture of what is available for them to do in the game, and their status in regards to said \"things to do.\" Consider it a big, wonky to-do list, or Advisors 3.0 for those who remember the Destiny 1 API.", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.Milestones.DestinyMilestone" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/Clan/ClanBannerDictionary/": { "get": { "tags": [ "Destiny2" ], "description": "Returns the dictionary of values for the Clan Banner", "operationId": "Destiny2.GetClanBannerSource", "parameters": [], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Config.ClanBanner.ClanBannerSource" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/{membershipType}/Profile/{destinyMembershipId}/Item/{itemInstanceId}/": { "get": { "tags": [ "Destiny2" ], "description": "Retrieve the details of an instanced Destiny Item. An instanced Destiny item is one with an ItemInstanceId. Non-instanced items, such as materials, have no useful instance-specific details and thus are not queryable here.", "operationId": "Destiny2.GetItem", "parameters": [ { "name": "components", "in": "query", "description": "A comma separated list of components to return (as strings or numeric values). See the DestinyComponentType enum for valid components to request. You must request at least one component to receive results.", "type": "array", "items": { "format": "int32", "description": "Represents the possible components that can be returned from Destiny \"Get\" calls such as GetProfile, GetCharacter, GetVendor etc...\r\nWhen making one of these requests, you will pass one or more of these components as a comma separated list in the \"?components=\" querystring parameter. For instance, if you want baseline Profile data, Character Data, and character progressions, you would pass \"?components=Profiles,Characters,CharacterProgressions\" You may use either the numerical or string values.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyComponentType" } } }, { "name": "destinyMembershipId", "in": "path", "description": "The membership ID of the destiny profile.", "required": true, "type": "integer", "format": "int64" }, { "name": "itemInstanceId", "in": "path", "description": "The Instance ID of the destiny item.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "A valid non-BungieNet membership type.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "The response object for retrieving an individual instanced item. None of these components are relevant for an item that doesn't have an \"itemInstanceId\": for those, get your information from the DestinyInventoryDefinition.", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.Responses.DestinyItemResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/{membershipType}/Profile/{destinyMembershipId}/Character/{characterId}/Vendors/": { "get": { "tags": [ "Destiny2" ], "description": "Get currently available vendors from the list of vendors that can possibly have rotating inventory. Note that this does not include things like preview vendors and vendors-as-kiosks, neither of whom have rotating/dynamic inventories. Use their definitions as-is for those.", "operationId": "Destiny2.GetVendors", "parameters": [ { "name": "characterId", "in": "path", "description": "The Destiny Character ID of the character for whom we're getting vendor info.", "required": true, "type": "integer", "format": "int64" }, { "name": "components", "in": "query", "description": "A comma separated list of components to return (as strings or numeric values). See the DestinyComponentType enum for valid components to request. You must request at least one component to receive results.", "type": "array", "items": { "format": "int32", "description": "Represents the possible components that can be returned from Destiny \"Get\" calls such as GetProfile, GetCharacter, GetVendor etc...\r\nWhen making one of these requests, you will pass one or more of these components as a comma separated list in the \"?components=\" querystring parameter. For instance, if you want baseline Profile data, Character Data, and character progressions, you would pass \"?components=Profiles,Characters,CharacterProgressions\" You may use either the numerical or string values.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyComponentType" } } }, { "name": "destinyMembershipId", "in": "path", "description": "Destiny membership ID of another user. You may be denied.", "required": true, "type": "integer", "format": "int64" }, { "name": "filter", "in": "query", "description": "The filter of what vendors and items to return, if any.", "type": "integer", "format": "int32" }, { "name": "membershipType", "in": "path", "description": "A valid non-BungieNet membership type.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "A response containing all of the components for all requested vendors.", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.Responses.DestinyVendorsResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/{membershipType}/Profile/{destinyMembershipId}/Character/{characterId}/Vendors/{vendorHash}/": { "get": { "tags": [ "Destiny2" ], "description": "Get the details of a specific Vendor.", "operationId": "Destiny2.GetVendor", "parameters": [ { "name": "characterId", "in": "path", "description": "The Destiny Character ID of the character for whom we're getting vendor info.", "required": true, "type": "integer", "format": "int64" }, { "name": "components", "in": "query", "description": "A comma separated list of components to return (as strings or numeric values). See the DestinyComponentType enum for valid components to request. You must request at least one component to receive results.", "type": "array", "items": { "format": "int32", "description": "Represents the possible components that can be returned from Destiny \"Get\" calls such as GetProfile, GetCharacter, GetVendor etc...\r\nWhen making one of these requests, you will pass one or more of these components as a comma separated list in the \"?components=\" querystring parameter. For instance, if you want baseline Profile data, Character Data, and character progressions, you would pass \"?components=Profiles,Characters,CharacterProgressions\" You may use either the numerical or string values.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyComponentType" } } }, { "name": "destinyMembershipId", "in": "path", "description": "Destiny membership ID of another user. You may be denied.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "A valid non-BungieNet membership type.", "required": true, "type": "integer", "format": "int32" }, { "name": "vendorHash", "in": "path", "description": "The Hash identifier of the Vendor to be returned.", "required": true, "type": "integer", "format": "uint32" } ], "deprecated": false, "responses": { "200": { "description": "A response containing all of the components for a vendor.", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.Responses.DestinyVendorResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/Vendors/": { "get": { "tags": [ "Destiny2", "Preview" ], "description": "Get items available from vendors where the vendors have items for sale that are common for everyone. If any portion of the Vendor's available inventory is character or account specific, we will be unable to return their data from this endpoint due to the way that available inventory is computed. As I am often guilty of saying: 'It's a long story...'", "operationId": "Destiny2.GetPublicVendors", "parameters": [ { "name": "components", "in": "query", "description": "A comma separated list of components to return (as strings or numeric values). See the DestinyComponentType enum for valid components to request. You must request at least one component to receive results.", "type": "array", "items": { "format": "int32", "description": "Represents the possible components that can be returned from Destiny \"Get\" calls such as GetProfile, GetCharacter, GetVendor etc...\r\nWhen making one of these requests, you will pass one or more of these components as a comma separated list in the \"?components=\" querystring parameter. For instance, if you want baseline Profile data, Character Data, and character progressions, you would pass \"?components=Profiles,Characters,CharacterProgressions\" You may use either the numerical or string values.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyComponentType" } } } ], "deprecated": false, "responses": { "200": { "description": "A response containing all valid components for the public Vendors endpoint.\r\n It is a decisively smaller subset of data compared to what we can get when we know the specific user making the request.\r\n If you want any of the other data - item details, whether or not you can buy it, etc... you'll have to call in the context of a character. I know, sad but true.", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.Responses.DestinyPublicVendorsResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } }, "x-preview": true } }, "/Destiny2/{membershipType}/Profile/{destinyMembershipId}/Character/{characterId}/Collectibles/{collectiblePresentationNodeHash}/": { "get": { "tags": [ "Destiny2" ], "description": "Given a Presentation Node that has Collectibles as direct descendants, this will return item details about those descendants in the context of the requesting character.", "operationId": "Destiny2.GetCollectibleNodeDetails", "parameters": [ { "name": "characterId", "in": "path", "description": "The Destiny Character ID of the character for whom we're getting collectible detail info.", "required": true, "type": "integer", "format": "int64" }, { "name": "collectiblePresentationNodeHash", "in": "path", "description": "The hash identifier of the Presentation Node for whom we should return collectible details. Details will only be returned for collectibles that are direct descendants of this node.", "required": true, "type": "integer", "format": "uint32" }, { "name": "components", "in": "query", "description": "A comma separated list of components to return (as strings or numeric values). See the DestinyComponentType enum for valid components to request. You must request at least one component to receive results.", "type": "array", "items": { "format": "int32", "description": "Represents the possible components that can be returned from Destiny \"Get\" calls such as GetProfile, GetCharacter, GetVendor etc...\r\nWhen making one of these requests, you will pass one or more of these components as a comma separated list in the \"?components=\" querystring parameter. For instance, if you want baseline Profile data, Character Data, and character progressions, you would pass \"?components=Profiles,Characters,CharacterProgressions\" You may use either the numerical or string values.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyComponentType" } } }, { "name": "destinyMembershipId", "in": "path", "description": "Destiny membership ID of another user. You may be denied.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "A valid non-BungieNet membership type.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "Returns the detailed information about a Collectible Presentation Node and any Collectibles that are direct descendants.", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.Responses.DestinyCollectibleNodeDetailResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/Actions/Items/TransferItem/": { "post": { "tags": [ "Destiny2" ], "description": "Transfer an item to/from your vault. You must have a valid Destiny account. You must also pass BOTH a reference AND an instance ID if it's an instanced item. itshappening.gif", "operationId": "Destiny2.TransferItem", "parameters": [], "deprecated": false, "security": [ { "oauth2": [ "MoveEquipDestinyItems" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int32", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } }, "x-documentation-attributes": { "ThrottleSecondsBetweenActionPerUser": "0.1" } } }, "/Destiny2/Actions/Items/PullFromPostmaster/": { "post": { "tags": [ "Destiny2" ], "description": "Extract an item from the Postmaster, with whatever implications that may entail. You must have a valid Destiny account. You must also pass BOTH a reference AND an instance ID if it's an instanced item.", "operationId": "Destiny2.PullFromPostmaster", "parameters": [], "deprecated": false, "security": [ { "oauth2": [ "MoveEquipDestinyItems" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int32", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } }, "x-documentation-attributes": { "ThrottleSecondsBetweenActionPerUser": "0.1" } } }, "/Destiny2/Actions/Items/EquipItem/": { "post": { "tags": [ "Destiny2" ], "description": "Equip an item. You must have a valid Destiny Account, and either be in a social space, in orbit, or offline.", "operationId": "Destiny2.EquipItem", "parameters": [], "deprecated": false, "security": [ { "oauth2": [ "MoveEquipDestinyItems" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int32", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } }, "x-documentation-attributes": { "ThrottleSecondsBetweenActionPerUser": "0.1" } } }, "/Destiny2/Actions/Items/EquipItems/": { "post": { "tags": [ "Destiny2" ], "description": "Equip a list of items by itemInstanceIds. You must have a valid Destiny Account, and either be in a social space, in orbit, or offline. Any items not found on your character will be ignored.", "operationId": "Destiny2.EquipItems", "parameters": [], "deprecated": false, "security": [ { "oauth2": [ "MoveEquipDestinyItems" ] } ], "responses": { "200": { "description": "The results of a bulk Equipping operation performed through the Destiny API.", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.DestinyEquipItemResults" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } }, "x-documentation-attributes": { "ThrottleSecondsBetweenActionPerUser": "0.1" } } }, "/Destiny2/Actions/Loadouts/EquipLoadout/": { "post": { "tags": [ "Destiny2" ], "description": "Equip a loadout. You must have a valid Destiny Account, and either be in a social space, in orbit, or offline.", "operationId": "Destiny2.EquipLoadout", "parameters": [], "deprecated": false, "security": [ { "oauth2": [ "MoveEquipDestinyItems" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int32", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } }, "x-documentation-attributes": { "ThrottleSecondsBetweenActionPerUser": "1" } } }, "/Destiny2/Actions/Loadouts/SnapshotLoadout/": { "post": { "tags": [ "Destiny2" ], "description": "Snapshot a loadout with the currently equipped items.", "operationId": "Destiny2.SnapshotLoadout", "parameters": [], "deprecated": false, "security": [ { "oauth2": [ "MoveEquipDestinyItems" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int32", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } }, "x-documentation-attributes": { "ThrottleSecondsBetweenActionPerUser": "1" } } }, "/Destiny2/Actions/Loadouts/UpdateLoadoutIdentifiers/": { "post": { "tags": [ "Destiny2" ], "description": "Update the color, icon, and name of a loadout.", "operationId": "Destiny2.UpdateLoadoutIdentifiers", "parameters": [], "deprecated": false, "security": [ { "oauth2": [ "MoveEquipDestinyItems" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int32", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } }, "x-documentation-attributes": { "ThrottleSecondsBetweenActionPerUser": "1" } } }, "/Destiny2/Actions/Loadouts/ClearLoadout/": { "post": { "tags": [ "Destiny2" ], "description": "Clear the identifiers and items of a loadout.", "operationId": "Destiny2.ClearLoadout", "parameters": [], "deprecated": false, "security": [ { "oauth2": [ "MoveEquipDestinyItems" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int32", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } }, "x-documentation-attributes": { "ThrottleSecondsBetweenActionPerUser": "1" } } }, "/Destiny2/Actions/Items/SetLockState/": { "post": { "tags": [ "Destiny2" ], "description": "Set the Lock State for an instanced item. You must have a valid Destiny Account.", "operationId": "Destiny2.SetItemLockState", "parameters": [], "deprecated": false, "security": [ { "oauth2": [ "MoveEquipDestinyItems" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int32", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } }, "x-documentation-attributes": { "ThrottleSecondsBetweenActionPerUser": "0.1" } } }, "/Destiny2/Actions/Items/SetTrackedState/": { "post": { "tags": [ "Destiny2" ], "description": "Set the Tracking State for an instanced item, if that item is a Quest or Bounty. You must have a valid Destiny Account. Yeah, it's an item.", "operationId": "Destiny2.SetQuestTrackedState", "parameters": [], "deprecated": false, "security": [ { "oauth2": [ "MoveEquipDestinyItems" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int32", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } }, "x-documentation-attributes": { "ThrottleSecondsBetweenActionPerUser": "1" } } }, "/Destiny2/Actions/Items/InsertSocketPlug/": { "post": { "tags": [ "Destiny2", "Preview" ], "description": "Insert a plug into a socketed item. I know how it sounds, but I assure you it's much more G-rated than you might be guessing. We haven't decided yet whether this will be able to insert plugs that have side effects, but if we do it will require special scope permission for an application attempting to do so. You must have a valid Destiny Account, and either be in a social space, in orbit, or offline. Request must include proof of permission for 'InsertPlugs' from the account owner.", "operationId": "Destiny2.InsertSocketPlug", "parameters": [], "deprecated": false, "security": [ { "oauth2": [ "AdvancedWriteActions" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.Responses.DestinyItemChangeResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } }, "x-preview": true, "x-documentation-attributes": { "ThrottleSecondsBetweenActionPerUser": "0.5" } } }, "/Destiny2/Actions/Items/InsertSocketPlugFree/": { "post": { "tags": [ "Destiny2", "Preview" ], "description": "Insert a 'free' plug into an item's socket. This does not require 'Advanced Write Action' authorization and is available to 3rd-party apps, but will only work on 'free and reversible' socket actions (Perks, Armor Mods, Shaders, Ornaments, etc.). You must have a valid Destiny Account, and the character must either be in a social space, in orbit, or offline.", "operationId": "Destiny2.InsertSocketPlugFree", "parameters": [], "deprecated": false, "security": [ { "oauth2": [ "MoveEquipDestinyItems" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.Responses.DestinyItemChangeResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } }, "x-preview": true, "x-documentation-attributes": { "ThrottleSecondsBetweenActionPerUser": "0.5" } } }, "/Destiny2/Stats/PostGameCarnageReport/{activityId}/": { "get": { "tags": [ "Destiny2" ], "description": "Gets the available post game carnage report for the activity ID.", "operationId": "Destiny2.GetPostGameCarnageReport", "parameters": [ { "name": "activityId", "in": "path", "description": "The ID of the activity whose PGCR is requested.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyPostGameCarnageReportData" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/Stats/PostGameCarnageReport/{activityId}/Report/": { "post": { "tags": [ "Destiny2" ], "description": "Report a player that you met in an activity that was engaging in ToS-violating activities. Both you and the offending player must have played in the activityId passed in. Please use this judiciously and only when you have strong suspicions of violation, pretty please.", "operationId": "Destiny2.ReportOffensivePostGameCarnageReportPlayer", "parameters": [ { "name": "activityId", "in": "path", "description": "The ID of the activity where you ran into the brigand that you're reporting.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "security": [ { "oauth2": [ "BnetWrite" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int32", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/Stats/Definition/": { "get": { "tags": [ "Destiny2" ], "description": "Gets historical stats definitions.", "operationId": "Destiny2.GetHistoricalStatsDefinition", "parameters": [], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.HistoricalStats.Definitions.DestinyHistoricalStatsDefinition" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/Stats/Leaderboards/Clans/{groupId}/": { "get": { "tags": [ "Destiny2", "Preview" ], "description": "Gets leaderboards with the signed in user's friends and the supplied destinyMembershipId as the focus. PREVIEW: This endpoint is still in beta, and may experience rough edges. The schema is in final form, but there may be bugs that prevent desirable operation.", "operationId": "Destiny2.GetClanLeaderboards", "parameters": [ { "name": "groupId", "in": "path", "description": "Group ID of the clan whose leaderboards you wish to fetch.", "required": true, "type": "integer", "format": "int64" }, { "name": "maxtop", "in": "query", "description": "Maximum number of top players to return. Use a large number to get entire leaderboard.", "type": "integer", "format": "int32" }, { "name": "modes", "in": "query", "description": "List of game modes for which to get leaderboards. See the documentation for DestinyActivityModeType for valid values, and pass in string representation, comma delimited.", "type": "string" }, { "name": "statid", "in": "query", "description": "ID of stat to return rather than returning all Leaderboard stats.", "type": "string" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyLeaderboard" } } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } }, "x-preview": true } }, "/Destiny2/Stats/AggregateClanStats/{groupId}/": { "get": { "tags": [ "Destiny2", "Preview" ], "description": "Gets aggregated stats for a clan using the same categories as the clan leaderboards. PREVIEW: This endpoint is still in beta, and may experience rough edges. The schema is in final form, but there may be bugs that prevent desirable operation.", "operationId": "Destiny2.GetClanAggregateStats", "parameters": [ { "name": "groupId", "in": "path", "description": "Group ID of the clan whose leaderboards you wish to fetch.", "required": true, "type": "integer", "format": "int64" }, { "name": "modes", "in": "query", "description": "List of game modes for which to get leaderboards. See the documentation for DestinyActivityModeType for valid values, and pass in string representation, comma delimited.", "type": "string" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "array", "items": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyClanAggregateStat" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } }, "x-preview": true } }, "/Destiny2/{membershipType}/Account/{destinyMembershipId}/Stats/Leaderboards/": { "get": { "tags": [ "Destiny2", "Preview" ], "description": "Gets leaderboards with the signed in user's friends and the supplied destinyMembershipId as the focus. PREVIEW: This endpoint has not yet been implemented. It is being returned for a preview of future functionality, and for public comment/suggestion/preparation.", "operationId": "Destiny2.GetLeaderboards", "parameters": [ { "name": "destinyMembershipId", "in": "path", "description": "The Destiny membershipId of the user to retrieve.", "required": true, "type": "integer", "format": "int64" }, { "name": "maxtop", "in": "query", "description": "Maximum number of top players to return. Use a large number to get entire leaderboard.", "type": "integer", "format": "int32" }, { "name": "membershipType", "in": "path", "description": "A valid non-BungieNet membership type.", "required": true, "type": "integer", "format": "int32" }, { "name": "modes", "in": "query", "description": "List of game modes for which to get leaderboards. See the documentation for DestinyActivityModeType for valid values, and pass in string representation, comma delimited.", "type": "string" }, { "name": "statid", "in": "query", "description": "ID of stat to return rather than returning all Leaderboard stats.", "type": "string" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyLeaderboard" } } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } }, "x-preview": true } }, "/Destiny2/Stats/Leaderboards/{membershipType}/{destinyMembershipId}/{characterId}/": { "get": { "tags": [ "Destiny2", "Preview" ], "description": "Gets leaderboards with the signed in user's friends and the supplied destinyMembershipId as the focus. PREVIEW: This endpoint is still in beta, and may experience rough edges. The schema is in final form, but there may be bugs that prevent desirable operation.", "operationId": "Destiny2.GetLeaderboardsForCharacter", "parameters": [ { "name": "characterId", "in": "path", "description": "The specific character to build the leaderboard around for the provided Destiny Membership.", "required": true, "type": "integer", "format": "int64" }, { "name": "destinyMembershipId", "in": "path", "description": "The Destiny membershipId of the user to retrieve.", "required": true, "type": "integer", "format": "int64" }, { "name": "maxtop", "in": "query", "description": "Maximum number of top players to return. Use a large number to get entire leaderboard.", "type": "integer", "format": "int32" }, { "name": "membershipType", "in": "path", "description": "A valid non-BungieNet membership type.", "required": true, "type": "integer", "format": "int32" }, { "name": "modes", "in": "query", "description": "List of game modes for which to get leaderboards. See the documentation for DestinyActivityModeType for valid values, and pass in string representation, comma delimited.", "type": "string" }, { "name": "statid", "in": "query", "description": "ID of stat to return rather than returning all Leaderboard stats.", "type": "string" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyLeaderboard" } } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } }, "x-preview": true } }, "/Destiny2/Armory/Search/{type}/{searchTerm}/": { "get": { "tags": [ "Destiny2" ], "description": "Gets a page list of Destiny items.", "operationId": "Destiny2.SearchDestinyEntities", "parameters": [ { "name": "page", "in": "query", "description": "Page number to return, starting with 0.", "type": "integer", "format": "int32" }, { "name": "searchTerm", "in": "path", "description": "The string to use when searching for Destiny entities.", "required": true, "type": "string" }, { "name": "type", "in": "path", "description": "The type of entity for whom you would like results. These correspond to the entity's definition contract name. For instance, if you are looking for items, this property should be 'DestinyInventoryItemDefinition'.", "required": true, "type": "string" } ], "deprecated": false, "responses": { "200": { "description": "The results of a search for Destiny content. This will be improved on over time, I've been doing some experimenting to see what might be useful.", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.Definitions.DestinyEntitySearchResult" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/{membershipType}/Account/{destinyMembershipId}/Character/{characterId}/Stats/": { "get": { "tags": [ "Destiny2" ], "description": "Gets historical stats for indicated character.", "operationId": "Destiny2.GetHistoricalStats", "parameters": [ { "name": "characterId", "in": "path", "description": "The id of the character to retrieve. You can omit this character ID or set it to 0 to get aggregate stats across all characters.", "required": true, "type": "integer", "format": "int64" }, { "name": "dayend", "in": "query", "description": "Last day to return when daily stats are requested. Use the format YYYY-MM-DD. Currently, we cannot allow more than 31 days of daily data to be requested in a single request.", "type": "string", "format": "date-time" }, { "name": "daystart", "in": "query", "description": "First day to return when daily stats are requested. Use the format YYYY-MM-DD. Currently, we cannot allow more than 31 days of daily data to be requested in a single request.", "type": "string", "format": "date-time" }, { "name": "destinyMembershipId", "in": "path", "description": "The Destiny membershipId of the user to retrieve.", "required": true, "type": "integer", "format": "int64" }, { "name": "groups", "in": "query", "description": "Group of stats to include, otherwise only general stats are returned. Comma separated list is allowed. Values: General, Weapons, Medals", "type": "array", "items": { "format": "int32", "description": "If the enum value is > 100, it is a \"special\" group that cannot be queried for directly (special cases apply to when they are returned, and are not relevant in general cases)", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.HistoricalStats.Definitions.DestinyStatsGroupType" } } }, { "name": "membershipType", "in": "path", "description": "A valid non-BungieNet membership type.", "required": true, "type": "integer", "format": "int32" }, { "name": "modes", "in": "query", "description": "Game modes to return. See the documentation for DestinyActivityModeType for valid values, and pass in string representation, comma delimited.", "type": "array", "items": { "format": "int32", "description": "For historical reasons, this list will have both D1 and D2-relevant Activity Modes in it. Please don't take this to mean that some D1-only feature is coming back!", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.HistoricalStats.Definitions.DestinyActivityModeType" } } }, { "name": "periodType", "in": "query", "description": "Indicates a specific period type to return. Optional. May be: Daily, AllTime, or Activity", "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsByPeriod" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/{membershipType}/Account/{destinyMembershipId}/Stats/": { "get": { "tags": [ "Destiny2" ], "description": "Gets aggregate historical stats organized around each character for a given account.", "operationId": "Destiny2.GetHistoricalStatsForAccount", "parameters": [ { "name": "destinyMembershipId", "in": "path", "description": "The Destiny membershipId of the user to retrieve.", "required": true, "type": "integer", "format": "int64" }, { "name": "groups", "in": "query", "description": "Groups of stats to include, otherwise only general stats are returned. Comma separated list is allowed. Values: General, Weapons, Medals.", "type": "array", "items": { "format": "int32", "description": "If the enum value is > 100, it is a \"special\" group that cannot be queried for directly (special cases apply to when they are returned, and are not relevant in general cases)", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.HistoricalStats.Definitions.DestinyStatsGroupType" } } }, { "name": "membershipType", "in": "path", "description": "A valid non-BungieNet membership type.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsAccountResult" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/{membershipType}/Account/{destinyMembershipId}/Character/{characterId}/Stats/Activities/": { "get": { "tags": [ "Destiny2" ], "description": "Gets activity history stats for indicated character.", "operationId": "Destiny2.GetActivityHistory", "parameters": [ { "name": "characterId", "in": "path", "description": "The id of the character to retrieve.", "required": true, "type": "integer", "format": "int64" }, { "name": "count", "in": "query", "description": "Number of rows to return", "type": "integer", "format": "int32" }, { "name": "destinyMembershipId", "in": "path", "description": "The Destiny membershipId of the user to retrieve.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "A valid non-BungieNet membership type.", "required": true, "type": "integer", "format": "int32" }, { "name": "mode", "in": "query", "description": "A filter for the activity mode to be returned. None returns all activities. See the documentation for DestinyActivityModeType for valid values, and pass in string representation.", "type": "integer", "format": "int32" }, { "name": "page", "in": "query", "description": "Page number to return, starting with 0.", "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyActivityHistoryResults" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/{membershipType}/Account/{destinyMembershipId}/Character/{characterId}/Stats/UniqueWeapons/": { "get": { "tags": [ "Destiny2" ], "description": "Gets details about unique weapon usage, including all exotic weapons.", "operationId": "Destiny2.GetUniqueWeaponHistory", "parameters": [ { "name": "characterId", "in": "path", "description": "The id of the character to retrieve.", "required": true, "type": "integer", "format": "int64" }, { "name": "destinyMembershipId", "in": "path", "description": "The Destiny membershipId of the user to retrieve.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "A valid non-BungieNet membership type.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalWeaponStatsData" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/{membershipType}/Account/{destinyMembershipId}/Character/{characterId}/Stats/AggregateActivityStats/": { "get": { "tags": [ "Destiny2" ], "description": "Gets all activities the character has participated in together with aggregate statistics for those activities.", "operationId": "Destiny2.GetDestinyAggregateActivityStats", "parameters": [ { "name": "characterId", "in": "path", "description": "The specific character whose activities should be returned.", "required": true, "type": "integer", "format": "int64" }, { "name": "destinyMembershipId", "in": "path", "description": "The Destiny membershipId of the user to retrieve.", "required": true, "type": "integer", "format": "int64" }, { "name": "membershipType", "in": "path", "description": "A valid non-BungieNet membership type.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyAggregateActivityResults" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/Milestones/{milestoneHash}/Content/": { "get": { "tags": [ "Destiny2" ], "description": "Gets custom localized content for the milestone of the given hash, if it exists.", "operationId": "Destiny2.GetPublicMilestoneContent", "parameters": [ { "name": "milestoneHash", "in": "path", "description": "The identifier for the milestone to be returned.", "required": true, "type": "integer", "format": "uint32" } ], "deprecated": false, "responses": { "200": { "description": "Represents localized, extended content related to Milestones. This is intentionally returned by a separate endpoint and not with Character-level Milestone data because we do not put localized data into standard Destiny responses, both for brevity of response and for caching purposes. If you really need this data, hit the Milestone Content endpoint.", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.Milestones.DestinyMilestoneContent" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/Milestones/": { "get": { "tags": [ "Destiny2" ], "description": "Gets public information about currently available Milestones.", "operationId": "Destiny2.GetPublicMilestones", "parameters": [], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Milestones.DestinyPublicMilestone" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/Awa/Initialize/": { "post": { "tags": [ "Destiny2" ], "description": "Initialize a request to perform an advanced write action.", "operationId": "Destiny2.AwaInitializeRequest", "parameters": [], "deprecated": false, "security": [ { "oauth2": [ "AdvancedWriteActions" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.Advanced.AwaInitializeResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/Awa/AwaProvideAuthorizationResult/": { "post": { "tags": [ "Destiny2" ], "description": "Provide the result of the user interaction. Called by the Bungie Destiny App to approve or reject a request.", "operationId": "Destiny2.AwaProvideAuthorizationResult", "parameters": [], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int32", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Destiny2/Awa/GetActionToken/{correlationId}/": { "get": { "tags": [ "Destiny2" ], "description": "Returns the action token if user approves the request.", "operationId": "Destiny2.AwaGetActionToken", "parameters": [ { "name": "correlationId", "in": "path", "description": "The identifier for the advanced write action request.", "required": true, "type": "string" } ], "deprecated": false, "security": [ { "oauth2": [ "AdvancedWriteActions" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Destiny.Advanced.AwaAuthorizationResult" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/CommunityContent/Get/{sort}/{mediaFilter}/{page}/": { "get": { "tags": [ "CommunityContent" ], "description": "Returns community content.", "operationId": "CommunityContent.GetCommunityContent", "parameters": [ { "name": "mediaFilter", "in": "path", "description": "The type of media to get", "required": true, "type": "integer", "format": "int32" }, { "name": "page", "in": "path", "description": "Zero based page", "required": true, "type": "integer", "format": "int32" }, { "name": "sort", "in": "path", "description": "The sort mode.", "required": true, "type": "integer", "format": "byte" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Forum.PostSearchResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Trending/Categories/": { "get": { "tags": [ "Trending" ], "description": "Returns trending items for Bungie.net, collapsed into the first page of items per category. For pagination within a category, call GetTrendingCategory.", "operationId": "Trending.GetTrendingCategories", "parameters": [], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Trending.TrendingCategories" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Trending/Categories/{categoryId}/{pageNumber}/": { "get": { "tags": [ "Trending" ], "description": "Returns paginated lists of trending items for a category.", "operationId": "Trending.GetTrendingCategory", "parameters": [ { "name": "categoryId", "in": "path", "description": "The ID of the category for whom you want additional results.", "required": true, "type": "string" }, { "name": "pageNumber", "in": "path", "description": "The page # of results to return.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/SearchResultOfTrendingEntry" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Trending/Details/{trendingEntryType}/{identifier}/": { "get": { "tags": [ "Trending" ], "description": "Returns the detailed results for a specific trending entry. Note that trending entries are uniquely identified by a combination of *both* the TrendingEntryType *and* the identifier: the identifier alone is not guaranteed to be globally unique.", "operationId": "Trending.GetTrendingEntryDetail", "parameters": [ { "name": "identifier", "in": "path", "description": "The identifier for the entity to be returned.", "required": true, "type": "string" }, { "name": "trendingEntryType", "in": "path", "description": "The type of entity to be returned.", "required": true, "type": "integer", "format": "int32" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Trending.TrendingDetail" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Fireteam/Clan/{groupId}/ActiveCount/": { "get": { "tags": [ "Fireteam" ], "description": "Gets a count of all active non-public fireteams for the specified clan. Maximum value returned is 25.", "operationId": "Fireteam.GetActivePrivateClanFireteamCount", "parameters": [ { "name": "groupId", "in": "path", "description": "The group id of the clan.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "security": [ { "oauth2": [ "ReadGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "format": "int32", "type": "integer" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Fireteam/Clan/{groupId}/Available/{platform}/{activityType}/{dateRange}/{slotFilter}/{publicOnly}/{page}/": { "get": { "tags": [ "Fireteam" ], "description": "Gets a listing of all of this clan's fireteams that are have available slots. Caller is not checked for join criteria so caching is maximized.", "operationId": "Fireteam.GetAvailableClanFireteams", "parameters": [ { "name": "activityType", "in": "path", "description": "The activity type to filter by.", "required": true, "type": "integer", "format": "int32" }, { "name": "dateRange", "in": "path", "description": "The date range to grab available fireteams.", "required": true, "type": "integer", "format": "byte" }, { "name": "excludeImmediate", "in": "query", "description": "If you wish the result to exclude immediate fireteams, set this to true. Immediate-only can be forced using the dateRange enum.", "type": "boolean" }, { "name": "groupId", "in": "path", "description": "The group id of the clan.", "required": true, "type": "integer", "format": "int64" }, { "name": "langFilter", "in": "query", "description": "An optional language filter.", "type": "string" }, { "name": "page", "in": "path", "description": "Zero based page", "required": true, "type": "integer", "format": "int32" }, { "name": "platform", "in": "path", "description": "The platform filter.", "required": true, "type": "integer", "format": "byte" }, { "name": "publicOnly", "in": "path", "description": "Determines public/private filtering.", "required": true, "type": "integer", "format": "byte" }, { "name": "slotFilter", "in": "path", "description": "Filters based on available slots", "required": true, "type": "integer", "format": "byte" } ], "deprecated": false, "security": [ { "oauth2": [ "ReadGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/SearchResultOfFireteamSummary" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Fireteam/Search/Available/{platform}/{activityType}/{dateRange}/{slotFilter}/{page}/": { "get": { "tags": [ "Fireteam" ], "description": "Gets a listing of all public fireteams starting now with open slots. Caller is not checked for join criteria so caching is maximized.", "operationId": "Fireteam.SearchPublicAvailableClanFireteams", "parameters": [ { "name": "activityType", "in": "path", "description": "The activity type to filter by.", "required": true, "type": "integer", "format": "int32" }, { "name": "dateRange", "in": "path", "description": "The date range to grab available fireteams.", "required": true, "type": "integer", "format": "byte" }, { "name": "excludeImmediate", "in": "query", "description": "If you wish the result to exclude immediate fireteams, set this to true. Immediate-only can be forced using the dateRange enum.", "type": "boolean" }, { "name": "langFilter", "in": "query", "description": "An optional language filter.", "type": "string" }, { "name": "page", "in": "path", "description": "Zero based page", "required": true, "type": "integer", "format": "int32" }, { "name": "platform", "in": "path", "description": "The platform filter.", "required": true, "type": "integer", "format": "byte" }, { "name": "slotFilter", "in": "path", "description": "Filters based on available slots", "required": true, "type": "integer", "format": "byte" } ], "deprecated": false, "security": [ { "oauth2": [ "ReadGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/SearchResultOfFireteamSummary" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Fireteam/Clan/{groupId}/My/{platform}/{includeClosed}/{page}/": { "get": { "tags": [ "Fireteam" ], "description": "Gets a listing of all fireteams that caller is an applicant, a member, or an alternate of.", "operationId": "Fireteam.GetMyClanFireteams", "parameters": [ { "name": "groupFilter", "in": "query", "description": "If true, filter by clan. Otherwise, ignore the clan and show all of the user's fireteams.", "type": "boolean" }, { "name": "groupId", "in": "path", "description": "The group id of the clan. (This parameter is ignored unless the optional query parameter groupFilter is true).", "required": true, "type": "integer", "format": "int64" }, { "name": "includeClosed", "in": "path", "description": "If true, return fireteams that have been closed.", "required": true, "type": "boolean" }, { "name": "langFilter", "in": "query", "description": "An optional language filter.", "type": "string" }, { "name": "page", "in": "path", "description": "Deprecated parameter, ignored.", "required": true, "deprecated": true, "type": "integer", "format": "int32" }, { "name": "platform", "in": "path", "description": "The platform filter.", "required": true, "type": "integer", "format": "byte" } ], "deprecated": false, "security": [ { "oauth2": [ "ReadGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/SearchResultOfFireteamResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Fireteam/Clan/{groupId}/Summary/{fireteamId}/": { "get": { "tags": [ "Fireteam" ], "description": "Gets a specific fireteam.", "operationId": "Fireteam.GetClanFireteam", "parameters": [ { "name": "fireteamId", "in": "path", "description": "The unique id of the fireteam.", "required": true, "type": "integer", "format": "int64" }, { "name": "groupId", "in": "path", "description": "The group id of the clan.", "required": true, "type": "integer", "format": "int64" } ], "deprecated": false, "security": [ { "oauth2": [ "ReadGroups" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Fireteam.FireteamResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Social/Friends/": { "get": { "tags": [ "Social" ], "description": "Returns your Bungie Friend list", "operationId": "Social.GetFriendList", "parameters": [], "deprecated": false, "security": [ { "oauth2": [ "ReadUserData" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Social.Friends.BungieFriendListResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Social/Friends/Requests/": { "get": { "tags": [ "Social" ], "description": "Returns your friend request queue.", "operationId": "Social.GetFriendRequestList", "parameters": [], "deprecated": false, "security": [ { "oauth2": [ "ReadUserData" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Social.Friends.BungieFriendRequestListResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Social/Friends/Add/{membershipId}/": { "post": { "tags": [ "Social" ], "description": "Requests a friend relationship with the target user. Any of the target user's linked membership ids are valid inputs.", "operationId": "Social.IssueFriendRequest", "parameters": [ { "name": "membershipId", "in": "path", "description": "The membership id of the user you wish to add.", "required": true, "type": "string" } ], "deprecated": false, "security": [ { "oauth2": [ "BnetWrite" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "boolean" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Social/Friends/Requests/Accept/{membershipId}/": { "post": { "tags": [ "Social" ], "description": "Accepts a friend relationship with the target user. The user must be on your incoming friend request list, though no error will occur if they are not.", "operationId": "Social.AcceptFriendRequest", "parameters": [ { "name": "membershipId", "in": "path", "description": "The membership id of the user you wish to accept.", "required": true, "type": "string" } ], "deprecated": false, "security": [ { "oauth2": [ "BnetWrite" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "boolean" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Social/Friends/Requests/Decline/{membershipId}/": { "post": { "tags": [ "Social" ], "description": "Declines a friend relationship with the target user. The user must be on your incoming friend request list, though no error will occur if they are not.", "operationId": "Social.DeclineFriendRequest", "parameters": [ { "name": "membershipId", "in": "path", "description": "The membership id of the user you wish to decline.", "required": true, "type": "string" } ], "deprecated": false, "security": [ { "oauth2": [ "BnetWrite" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "boolean" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Social/Friends/Remove/{membershipId}/": { "post": { "tags": [ "Social" ], "description": "Remove a friend relationship with the target user. The user must be on your friend list, though no error will occur if they are not.", "operationId": "Social.RemoveFriend", "parameters": [ { "name": "membershipId", "in": "path", "description": "The membership id of the user you wish to remove.", "required": true, "type": "string" } ], "deprecated": false, "security": [ { "oauth2": [ "BnetWrite" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "boolean" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Social/Friends/Requests/Remove/{membershipId}/": { "post": { "tags": [ "Social" ], "description": "Remove a friend relationship with the target user. The user must be on your outgoing request friend list, though no error will occur if they are not.", "operationId": "Social.RemoveFriendRequest", "parameters": [ { "name": "membershipId", "in": "path", "description": "The membership id of the user you wish to remove.", "required": true, "type": "string" } ], "deprecated": false, "security": [ { "oauth2": [ "BnetWrite" ] } ], "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "boolean" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Social/PlatformFriends/{friendPlatform}/{page}/": { "get": { "tags": [ "Social" ], "description": "Gets the platform friend of the requested type, with additional information if they have Bungie accounts. Must have a recent login session with said platform.", "operationId": "Social.GetPlatformFriendList", "parameters": [ { "name": "friendPlatform", "in": "path", "description": "The platform friend type.", "required": true, "type": "integer", "format": "int32" }, { "name": "page", "in": "path", "description": "The zero based page to return. Page size is 100.", "required": true, "type": "string" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Social.Friends.PlatformFriendResponse" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GetAvailableLocales/": { "get": { "tags": [ "" ], "description": "List of available localization cultures", "operationId": ".GetAvailableLocales", "parameters": [], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "object", "additionalProperties": { "type": "string" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/Settings/": { "get": { "tags": [ "" ], "description": "Get the common settings used by the Bungie.Net environment.", "operationId": ".GetCommonSettings", "parameters": [], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "$ref": "#/definitions/Common.Models.CoreSettingsConfiguration" }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/UserSystemOverrides/": { "get": { "tags": [ "" ], "description": "Get the user-specific system overrides that should be respected alongside common systems.", "operationId": ".GetUserSystemOverrides", "parameters": [], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Common.Models.CoreSystem" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } }, "/GlobalAlerts/": { "get": { "tags": [ "" ], "description": "Gets any active global alert for display in the forum banners, help pages, etc. Usually used for DOC alerts.", "operationId": ".GetGlobalAlerts", "parameters": [ { "name": "includestreaming", "in": "query", "description": "Determines whether Streaming Alerts are included in results", "type": "boolean" } ], "deprecated": false, "responses": { "200": { "description": "Look at the Response property for more information about the nature of this response", "schema": { "type": "object", "properties": { "Response": { "type": "array", "items": { "$ref": "#/definitions/GlobalAlert" } }, "ErrorCode": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "ThrottleSeconds": { "format": "int32", "type": "integer" }, "ErrorStatus": { "type": "string" }, "Message": { "type": "string" }, "MessageData": { "type": "object", "additionalProperties": { "type": "string" } }, "DetailedErrorTrace": { "type": "string" } } } } } } } }, "definitions": { "Applications.ApplicationScopes": { "format": "int64", "enum": [ "1", "2", "4", "8", "16", "32", "64", "128", "256", "512", "1024", "2048", "4096", "8192", "16384" ], "type": "integer", "x-enum-values": [ { "numericValue": "1", "identifier": "ReadBasicUserProfile", "description": "Read basic user profile information such as the user's handle, avatar icon, etc." }, { "numericValue": "2", "identifier": "ReadGroups", "description": "Read Group/Clan Forums, Wall, and Members for groups and clans that the user has joined." }, { "numericValue": "4", "identifier": "WriteGroups", "description": "Write Group/Clan Forums, Wall, and Members for groups and clans that the user has joined." }, { "numericValue": "8", "identifier": "AdminGroups", "description": "Administer Group/Clan Forums, Wall, and Members for groups and clans that the user is a founder or an administrator." }, { "numericValue": "16", "identifier": "BnetWrite", "description": "Create new groups, clans, and forum posts, along with other actions that are reserved for Bungie.net elevated scope: not meant to be used by third party applications." }, { "numericValue": "32", "identifier": "MoveEquipDestinyItems", "description": "Move or equip Destiny items" }, { "numericValue": "64", "identifier": "ReadDestinyInventoryAndVault", "description": "Read Destiny 1 Inventory and Vault contents. For Destiny 2, this scope is needed to read anything regarded as private. This is the only scope a Destiny 2 app needs for read operations against Destiny 2 data such as inventory, vault, currency, vendors, milestones, progression, etc." }, { "numericValue": "128", "identifier": "ReadUserData", "description": "Read user data such as who they are web notifications, clan/group memberships, recent activity, muted users." }, { "numericValue": "256", "identifier": "EditUserData", "description": "Edit user data such as preferred language, status, motto, avatar selection and theme." }, { "numericValue": "512", "identifier": "ReadDestinyVendorsAndAdvisors", "description": "Access vendor and advisor data specific to a user. OBSOLETE. This scope is only used on the Destiny 1 API." }, { "numericValue": "1024", "identifier": "ReadAndApplyTokens", "description": "Read offer history and claim and apply tokens for the user." }, { "numericValue": "2048", "identifier": "AdvancedWriteActions", "description": "Can perform actions that will result in a prompt to the user via the Destiny app." }, { "numericValue": "4096", "identifier": "PartnerOfferGrant", "description": "Can use the partner offer api to claim rewards defined for a partner" }, { "numericValue": "8192", "identifier": "DestinyUnlockValueQuery", "description": "Allows an app to query sensitive information like unlock flags and values not available through normal methods." }, { "numericValue": "16384", "identifier": "UserPiiRead", "description": "Allows an app to query sensitive user PII, most notably email information." } ] }, "Applications.ApiUsage": { "type": "object", "properties": { "apiCalls": { "description": "Counts for on API calls made for the time range.", "type": "array", "items": { "$ref": "#/definitions/Applications.Series" } }, "throttledRequests": { "description": "Instances of blocked requests or requests that crossed the warn threshold during the time range.", "type": "array", "items": { "$ref": "#/definitions/Applications.Series" } } } }, "Applications.Series": { "type": "object", "properties": { "datapoints": { "description": "Collection of samples with time and value.", "type": "array", "items": { "$ref": "#/definitions/Applications.Datapoint" } }, "target": { "description": "Target to which to datapoints apply.", "type": "string" } } }, "Applications.Datapoint": { "type": "object", "properties": { "time": { "format": "date-time", "description": "Timestamp for the related count.", "type": "string" }, "count": { "format": "double", "description": "Count associated with timestamp", "type": "number" } } }, "Applications.Application": { "type": "object", "properties": { "applicationId": { "format": "int32", "description": "Unique ID assigned to the application", "type": "integer" }, "name": { "description": "Name of the application", "type": "string" }, "redirectUrl": { "description": "URL used to pass the user's authorization code to the application", "type": "string" }, "link": { "description": "Link to website for the application where a user can learn more about the app.", "type": "string" }, "scope": { "format": "int64", "description": "Permissions the application needs to work", "type": "integer" }, "origin": { "description": "Value of the Origin header sent in requests generated by this application.", "type": "string" }, "status": { "format": "int32", "description": "Current status of the application.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Applications.ApplicationStatus" } }, "creationDate": { "format": "date-time", "description": "Date the application was first added to our database.", "type": "string" }, "statusChanged": { "format": "date-time", "description": "Date the application status last changed.", "type": "string" }, "firstPublished": { "format": "date-time", "description": "Date the first time the application status entered the 'Public' status.", "type": "string" }, "team": { "description": "List of team members who manage this application on Bungie.net. Will always consist of at least the application owner.", "type": "array", "items": { "$ref": "#/definitions/Applications.ApplicationDeveloper" } }, "overrideAuthorizeViewName": { "description": "An optional override for the Authorize view name.", "type": "string" } } }, "Applications.ApplicationStatus": { "format": "int32", "enum": [ "0", "1", "2", "3", "4" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None", "description": "No value assigned" }, { "numericValue": "1", "identifier": "Private", "description": "Application exists and works but will not appear in any public catalog. New applications start in this state, test applications will remain in this state." }, { "numericValue": "2", "identifier": "Public", "description": "Active applications that can appear in an catalog." }, { "numericValue": "3", "identifier": "Disabled", "description": "Application disabled by the owner. All authorizations will be treated as terminated while in this state. Owner can move back to private or public state." }, { "numericValue": "4", "identifier": "Blocked", "description": "Application has been blocked by Bungie. It cannot be transitioned out of this state by the owner. Authorizations are terminated when an application is in this state." } ] }, "Applications.ApplicationDeveloper": { "type": "object", "properties": { "role": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Applications.DeveloperRole" } }, "apiEulaVersion": { "format": "int32", "type": "integer" }, "user": { "$ref": "#/definitions/User.UserInfoCard" } } }, "Applications.DeveloperRole": { "format": "int32", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Owner" }, { "numericValue": "2", "identifier": "TeamMember" } ] }, "User.UserMembership": { "description": "Very basic info about a user as returned by the Account server.", "type": "object", "properties": { "membershipType": { "format": "int32", "description": "Type of the membership. Not necessarily the native type.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } }, "membershipId": { "format": "int64", "description": "Membership ID as they user is known in the Accounts service", "type": "integer" }, "displayName": { "description": "Display Name the player has chosen for themselves. The display name is optional when the data type is used as input to a platform API.", "type": "string" }, "bungieGlobalDisplayName": { "description": "The bungie global display name, if set.", "type": "string" }, "bungieGlobalDisplayNameCode": { "format": "int16", "description": "The bungie global display name code, if set.", "type": "integer" } } }, "BungieMembershipType": { "format": "int32", "description": "The types of membership the Accounts system supports. This is the external facing enum used in place of the internal-only Bungie.SharedDefinitions.MembershipType.", "enum": [ "0", "1", "2", "3", "4", "5", "6", "10", "254", "-1" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "TigerXbox" }, { "numericValue": "2", "identifier": "TigerPsn" }, { "numericValue": "3", "identifier": "TigerSteam" }, { "numericValue": "4", "identifier": "TigerBlizzard" }, { "numericValue": "5", "identifier": "TigerStadia" }, { "numericValue": "6", "identifier": "TigerEgs" }, { "numericValue": "10", "identifier": "TigerDemon" }, { "numericValue": "254", "identifier": "BungieNext" }, { "numericValue": "-1", "identifier": "All", "description": "\"All\" is only valid for searching capabilities: you need to pass the actual matching BungieMembershipType for any query where you pass a known membershipId." } ] }, "User.CrossSaveUserMembership": { "description": "Very basic info about a user as returned by the Account server, but including CrossSave information. Do NOT use as a request contract.", "type": "object", "properties": { "crossSaveOverride": { "format": "int32", "description": "If there is a cross save override in effect, this value will tell you the type that is overridding this one.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } }, "applicableMembershipTypes": { "description": "The list of Membership Types indicating the platforms on which this Membership can be used.\r\n Not in Cross Save = its original membership type. Cross Save Primary = Any membership types it is overridding, and its original membership type Cross Save Overridden = Empty list", "type": "array", "items": { "format": "int32", "description": "The types of membership the Accounts system supports. This is the external facing enum used in place of the internal-only Bungie.SharedDefinitions.MembershipType.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } } }, "isPublic": { "description": "If True, this is a public user membership.", "type": "boolean" }, "membershipType": { "format": "int32", "description": "Type of the membership. Not necessarily the native type.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } }, "membershipId": { "format": "int64", "description": "Membership ID as they user is known in the Accounts service", "type": "integer" }, "displayName": { "description": "Display Name the player has chosen for themselves. The display name is optional when the data type is used as input to a platform API.", "type": "string" }, "bungieGlobalDisplayName": { "description": "The bungie global display name, if set.", "type": "string" }, "bungieGlobalDisplayNameCode": { "format": "int16", "description": "The bungie global display name code, if set.", "type": "integer" } } }, "User.UserInfoCard": { "description": "This contract supplies basic information commonly used to display a minimal amount of information about a user. Take care to not add more properties here unless the property applies in all (or at least the majority) of the situations where UserInfoCard is used. Avoid adding game specific or platform specific details here. In cases where UserInfoCard is a subset of the data needed in a contract, use UserInfoCard as a property of other contracts.", "type": "object", "properties": { "supplementalDisplayName": { "description": "A platform specific additional display name - ex: psn Real Name, bnet Unique Name, etc.", "type": "string" }, "iconPath": { "description": "URL the Icon if available.", "type": "string" }, "crossSaveOverride": { "format": "int32", "description": "If there is a cross save override in effect, this value will tell you the type that is overridding this one.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } }, "applicableMembershipTypes": { "description": "The list of Membership Types indicating the platforms on which this Membership can be used.\r\n Not in Cross Save = its original membership type. Cross Save Primary = Any membership types it is overridding, and its original membership type Cross Save Overridden = Empty list", "type": "array", "items": { "format": "int32", "description": "The types of membership the Accounts system supports. This is the external facing enum used in place of the internal-only Bungie.SharedDefinitions.MembershipType.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } } }, "isPublic": { "description": "If True, this is a public user membership.", "type": "boolean" }, "membershipType": { "format": "int32", "description": "Type of the membership. Not necessarily the native type.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } }, "membershipId": { "format": "int64", "description": "Membership ID as they user is known in the Accounts service", "type": "integer" }, "displayName": { "description": "Display Name the player has chosen for themselves. The display name is optional when the data type is used as input to a platform API.", "type": "string" }, "bungieGlobalDisplayName": { "description": "The bungie global display name, if set.", "type": "string" }, "bungieGlobalDisplayNameCode": { "format": "int16", "description": "The bungie global display name code, if set.", "type": "integer" } } }, "User.GeneralUser": { "type": "object", "properties": { "membershipId": { "format": "int64", "type": "integer" }, "uniqueName": { "type": "string" }, "normalizedName": { "type": "string" }, "displayName": { "type": "string" }, "profilePicture": { "format": "int32", "type": "integer" }, "profileTheme": { "format": "int32", "type": "integer" }, "userTitle": { "format": "int32", "type": "integer" }, "successMessageFlags": { "format": "int64", "type": "integer" }, "isDeleted": { "type": "boolean" }, "about": { "type": "string" }, "firstAccess": { "format": "date-time", "type": "string" }, "lastUpdate": { "format": "date-time", "type": "string" }, "legacyPortalUID": { "format": "int64", "type": "integer" }, "context": { "$ref": "#/definitions/User.UserToUserContext" }, "psnDisplayName": { "type": "string" }, "xboxDisplayName": { "type": "string" }, "fbDisplayName": { "type": "string" }, "showActivity": { "type": "boolean" }, "locale": { "type": "string" }, "localeInheritDefault": { "type": "boolean" }, "lastBanReportId": { "format": "int64", "type": "integer" }, "showGroupMessaging": { "type": "boolean" }, "profilePicturePath": { "type": "string" }, "profilePictureWidePath": { "type": "string" }, "profileThemeName": { "type": "string" }, "userTitleDisplay": { "type": "string" }, "statusText": { "type": "string" }, "statusDate": { "format": "date-time", "type": "string" }, "profileBanExpire": { "format": "date-time", "type": "string" }, "blizzardDisplayName": { "type": "string" }, "steamDisplayName": { "type": "string" }, "stadiaDisplayName": { "type": "string" }, "twitchDisplayName": { "type": "string" }, "cachedBungieGlobalDisplayName": { "type": "string" }, "cachedBungieGlobalDisplayNameCode": { "format": "int16", "type": "integer" }, "egsDisplayName": { "type": "string" } } }, "User.UserToUserContext": { "type": "object", "properties": { "isFollowing": { "type": "boolean" }, "ignoreStatus": { "$ref": "#/definitions/Ignores.IgnoreResponse" }, "globalIgnoreEndDate": { "format": "date-time", "type": "string" } } }, "Ignores.IgnoreResponse": { "type": "object", "properties": { "isIgnored": { "type": "boolean" }, "ignoreFlags": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Ignores.IgnoreStatus" } } } }, "Ignores.IgnoreStatus": { "format": "int32", "enum": [ "0", "1", "2", "4", "8", "16", "32" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "NotIgnored" }, { "numericValue": "1", "identifier": "IgnoredUser" }, { "numericValue": "2", "identifier": "IgnoredGroup" }, { "numericValue": "4", "identifier": "IgnoredByGroup" }, { "numericValue": "8", "identifier": "IgnoredPost" }, { "numericValue": "16", "identifier": "IgnoredTag" }, { "numericValue": "32", "identifier": "IgnoredGlobal" } ] }, "BungieCredentialType": { "format": "byte", "description": "The types of credentials the Accounts system supports. This is the external facing enum used in place of the internal-only Bungie.SharedDefinitions.CredentialType.", "enum": [ "0", "1", "2", "3", "4", "5", "8", "9", "10", "12", "14", "16", "18", "20" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Xuid" }, { "numericValue": "2", "identifier": "Psnid" }, { "numericValue": "3", "identifier": "Wlid" }, { "numericValue": "4", "identifier": "Fake" }, { "numericValue": "5", "identifier": "Facebook" }, { "numericValue": "8", "identifier": "Google" }, { "numericValue": "9", "identifier": "Windows" }, { "numericValue": "10", "identifier": "DemonId" }, { "numericValue": "12", "identifier": "SteamId" }, { "numericValue": "14", "identifier": "BattleNetId" }, { "numericValue": "16", "identifier": "StadiaId" }, { "numericValue": "18", "identifier": "TwitchId" }, { "numericValue": "20", "identifier": "EgsId" } ] }, "User.Models.GetCredentialTypesForAccountResponse": { "type": "object", "properties": { "credentialType": { "format": "byte", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieCredentialType" } }, "credentialDisplayName": { "type": "string" }, "isPublic": { "type": "boolean" }, "credentialAsString": { "type": "string" } } }, "Config.UserTheme": { "type": "object", "properties": { "userThemeId": { "format": "int32", "type": "integer" }, "userThemeName": { "type": "string" }, "userThemeDescription": { "type": "string" } } }, "User.UserMembershipData": { "type": "object", "properties": { "destinyMemberships": { "description": "this allows you to see destiny memberships that are visible and linked to this account (regardless of whether or not they have characters on the world server)", "type": "array", "items": { "$ref": "#/definitions/GroupsV2.GroupUserInfoCard" } }, "primaryMembershipId": { "format": "int64", "description": "If this property is populated, it will have the membership ID of the account considered to be \"primary\" in this user's cross save relationship.\r\n If null, this user has no cross save relationship, nor primary account.", "type": "integer" }, "bungieNetUser": { "$ref": "#/definitions/User.GeneralUser" } } }, "GroupsV2.GroupUserInfoCard": { "type": "object", "properties": { "LastSeenDisplayName": { "description": "This will be the display name the clan server last saw the user as. If the account is an active cross save override, this will be the display name to use. Otherwise, this will match the displayName property.", "type": "string" }, "LastSeenDisplayNameType": { "format": "int32", "description": "The platform of the LastSeenDisplayName", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } }, "supplementalDisplayName": { "description": "A platform specific additional display name - ex: psn Real Name, bnet Unique Name, etc.", "type": "string" }, "iconPath": { "description": "URL the Icon if available.", "type": "string" }, "crossSaveOverride": { "format": "int32", "description": "If there is a cross save override in effect, this value will tell you the type that is overridding this one.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } }, "applicableMembershipTypes": { "description": "The list of Membership Types indicating the platforms on which this Membership can be used.\r\n Not in Cross Save = its original membership type. Cross Save Primary = Any membership types it is overridding, and its original membership type Cross Save Overridden = Empty list", "type": "array", "items": { "format": "int32", "description": "The types of membership the Accounts system supports. This is the external facing enum used in place of the internal-only Bungie.SharedDefinitions.MembershipType.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } } }, "isPublic": { "description": "If True, this is a public user membership.", "type": "boolean" }, "membershipType": { "format": "int32", "description": "Type of the membership. Not necessarily the native type.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } }, "membershipId": { "format": "int64", "description": "Membership ID as they user is known in the Accounts service", "type": "integer" }, "displayName": { "description": "Display Name the player has chosen for themselves. The display name is optional when the data type is used as input to a platform API.", "type": "string" }, "bungieGlobalDisplayName": { "description": "The bungie global display name, if set.", "type": "string" }, "bungieGlobalDisplayNameCode": { "format": "int16", "description": "The bungie global display name code, if set.", "type": "integer" } } }, "User.HardLinkedUserMembership": { "type": "object", "properties": { "membershipType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } }, "membershipId": { "format": "int64", "type": "integer" }, "CrossSaveOverriddenType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } }, "CrossSaveOverriddenMembershipId": { "format": "int64", "type": "integer" } } }, "User.UserSearchResponse": { "type": "object", "properties": { "searchResults": { "type": "array", "items": { "$ref": "#/definitions/User.UserSearchResponseDetail" } }, "page": { "format": "int32", "type": "integer" }, "hasMore": { "type": "boolean" } } }, "User.UserSearchResponseDetail": { "type": "object", "properties": { "bungieGlobalDisplayName": { "type": "string" }, "bungieGlobalDisplayNameCode": { "format": "int16", "type": "integer" }, "bungieNetMembershipId": { "format": "int64", "type": "integer" }, "destinyMemberships": { "type": "array", "items": { "$ref": "#/definitions/User.UserInfoCard" } } } }, "User.UserSearchPrefixRequest": { "type": "object", "properties": { "displayNamePrefix": { "type": "string" } } }, "Content.Models.ContentTypeDescription": { "type": "object", "properties": { "cType": { "type": "string" }, "name": { "type": "string" }, "contentDescription": { "type": "string" }, "previewImage": { "type": "string" }, "priority": { "format": "int32", "type": "integer" }, "reminder": { "type": "string" }, "properties": { "type": "array", "items": { "$ref": "#/definitions/Content.Models.ContentTypeProperty" } }, "tagMetadata": { "type": "array", "items": { "$ref": "#/definitions/Content.Models.TagMetadataDefinition" } }, "tagMetadataItems": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Content.Models.TagMetadataItem" } }, "usageExamples": { "type": "array", "items": { "type": "string" } }, "showInContentEditor": { "type": "boolean" }, "typeOf": { "type": "string" }, "bindIdentifierToProperty": { "type": "string" }, "boundRegex": { "type": "string" }, "forceIdentifierBinding": { "type": "boolean" }, "allowComments": { "type": "boolean" }, "autoEnglishPropertyFallback": { "type": "boolean" }, "bulkUploadable": { "type": "boolean" }, "previews": { "type": "array", "items": { "$ref": "#/definitions/Content.Models.ContentPreview" } }, "suppressCmsPath": { "type": "boolean" }, "propertySections": { "type": "array", "items": { "$ref": "#/definitions/Content.Models.ContentTypePropertySection" } } } }, "Content.Models.ContentTypeProperty": { "type": "object", "properties": { "name": { "type": "string" }, "rootPropertyName": { "type": "string" }, "readableName": { "type": "string" }, "value": { "type": "string" }, "propertyDescription": { "type": "string" }, "localizable": { "type": "boolean" }, "fallback": { "type": "boolean" }, "enabled": { "type": "boolean" }, "order": { "format": "int32", "type": "integer" }, "visible": { "type": "boolean" }, "isTitle": { "type": "boolean" }, "required": { "type": "boolean" }, "maxLength": { "format": "int32", "type": "integer" }, "maxByteLength": { "format": "int32", "type": "integer" }, "maxFileSize": { "format": "int32", "type": "integer" }, "regexp": { "type": "string" }, "validateAs": { "type": "string" }, "rssAttribute": { "type": "string" }, "visibleDependency": { "type": "string" }, "visibleOn": { "type": "string" }, "datatype": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Content.Models.ContentPropertyDataTypeEnum" } }, "attributes": { "type": "object", "additionalProperties": { "type": "string" } }, "childProperties": { "type": "array", "items": { "$ref": "#/definitions/Content.Models.ContentTypeProperty" } }, "contentTypeAllowed": { "type": "string" }, "bindToProperty": { "type": "string" }, "boundRegex": { "type": "string" }, "representationSelection": { "type": "object", "additionalProperties": { "type": "string" } }, "defaultValues": { "type": "array", "items": { "$ref": "#/definitions/Content.Models.ContentTypeDefaultValue" } }, "isExternalAllowed": { "type": "boolean" }, "propertySection": { "type": "string" }, "weight": { "format": "int32", "type": "integer" }, "entitytype": { "type": "string" }, "isCombo": { "type": "boolean" }, "suppressProperty": { "type": "boolean" }, "legalContentTypes": { "type": "array", "items": { "type": "string" } }, "representationValidationString": { "type": "string" }, "minWidth": { "format": "int32", "type": "integer" }, "maxWidth": { "format": "int32", "type": "integer" }, "minHeight": { "format": "int32", "type": "integer" }, "maxHeight": { "format": "int32", "type": "integer" }, "isVideo": { "type": "boolean" }, "isImage": { "type": "boolean" } } }, "Content.Models.ContentPropertyDataTypeEnum": { "format": "int32", "enum": [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Plaintext" }, { "numericValue": "2", "identifier": "Html" }, { "numericValue": "3", "identifier": "Dropdown" }, { "numericValue": "4", "identifier": "List" }, { "numericValue": "5", "identifier": "Json" }, { "numericValue": "6", "identifier": "Content" }, { "numericValue": "7", "identifier": "Representation" }, { "numericValue": "8", "identifier": "Set" }, { "numericValue": "9", "identifier": "File" }, { "numericValue": "10", "identifier": "FolderSet" }, { "numericValue": "11", "identifier": "Date" }, { "numericValue": "12", "identifier": "MultilinePlaintext" }, { "numericValue": "13", "identifier": "DestinyContent" }, { "numericValue": "14", "identifier": "Color" } ] }, "Content.Models.ContentTypeDefaultValue": { "type": "object", "properties": { "whenClause": { "type": "string" }, "whenValue": { "type": "string" }, "defaultValue": { "type": "string" } } }, "Content.Models.TagMetadataDefinition": { "type": "object", "properties": { "description": { "type": "string" }, "order": { "format": "int32", "type": "integer" }, "items": { "type": "array", "items": { "$ref": "#/definitions/Content.Models.TagMetadataItem" } }, "datatype": { "type": "string" }, "name": { "type": "string" }, "isRequired": { "type": "boolean" } } }, "Content.Models.TagMetadataItem": { "type": "object", "properties": { "description": { "type": "string" }, "tagText": { "type": "string" }, "groups": { "type": "array", "items": { "type": "string" } }, "isDefault": { "type": "boolean" }, "name": { "type": "string" } } }, "Content.Models.ContentPreview": { "type": "object", "properties": { "name": { "type": "string" }, "path": { "type": "string" }, "itemInSet": { "type": "boolean" }, "setTag": { "type": "string" }, "setNesting": { "format": "int32", "type": "integer" }, "useSetId": { "format": "int32", "type": "integer" } } }, "Content.Models.ContentTypePropertySection": { "type": "object", "properties": { "name": { "type": "string" }, "readableName": { "type": "string" }, "collapsed": { "type": "boolean" } } }, "Content.ContentItemPublicContract": { "type": "object", "properties": { "contentId": { "format": "int64", "type": "integer" }, "cType": { "type": "string" }, "cmsPath": { "type": "string" }, "creationDate": { "format": "date-time", "type": "string" }, "modifyDate": { "format": "date-time", "type": "string" }, "allowComments": { "type": "boolean" }, "hasAgeGate": { "type": "boolean" }, "minimumAge": { "format": "int32", "type": "integer" }, "ratingImagePath": { "type": "string" }, "author": { "$ref": "#/definitions/User.GeneralUser" }, "autoEnglishPropertyFallback": { "type": "boolean" }, "properties": { "description": "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.\r\nAs 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.", "type": "object", "additionalProperties": { "type": "object" } }, "representations": { "type": "array", "items": { "$ref": "#/definitions/Content.ContentRepresentation" } }, "tags": { "description": "NOTE: Tags will always be lower case.", "type": "array", "items": { "type": "string" } }, "commentSummary": { "$ref": "#/definitions/Content.CommentSummary" } } }, "Content.ContentRepresentation": { "type": "object", "properties": { "name": { "type": "string" }, "path": { "type": "string" }, "validationString": { "type": "string" } } }, "Content.CommentSummary": { "type": "object", "properties": { "topicId": { "format": "int64", "type": "integer" }, "commentCount": { "format": "int32", "type": "integer" } } }, "Queries.SearchResult": { "type": "object", "properties": { "totalResults": { "format": "int32", "type": "integer" }, "hasMore": { "type": "boolean" }, "query": { "$ref": "#/definitions/Queries.PagedQuery" }, "replacementContinuationToken": { "type": "string" }, "useTotalResults": { "description": "If useTotalResults is true, then totalResults represents an accurate count.\r\nIf False, it does not, and may be estimated/only the size of the current page.\r\nEither way, you should probably always only trust hasMore.\r\nThis 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.", "type": "boolean" } } }, "Queries.PagedQuery": { "type": "object", "properties": { "itemsPerPage": { "format": "int32", "type": "integer" }, "currentPage": { "format": "int32", "type": "integer" }, "requestContinuationToken": { "type": "string" } } }, "SearchResultOfContentItemPublicContract": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/definitions/Content.ContentItemPublicContract" } }, "totalResults": { "format": "int32", "type": "integer" }, "hasMore": { "type": "boolean" }, "query": { "$ref": "#/definitions/Queries.PagedQuery" }, "replacementContinuationToken": { "type": "string" }, "useTotalResults": { "description": "If useTotalResults is true, then totalResults represents an accurate count.\r\nIf False, it does not, and may be estimated/only the size of the current page.\r\nEither way, you should probably always only trust hasMore.\r\nThis 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.", "type": "boolean" } } }, "Content.NewsArticleRssResponse": { "type": "object", "properties": { "NewsArticles": { "type": "array", "items": { "$ref": "#/definitions/Content.NewsArticleRssItem" } }, "CurrentPaginationToken": { "format": "int32", "type": "integer" }, "NextPaginationToken": { "format": "int32", "type": "integer" }, "ResultCountThisPage": { "format": "int32", "type": "integer" }, "CategoryFilter": { "type": "string" } } }, "Content.NewsArticleRssItem": { "type": "object", "properties": { "Title": { "type": "string" }, "Link": { "type": "string" }, "PubDate": { "format": "date-time", "type": "string" }, "UniqueIdentifier": { "type": "string" }, "Description": { "type": "string" }, "HtmlContent": { "type": "string" }, "ImagePath": { "type": "string" }, "OptionalMobileImagePath": { "type": "string" } } }, "Forum.ForumTopicsCategoryFiltersEnum": { "format": "int32", "enum": [ "0", "1", "2", "4", "8", "16", "32", "64", "128" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Links" }, { "numericValue": "2", "identifier": "Questions" }, { "numericValue": "4", "identifier": "AnsweredQuestions" }, { "numericValue": "8", "identifier": "Media" }, { "numericValue": "16", "identifier": "TextOnly" }, { "numericValue": "32", "identifier": "Announcement" }, { "numericValue": "64", "identifier": "BungieOfficial" }, { "numericValue": "128", "identifier": "Polls" } ] }, "Forum.ForumTopicsQuickDateEnum": { "format": "int32", "enum": [ "0", "1", "2", "3", "4" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "All" }, { "numericValue": "1", "identifier": "LastYear" }, { "numericValue": "2", "identifier": "LastMonth" }, { "numericValue": "3", "identifier": "LastWeek" }, { "numericValue": "4", "identifier": "LastDay" } ] }, "Forum.ForumTopicsSortEnum": { "format": "byte", "enum": [ "0", "1", "2", "3", "4", "5", "6", "7" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Default" }, { "numericValue": "1", "identifier": "LastReplied" }, { "numericValue": "2", "identifier": "MostReplied" }, { "numericValue": "3", "identifier": "Popularity" }, { "numericValue": "4", "identifier": "Controversiality" }, { "numericValue": "5", "identifier": "Liked" }, { "numericValue": "6", "identifier": "HighestRated" }, { "numericValue": "7", "identifier": "MostUpvoted" } ] }, "Forum.PostResponse": { "type": "object", "properties": { "lastReplyTimestamp": { "format": "date-time", "type": "string" }, "IsPinned": { "type": "boolean" }, "urlMediaType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Forum.ForumMediaType" } }, "thumbnail": { "type": "string" }, "popularity": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Forum.ForumPostPopularity" } }, "isActive": { "type": "boolean" }, "isAnnouncement": { "type": "boolean" }, "userRating": { "format": "int32", "type": "integer" }, "userHasRated": { "type": "boolean" }, "userHasMutedPost": { "type": "boolean" }, "latestReplyPostId": { "format": "int64", "type": "integer" }, "latestReplyAuthorId": { "format": "int64", "type": "integer" }, "ignoreStatus": { "$ref": "#/definitions/Ignores.IgnoreResponse" }, "locale": { "type": "string" } } }, "Forum.ForumMediaType": { "format": "int32", "enum": [ "0", "1", "2", "3" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Image" }, { "numericValue": "2", "identifier": "Video" }, { "numericValue": "3", "identifier": "Youtube" } ] }, "Forum.ForumPostPopularity": { "format": "int32", "enum": [ "0", "1", "2", "3", "4", "5" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Empty" }, { "numericValue": "1", "identifier": "Default" }, { "numericValue": "2", "identifier": "Discussed" }, { "numericValue": "3", "identifier": "CoolStory" }, { "numericValue": "4", "identifier": "HeatingUp" }, { "numericValue": "5", "identifier": "Hot" } ] }, "Forums.ForumPostCategoryEnums": { "format": "int32", "enum": [ "0", "1", "2", "4", "8", "16", "32", "64", "128", "256", "512", "1024" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "TextOnly" }, { "numericValue": "2", "identifier": "Media" }, { "numericValue": "4", "identifier": "Link" }, { "numericValue": "8", "identifier": "Poll" }, { "numericValue": "16", "identifier": "Question" }, { "numericValue": "32", "identifier": "Answered" }, { "numericValue": "64", "identifier": "Announcement" }, { "numericValue": "128", "identifier": "ContentComment" }, { "numericValue": "256", "identifier": "BungieOfficial" }, { "numericValue": "512", "identifier": "NinjaOfficial" }, { "numericValue": "1024", "identifier": "Recruitment" } ] }, "Forums.ForumFlagsEnum": { "format": "int32", "enum": [ "0", "1", "2", "4", "8", "16", "32", "64", "128" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "BungieStaffPost" }, { "numericValue": "2", "identifier": "ForumNinjaPost" }, { "numericValue": "4", "identifier": "ForumMentorPost" }, { "numericValue": "8", "identifier": "TopicBungieStaffPosted" }, { "numericValue": "16", "identifier": "TopicBungieVolunteerPosted" }, { "numericValue": "32", "identifier": "QuestionAnsweredByBungie" }, { "numericValue": "64", "identifier": "QuestionAnsweredByNinja" }, { "numericValue": "128", "identifier": "CommunityContent" } ] }, "SearchResultOfPostResponse": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/definitions/Forum.PostResponse" } }, "totalResults": { "format": "int32", "type": "integer" }, "hasMore": { "type": "boolean" }, "query": { "$ref": "#/definitions/Queries.PagedQuery" }, "replacementContinuationToken": { "type": "string" }, "useTotalResults": { "description": "If useTotalResults is true, then totalResults represents an accurate count.\r\nIf False, it does not, and may be estimated/only the size of the current page.\r\nEither way, you should probably always only trust hasMore.\r\nThis 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.", "type": "boolean" } } }, "Forum.PostSearchResponse": { "type": "object", "properties": { "relatedPosts": { "type": "array", "items": { "$ref": "#/definitions/Forum.PostResponse" } }, "authors": { "type": "array", "items": { "$ref": "#/definitions/User.GeneralUser" } }, "groups": { "type": "array", "items": { "$ref": "#/definitions/GroupsV2.GroupResponse" } }, "searchedTags": { "type": "array", "items": { "$ref": "#/definitions/Tags.Models.Contracts.TagResponse" } }, "polls": { "type": "array", "items": { "$ref": "#/definitions/Forum.PollResponse" } }, "recruitmentDetails": { "type": "array", "items": { "$ref": "#/definitions/Forum.ForumRecruitmentDetail" } }, "availablePages": { "format": "int32", "type": "integer" }, "results": { "type": "array", "items": { "$ref": "#/definitions/Forum.PostResponse" } }, "totalResults": { "format": "int32", "type": "integer" }, "hasMore": { "type": "boolean" }, "query": { "$ref": "#/definitions/Queries.PagedQuery" }, "replacementContinuationToken": { "type": "string" }, "useTotalResults": { "description": "If useTotalResults is true, then totalResults represents an accurate count.\r\nIf False, it does not, and may be estimated/only the size of the current page.\r\nEither way, you should probably always only trust hasMore.\r\nThis 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.", "type": "boolean" } } }, "GroupsV2.GroupResponse": { "type": "object", "properties": { "detail": { "$ref": "#/definitions/GroupsV2.GroupV2" }, "founder": { "$ref": "#/definitions/GroupsV2.GroupMember" }, "alliedIds": { "type": "array", "items": { "format": "int64", "type": "integer" } }, "parentGroup": { "$ref": "#/definitions/GroupsV2.GroupV2" }, "allianceStatus": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.GroupAllianceStatus" } }, "groupJoinInviteCount": { "format": "int32", "type": "integer" }, "currentUserMembershipsInactiveForDestiny": { "description": "A convenience property that indicates if every membership you (the current user) have that is a part of this group are part of an account that is considered inactive - for example, overridden accounts in Cross Save.", "type": "boolean" }, "currentUserMemberMap": { "description": "This property will be populated if the authenticated user is a member of the group. Note that because of account linking, a user can sometimes be part of a clan more than once. As such, this returns the highest member type available.", "type": "object", "additionalProperties": { "$ref": "#/definitions/GroupsV2.GroupMember" } }, "currentUserPotentialMemberMap": { "description": "This property will be populated if the authenticated user is an applicant or has an outstanding invitation to join. Note that because of account linking, a user can sometimes be part of a clan more than once.", "type": "object", "additionalProperties": { "$ref": "#/definitions/GroupsV2.GroupPotentialMember" } } } }, "GroupsV2.GroupV2": { "type": "object", "properties": { "groupId": { "format": "int64", "type": "integer" }, "name": { "type": "string" }, "groupType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.GroupType" } }, "membershipIdCreated": { "format": "int64", "type": "integer" }, "creationDate": { "format": "date-time", "type": "string" }, "modificationDate": { "format": "date-time", "type": "string" }, "about": { "type": "string" }, "tags": { "type": "array", "items": { "type": "string" } }, "memberCount": { "format": "int32", "type": "integer" }, "isPublic": { "type": "boolean" }, "isPublicTopicAdminOnly": { "type": "boolean" }, "motto": { "type": "string" }, "allowChat": { "type": "boolean" }, "isDefaultPostPublic": { "type": "boolean" }, "chatSecurity": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.ChatSecuritySetting" } }, "locale": { "type": "string" }, "avatarImageIndex": { "format": "int32", "type": "integer" }, "homepage": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.GroupHomepage" } }, "membershipOption": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.MembershipOption" } }, "defaultPublicity": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.GroupPostPublicity" } }, "theme": { "type": "string" }, "bannerPath": { "type": "string" }, "avatarPath": { "type": "string" }, "conversationId": { "format": "int64", "type": "integer" }, "enableInvitationMessagingForAdmins": { "type": "boolean" }, "banExpireDate": { "format": "date-time", "type": "string" }, "features": { "$ref": "#/definitions/GroupsV2.GroupFeatures" }, "clanInfo": { "$ref": "#/definitions/GroupsV2.GroupV2ClanInfoAndInvestment" } } }, "GroupsV2.GroupType": { "format": "int32", "enum": [ "0", "1" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "General" }, { "numericValue": "1", "identifier": "Clan" } ] }, "GroupsV2.ChatSecuritySetting": { "format": "int32", "enum": [ "0", "1" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Group" }, { "numericValue": "1", "identifier": "Admins" } ] }, "GroupsV2.GroupHomepage": { "format": "int32", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Wall" }, { "numericValue": "1", "identifier": "Forum" }, { "numericValue": "2", "identifier": "AllianceForum" } ] }, "GroupsV2.MembershipOption": { "format": "int32", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Reviewed" }, { "numericValue": "1", "identifier": "Open" }, { "numericValue": "2", "identifier": "Closed" } ] }, "GroupsV2.GroupPostPublicity": { "format": "int32", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Public" }, { "numericValue": "1", "identifier": "Alliance" }, { "numericValue": "2", "identifier": "Private" } ] }, "GroupsV2.GroupFeatures": { "type": "object", "properties": { "maximumMembers": { "format": "int32", "type": "integer" }, "maximumMembershipsOfGroupType": { "format": "int32", "description": "Maximum number of groups of this type a typical membership may join. For example, a user may join about 50 General groups with their Bungie.net account. They may join one clan per Destiny membership.", "type": "integer" }, "capabilities": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.Capabilities" } }, "membershipTypes": { "type": "array", "items": { "format": "int32", "description": "The types of membership the Accounts system supports. This is the external facing enum used in place of the internal-only Bungie.SharedDefinitions.MembershipType.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } } }, "invitePermissionOverride": { "description": "Minimum Member Level allowed to invite new members to group\r\nAlways Allowed: Founder, Acting Founder\r\nTrue means admins have this power, false means they don't\r\nDefault is false for clans, true for groups.", "type": "boolean" }, "updateCulturePermissionOverride": { "description": "Minimum Member Level allowed to update group culture\r\nAlways Allowed: Founder, Acting Founder\r\nTrue means admins have this power, false means they don't\r\nDefault is false for clans, true for groups.", "type": "boolean" }, "hostGuidedGamePermissionOverride": { "format": "int32", "description": "Minimum Member Level allowed to host guided games\r\nAlways Allowed: Founder, Acting Founder, Admin\r\nAllowed Overrides: None, Member, Beginner\r\nDefault is Member for clans, None for groups, although this means nothing for groups.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.HostGuidedGamesPermissionLevel" } }, "updateBannerPermissionOverride": { "description": "Minimum Member Level allowed to update banner\r\nAlways Allowed: Founder, Acting Founder\r\nTrue means admins have this power, false means they don't\r\nDefault is false for clans, true for groups.", "type": "boolean" }, "joinLevel": { "format": "int32", "description": "Level to join a member at when accepting an invite, application, or joining an open clan\r\nDefault is Beginner.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.RuntimeGroupMemberType" } } } }, "GroupsV2.Capabilities": { "format": "int32", "enum": [ "0", "1", "2", "4", "8", "16", "32", "64" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Leaderboards" }, { "numericValue": "2", "identifier": "Callsign" }, { "numericValue": "4", "identifier": "OptionalConversations" }, { "numericValue": "8", "identifier": "ClanBanner" }, { "numericValue": "16", "identifier": "D2InvestmentData" }, { "numericValue": "32", "identifier": "Tags" }, { "numericValue": "64", "identifier": "Alliances" } ] }, "BungieMembershipType[]": { "type": "array", "items": { "format": "int32", "description": "The types of membership the Accounts system supports. This is the external facing enum used in place of the internal-only Bungie.SharedDefinitions.MembershipType.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } } }, "GroupsV2.HostGuidedGamesPermissionLevel": { "format": "int32", "description": "Used for setting the guided game permission level override (admins and founders can always host guided games).", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Beginner" }, { "numericValue": "2", "identifier": "Member" } ] }, "GroupsV2.RuntimeGroupMemberType": { "format": "int32", "description": "The member levels used by all V2 Groups API. Individual group types use their own mappings in their native storage (general uses BnetDbGroupMemberType and D2 clans use ClanMemberLevel), but they are all translated to this in the runtime api. These runtime values should NEVER be stored anywhere, so the values can be changed as necessary.", "enum": [ "0", "1", "2", "3", "4", "5" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Beginner" }, { "numericValue": "2", "identifier": "Member" }, { "numericValue": "3", "identifier": "Admin" }, { "numericValue": "4", "identifier": "ActingFounder" }, { "numericValue": "5", "identifier": "Founder" } ] }, "GroupsV2.GroupV2ClanInfo": { "description": "This contract contains clan-specific group information. It does not include any investment data.", "type": "object", "properties": { "clanCallsign": { "type": "string" }, "clanBannerData": { "$ref": "#/definitions/GroupsV2.ClanBanner" } } }, "GroupsV2.ClanBanner": { "type": "object", "properties": { "decalId": { "format": "uint32", "type": "integer" }, "decalColorId": { "format": "uint32", "type": "integer" }, "decalBackgroundColorId": { "format": "uint32", "type": "integer" }, "gonfalonId": { "format": "uint32", "type": "integer" }, "gonfalonColorId": { "format": "uint32", "type": "integer" }, "gonfalonDetailId": { "format": "uint32", "type": "integer" }, "gonfalonDetailColorId": { "format": "uint32", "type": "integer" } } }, "GroupsV2.GroupV2ClanInfoAndInvestment": { "description": "The same as GroupV2ClanInfo, but includes any investment data.", "type": "object", "properties": { "d2ClanProgressions": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.DestinyProgression" } }, "clanCallsign": { "type": "string" }, "clanBannerData": { "$ref": "#/definitions/GroupsV2.ClanBanner" } } }, "Destiny.DestinyProgression": { "description": "Information about a current character's status with a Progression. A progression is a value that can increase with activity and has levels. Think Character Level and Reputation Levels. Combine this \"live\" data with the related DestinyProgressionDefinition for a full picture of the Progression.", "type": "object", "properties": { "progressionHash": { "format": "uint32", "description": "The hash identifier of the Progression in question. Use it to look up the DestinyProgressionDefinition in static data.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyProgressionDefinition" } }, "dailyProgress": { "format": "int32", "description": "The amount of progress earned today for this progression.", "type": "integer" }, "dailyLimit": { "format": "int32", "description": "If this progression has a daily limit, this is that limit.", "type": "integer" }, "weeklyProgress": { "format": "int32", "description": "The amount of progress earned toward this progression in the current week.", "type": "integer" }, "weeklyLimit": { "format": "int32", "description": "If this progression has a weekly limit, this is that limit.", "type": "integer" }, "currentProgress": { "format": "int32", "description": "This is the total amount of progress obtained overall for this progression (for instance, the total amount of Character Level experience earned)", "type": "integer" }, "level": { "format": "int32", "description": "This is the level of the progression (for instance, the Character Level).", "type": "integer" }, "levelCap": { "format": "int32", "description": "This is the maximum possible level you can achieve for this progression (for example, the maximum character level obtainable)", "type": "integer" }, "stepIndex": { "format": "int32", "description": "Progressions define their levels in \"steps\". Since the last step may be repeatable, the user may be at a higher level than the actual Step achieved in the progression. Not necessarily useful, but potentially interesting for those cruising the API. Relate this to the \"steps\" property of the DestinyProgression to see which step the user is on, if you care about that. (Note that this is Content Version dependent since it refers to indexes.)", "type": "integer" }, "progressToNextLevel": { "format": "int32", "description": "The amount of progression (i.e. \"Experience\") needed to reach the next level of this Progression. Jeez, progression is such an overloaded word.", "type": "integer" }, "nextLevelAt": { "format": "int32", "description": "The total amount of progression (i.e. \"Experience\") needed in order to reach the next level.", "type": "integer" }, "currentResetCount": { "format": "int32", "description": "The number of resets of this progression you've executed this season, if applicable to this progression.", "type": "integer" }, "seasonResets": { "description": "Information about historical resets of this progression, if there is any data for it.", "type": "array", "items": { "$ref": "#/definitions/Destiny.DestinyProgressionResetEntry" } }, "rewardItemStates": { "description": "Information about historical rewards for this progression, if there is any data for it.", "type": "array", "items": { "format": "int32", "description": "Represents the different states a progression reward item can be in.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyProgressionRewardItemState" } } } } }, "Destiny.DestinyProgressionResetEntry": { "description": "Represents a season and the number of resets you had in that season.\r\n We do not necessarily - even for progressions with resets - track it over all seasons. So be careful and check the season numbers being returned.", "type": "object", "properties": { "season": { "format": "int32", "type": "integer" }, "resets": { "format": "int32", "type": "integer" } } }, "Destiny.DestinyProgressionRewardItemState": { "format": "int32", "description": "Represents the different states a progression reward item can be in.", "enum": [ "0", "1", "2", "4", "8" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Invisible", "description": "If this is set, the reward should be hidden." }, { "numericValue": "2", "identifier": "Earned", "description": "If this is set, the reward has been earned." }, { "numericValue": "4", "identifier": "Claimed", "description": "If this is set, the reward has been claimed." }, { "numericValue": "8", "identifier": "ClaimAllowed", "description": "If this is set, the reward is allowed to be claimed by this Character. An item can be earned but still can't be claimed in certain circumstances, like if it's only allowed for certain subclasses. It also might not be able to be claimed if you already claimed it!" } ] }, "Destiny.Definitions.DestinyDefinition": { "description": "Provides common properties for destiny definitions.", "type": "object", "properties": { "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } } }, "Destiny.Definitions.DestinyProgressionDefinition": { "description": "A \"Progression\" in Destiny is best explained by an example.\r\nA Character's \"Level\" is a progression: it has Experience that can be earned, levels that can be gained, and is evaluated and displayed at various points in the game. A Character's \"Faction Reputation\" is also a progression for much the same reason.\r\nProgression is used by a variety of systems, and the definition of a Progression will generally only be useful if combining with live data (such as a character's DestinyCharacterProgressionComponent.progressions property, which holds that character's live Progression states).\r\nFundamentally, a Progression measures your \"Level\" by evaluating the thresholds in its Steps (one step per level, except for the last step which can be repeated indefinitely for \"Levels\" that have no ceiling) against the total earned \"progression points\"/experience. (for simplicity purposes, we will henceforth refer to earned progression points as experience, though it need not be a mechanic that in any way resembles Experience in a traditional sense).\r\nEarned experience is calculated in a variety of ways, determined by the Progression's scope. These go from looking up a stored value to performing exceedingly obtuse calculations. This is why we provide live data in DestinyCharacterProgressionComponent.progressions, so you don't have to worry about those.", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.DestinyProgressionDisplayPropertiesDefinition" }, "scope": { "format": "int32", "description": "The \"Scope\" of the progression indicates the source of the progression's live data.\r\nSee the DestinyProgressionScope enum for more info: but essentially, a Progression can either be backed by a stored value, or it can be a calculated derivative of other values.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyProgressionScope" } }, "repeatLastStep": { "description": "If this is True, then the progression doesn't have a maximum level.", "type": "boolean" }, "source": { "description": "If there's a description of how to earn this progression in the local config, this will be that localized description.", "type": "string" }, "steps": { "description": "Progressions are divided into Steps, which roughly equate to \"Levels\" in the traditional sense of a Progression. Notably, the last step can be repeated indefinitely if repeatLastStep is true, meaning that the calculation for your level is not as simple as comparing your current progress to the max progress of the steps. \r\nThese and more calculations are done for you if you grab live character progression data, such as in the DestinyCharacterProgressionComponent.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyProgressionStepDefinition" } }, "visible": { "description": "If true, the Progression is something worth showing to users.\r\nIf false, BNet isn't going to show it. But that doesn't mean you can't. We're all friends here.", "type": "boolean" }, "factionHash": { "format": "uint32", "description": "If the value exists, this is the hash identifier for the Faction that owns this Progression.\r\nThis is purely for convenience, if you're looking at a progression and want to know if and who it's related to in terms of Faction Reputation.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyFactionDefinition" } }, "color": { "description": "The #RGB string value for the color related to this progression, if there is one.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Misc.DestinyColor" } ] }, "rankIcon": { "description": "For progressions that have it, this is the rank icon we use in the Companion, displayed above the progressions' rank value.", "type": "string" }, "rewardItems": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyProgressionRewardItemQuantity" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Progressions" }, "Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition": { "description": "Many Destiny*Definition contracts - the \"first order\" entities of Destiny that have their own tables in the Manifest Database - also have displayable information. This is the base class for that display information.", "type": "object", "properties": { "description": { "type": "string" }, "name": { "type": "string" }, "icon": { "description": "Note that \"icon\" is sometimes misleading, and should be interpreted in the context of the entity. For instance, in Destiny 1 the DestinyRecordBookDefinition's icon was a big picture of a book.\r\nBut usually, it will be a small square image that you can use as... well, an icon.\r\nThey are currently represented as 96px x 96px images.", "type": "string" }, "iconSequences": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyIconSequenceDefinition" } }, "highResIcon": { "description": "If this item has a high-res icon (at least for now, many things won't), then the path to that icon will be here.", "type": "string" }, "hasIcon": { "type": "boolean" } } }, "Destiny.Definitions.Common.DestinyIconSequenceDefinition": { "type": "object", "properties": { "frames": { "type": "array", "items": { "type": "string" } } } }, "Destiny.Definitions.DestinyProgressionDisplayPropertiesDefinition": { "type": "object", "properties": { "displayUnitsName": { "description": "When progressions show your \"experience\" gained, that bar has units (i.e. \"Experience\", \"Bad Dudes Snuffed Out\", whatever). This is the localized string for that unit of measurement.", "type": "string" }, "description": { "type": "string" }, "name": { "type": "string" }, "icon": { "description": "Note that \"icon\" is sometimes misleading, and should be interpreted in the context of the entity. For instance, in Destiny 1 the DestinyRecordBookDefinition's icon was a big picture of a book.\r\nBut usually, it will be a small square image that you can use as... well, an icon.\r\nThey are currently represented as 96px x 96px images.", "type": "string" }, "iconSequences": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyIconSequenceDefinition" } }, "highResIcon": { "description": "If this item has a high-res icon (at least for now, many things won't), then the path to that icon will be here.", "type": "string" }, "hasIcon": { "type": "boolean" } } }, "Destiny.DestinyProgressionScope": { "format": "int32", "description": "There are many Progressions in Destiny (think Character Level, or Reputation). These are the various \"Scopes\" of Progressions, which affect many things: * Where/if they are stored * How they are calculated * Where they can be used in other game logic", "enum": [ "0", "1", "2", "3", "4", "5", "6", "7", "8" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Account" }, { "numericValue": "1", "identifier": "Character" }, { "numericValue": "2", "identifier": "Clan" }, { "numericValue": "3", "identifier": "Item" }, { "numericValue": "4", "identifier": "ImplicitFromEquipment" }, { "numericValue": "5", "identifier": "Mapped" }, { "numericValue": "6", "identifier": "MappedAggregate" }, { "numericValue": "7", "identifier": "MappedStat" }, { "numericValue": "8", "identifier": "MappedUnlockValue" } ] }, "Destiny.Definitions.DestinyProgressionStepDefinition": { "description": "This defines a single Step in a progression (which roughly equates to a level. See DestinyProgressionDefinition for caveats).", "type": "object", "properties": { "stepName": { "description": "Very rarely, Progressions will have localized text describing the Level of the progression. This will be that localized text, if it exists. Otherwise, the standard appears to be to simply show the level numerically.", "type": "string" }, "displayEffectType": { "format": "int32", "description": "This appears to be, when you \"level up\", whether a visual effect will display and on what entity. See DestinyProgressionStepDisplayEffect for slightly more info.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyProgressionStepDisplayEffect" } }, "progressTotal": { "format": "int32", "description": "The total amount of progression points/\"experience\" you will need to initially reach this step. If this is the last step and the progression is repeating indefinitely (DestinyProgressionDefinition.repeatLastStep), this will also be the progress needed to level it up further by repeating this step again.", "type": "integer" }, "rewardItems": { "description": "A listing of items rewarded as a result of reaching this level.", "type": "array", "items": { "$ref": "#/definitions/Destiny.DestinyItemQuantity" } }, "icon": { "description": "If this progression step has a specific icon related to it, this is the icon to show.", "type": "string" } } }, "Destiny.DestinyProgressionStepDisplayEffect": { "format": "int32", "description": "If progression is earned, this determines whether the progression shows visual effects on the character or its item - or neither.", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Character" }, { "numericValue": "2", "identifier": "Item" } ] }, "Destiny.DestinyItemQuantity": { "description": "Used in a number of Destiny contracts to return data about an item stack and its quantity. Can optionally return an itemInstanceId if the item is instanced - in which case, the quantity returned will be 1. If it's not... uh, let me know okay? Thanks.", "type": "object", "properties": { "itemHash": { "format": "uint32", "description": "The hash identifier for the item in question. Use it to look up the item's DestinyInventoryItemDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "itemInstanceId": { "format": "int64", "description": "If this quantity is referring to a specific instance of an item, this will have the item's instance ID. Normally, this will be null.", "type": "integer" }, "quantity": { "format": "int32", "description": "The amount of the item needed/available depending on the context of where DestinyItemQuantity is being used.", "type": "integer" }, "hasConditionalVisibility": { "description": "Indicates that this item quantity may be conditionally shown or hidden, based on various sources of state. For example: server flags, account state, or character progress.", "type": "boolean" } } }, "Destiny.Definitions.DestinyInventoryItemDefinition": { "description": "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.\r\nIn 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.", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "tooltipNotifications": { "description": "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.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyItemTooltipNotification" } }, "collectibleHash": { "format": "uint32", "description": "If this item has a collectible related to it, this is the hash identifier of that collectible entry.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Collectibles.DestinyCollectibleDefinition" } }, "iconWatermark": { "description": "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.", "type": "string" }, "iconWatermarkShelved": { "description": "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.", "type": "string" }, "secondaryIcon": { "description": "A secondary icon associated with the item. Currently this is used in very context specific applications, such as Emblem Nameplates.", "type": "string" }, "secondaryOverlay": { "description": "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.", "type": "string" }, "secondarySpecial": { "description": "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.", "type": "string" }, "backgroundColor": { "description": "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.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Misc.DestinyColor" } ] }, "screenshot": { "description": "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.", "type": "string" }, "itemTypeDisplayName": { "description": "The localized title/name of the item's type. This can be whatever the designers want, and has no guarantee of consistency between items.", "type": "string" }, "flavorText": { "type": "string" }, "uiItemDisplayStyle": { "description": "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!", "type": "string" }, "itemTypeAndTierDisplayName": { "description": "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.", "type": "string" }, "displaySource": { "description": "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.", "type": "string" }, "tooltipStyle": { "description": "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).", "type": "string" }, "action": { "description": "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)", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyItemActionBlockDefinition" } ] }, "crafting": { "description": "Recipe items will have relevant crafting information available here.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyItemCraftingBlockDefinition" } ] }, "inventory": { "description": "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.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyItemInventoryBlockDefinition" } ] }, "setData": { "description": "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.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyItemSetBlockDefinition" } ] }, "stats": { "description": "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.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyItemStatBlockDefinition" } ] }, "emblemObjectiveHash": { "format": "uint32", "description": "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.", "type": "integer" }, "equippingBlock": { "description": "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.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyEquippingBlockDefinition" } ] }, "translationBlock": { "description": "If this item can be rendered, this block will be non-null and will be populated with rendering information.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyItemTranslationBlockDefinition" } ] }, "preview": { "description": "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.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyItemPreviewBlockDefinition" } ] }, "quality": { "description": "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.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyItemQualityBlockDefinition" } ] }, "value": { "description": "The conceptual \"Value\" of an item, if any was defined. See the DestinyItemValueBlockDefinition for more details.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyItemValueBlockDefinition" } ] }, "sourceData": { "description": "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.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyItemSourceBlockDefinition" } ] }, "objectives": { "description": "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.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyItemObjectiveBlockDefinition" } ] }, "metrics": { "description": "If this item has available metrics to be shown, this block will be non-null have the appropriate hashes defined.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyItemMetricBlockDefinition" } ] }, "plug": { "description": "If this item *is* a Plug, this will be non-null and the info defined herein. See DestinyItemPlugDefinition for more information.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Items.DestinyItemPlugDefinition" } ] }, "gearset": { "description": "If this item has related items in a \"Gear Set\", this will be non-null and the relationships defined herein.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyItemGearsetBlockDefinition" } ] }, "sack": { "description": "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.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyItemSackBlockDefinition" } ] }, "sockets": { "description": "If this item has any Sockets, this will be non-null and the individual sockets on the item will be defined herein.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyItemSocketBlockDefinition" } ] }, "summary": { "description": "Summary data about the item.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyItemSummaryBlockDefinition" } ] }, "talentGrid": { "description": "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.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyItemTalentGridBlockDefinition" } ] }, "investmentStats": { "description": "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.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyItemInvestmentStatDefinition" } }, "perks": { "description": "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.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyItemPerkEntryDefinition" } }, "loreHash": { "format": "uint32", "description": "If the item has any related Lore (DestinyLoreDefinition), this will be the hash identifier you can use to look up the lore definition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Lore.DestinyLoreDefinition" } }, "summaryItemHash": { "format": "uint32", "description": "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.\r\nThis happens sometimes when summarizing possible rewards in a tooltip. This is the item displayed instead, if it exists.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "animations": { "description": "If any animations were extracted from game content for this item, these will be the definitions of those animations.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Animations.DestinyAnimationReference" } }, "allowActions": { "description": "BNet may forbid the execution of actions on this item via the API. If that is occurring, allowActions will be set to false.", "type": "boolean" }, "links": { "description": "If we added any help or informational URLs about this item, these will be those links.", "type": "array", "items": { "$ref": "#/definitions/Links.HyperlinkReference" } }, "doesPostmasterPullHaveSideEffects": { "description": "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.\r\nIt 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.", "type": "boolean" }, "nonTransferrable": { "description": "The intrinsic transferability of an item.\r\nI hate that this boolean is negative - but there's a reason.\r\nJust 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.", "type": "boolean" }, "itemCategoryHashes": { "description": "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...)\r\nThe algorithm for these is, unfortunately, volatile. If you believe you see a miscategorized item, please let us know on the Bungie API forums.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyItemCategoryDefinition" } }, "specialItemType": { "format": "int32", "description": "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.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.SpecialItemType" } }, "itemType": { "format": "int32", "description": "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.\r\nitemCategoryHashes are the preferred way of identifying types, we have retained this enum for its convenience.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyItemType" } }, "itemSubType": { "format": "int32", "description": "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\".\r\nitemCategoryHashes are the preferred way of identifying types, we have retained this enum for its convenience.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyItemSubType" } }, "classType": { "format": "int32", "description": "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.\r\nIf you see a mis-classed item, please inform the developers in the Bungie API forum.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyClass" } }, "breakerType": { "format": "int32", "description": "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.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyBreakerType" } }, "breakerTypeHash": { "format": "uint32", "description": "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.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.BreakerTypes.DestinyBreakerTypeDefinition" } }, "equippable": { "description": "If true, then you will be allowed to equip the item if you pass its other requirements.\r\nThis being false means that you cannot equip the item under any circumstances.", "type": "boolean" }, "damageTypeHashes": { "description": "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.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyDamageTypeDefinition" } }, "damageTypes": { "description": "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.\r\nThis damage type prediction will only use the following to determine potential damage types:\r\n- Intrinsic perks\r\n- Talent Node perks\r\n- Known, reusable plugs for sockets", "type": "array", "items": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DamageType" } } }, "defaultDamageType": { "format": "int32", "description": "If the item has a damage type that could be considered to be default, it will be populated here.\r\nFor various upsetting reasons, it's surprisingly cumbersome to figure this out. I hope you're happy.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DamageType" } }, "defaultDamageTypeHash": { "format": "uint32", "description": "Similar to defaultDamageType, but represented as the hash identifier for a DestinyDamageTypeDefinition.\r\nI will likely regret leaving in the enumeration versions of these properties, but for now they're very convenient.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyDamageTypeDefinition" } }, "seasonHash": { "format": "uint32", "description": "If this item is related directly to a Season of Destiny, this is the hash identifier for that season.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Seasons.DestinySeasonDefinition" } }, "isWrapper": { "description": "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\".", "type": "boolean" }, "traitIds": { "description": "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.", "type": "array", "items": { "type": "string" } }, "traitHashes": { "description": "These are the corresponding trait definition hashes for the entries in traitIds.", "type": "array", "items": { "format": "uint32", "type": "integer" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Items" }, "Destiny.Definitions.DestinyItemTooltipNotification": { "type": "object", "properties": { "displayString": { "type": "string" }, "displayStyle": { "type": "string" } } }, "Destiny.Misc.DestinyColor": { "description": "Represents a color whose RGBA values are all represented as values between 0 and 255.", "type": "object", "properties": { "red": { "format": "byte", "type": "string" }, "green": { "format": "byte", "type": "string" }, "blue": { "format": "byte", "type": "string" }, "alpha": { "format": "byte", "type": "string" } } }, "Destiny.Definitions.DestinyItemActionBlockDefinition": { "description": "If an item can have an action performed on it (like \"Dismantle\"), it will be defined here if you care.", "type": "object", "properties": { "verbName": { "description": "Localized text for the verb of the action being performed.", "type": "string" }, "verbDescription": { "description": "Localized text describing the action being performed.", "type": "string" }, "isPositive": { "description": "The content has this property, however it's not entirely clear how it is used.", "type": "boolean" }, "overlayScreenName": { "description": "If the action has an overlay screen associated with it, this is the name of that screen. Unfortunately, we cannot return the screen's data itself.", "type": "string" }, "overlayIcon": { "description": "The icon associated with the overlay screen for the action, if any.", "type": "string" }, "requiredCooldownSeconds": { "format": "int32", "description": "The number of seconds to delay before allowing this action to be performed again.", "type": "integer" }, "requiredItems": { "description": "If the action requires other items to exist or be destroyed, this is the list of those items and requirements.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyItemActionRequiredItemDefinition" } }, "progressionRewards": { "description": "If performing this action earns you Progression, this is the list of progressions and values granted for those progressions by performing this action.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyProgressionRewardDefinition" } }, "actionTypeLabel": { "description": "The internal identifier for the action.", "type": "string" }, "requiredLocation": { "description": "Theoretically, an item could have a localized string for a hint about the location in which the action should be performed. In practice, no items yet have this property.", "type": "string" }, "requiredCooldownHash": { "format": "uint32", "description": "The identifier hash for the Cooldown associated with this action. We have not pulled this data yet for you to have more data to use for cooldowns.", "type": "integer" }, "deleteOnAction": { "description": "If true, the item is deleted when the action completes.", "type": "boolean" }, "consumeEntireStack": { "description": "If true, the entire stack is deleted when the action completes.", "type": "boolean" }, "useOnAcquire": { "description": "If true, this action will be performed as soon as you earn this item. Some rewards work this way, providing you a single item to pick up from a reward-granting vendor in-game and then immediately consuming itself to provide you multiple items.", "type": "boolean" } } }, "Destiny.Definitions.DestinyItemActionRequiredItemDefinition": { "description": "The definition of an item and quantity required in a character's inventory in order to perform an action.", "type": "object", "properties": { "count": { "format": "int32", "description": "The minimum quantity of the item you have to have.", "type": "integer" }, "itemHash": { "format": "uint32", "description": "The hash identifier of the item you need to have. Use it to look up the DestinyInventoryItemDefinition for more info.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "deleteOnAction": { "description": "If true, the item/quantity will be deleted from your inventory when the action is performed. Otherwise, you'll retain these required items after the action is complete.", "type": "boolean" } } }, "Destiny.Definitions.DestinyProgressionRewardDefinition": { "description": "Inventory Items can reward progression when actions are performed on them. A common example of this in Destiny 1 was Bounties, which would reward Experience on your Character and the like when you completed the bounty.\r\nNote that this maps to a DestinyProgressionMappingDefinition, and *not* a DestinyProgressionDefinition directly. This is apparently so that multiple progressions can be granted progression points/experience at the same time.", "type": "object", "properties": { "progressionMappingHash": { "format": "uint32", "description": "The hash identifier of the DestinyProgressionMappingDefinition that contains the progressions for which experience should be applied.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyProgressionMappingDefinition" } }, "amount": { "format": "int32", "description": "The amount of experience to give to each of the mapped progressions.", "type": "integer" }, "applyThrottles": { "description": "If true, the game's internal mechanisms to throttle progression should be applied.", "type": "boolean" } } }, "Destiny.Definitions.DestinyProgressionMappingDefinition": { "description": "Aggregations of multiple progressions.\r\nThese are used to apply rewards to multiple progressions at once. They can sometimes have human readable data as well, but only extremely sporadically.", "type": "object", "properties": { "displayProperties": { "description": "Infrequently defined in practice. Defer to the individual progressions' display properties.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "displayUnits": { "description": "The localized unit of measurement for progression across the progressions defined in this mapping. Unfortunately, this is very infrequently defined. Defer to the individual progressions' display units.", "type": "string" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } } }, "Destiny.Definitions.DestinyItemCraftingBlockDefinition": { "description": "If an item can have an action performed on it (like \"Dismantle\"), it will be defined here if you care.", "type": "object", "properties": { "outputItemHash": { "format": "uint32", "description": "A reference to the item definition that is created when crafting with this 'recipe' item.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "requiredSocketTypeHashes": { "description": "A list of socket type hashes that describes which sockets are required for crafting with this recipe.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Sockets.DestinySocketTypeDefinition" } }, "failedRequirementStrings": { "type": "array", "items": { "type": "string" } }, "baseMaterialRequirements": { "format": "uint32", "description": "A reference to the base material requirements for crafting with this recipe.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyMaterialRequirementSetDefinition" } }, "bonusPlugs": { "description": "A list of 'bonus' socket plugs that may be available if certain requirements are met.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyItemCraftingBlockBonusPlugDefinition" } } } }, "Destiny.Definitions.DestinyItemCraftingBlockBonusPlugDefinition": { "type": "object", "properties": { "socketTypeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Sockets.DestinySocketTypeDefinition" } }, "plugItemHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } } } }, "Destiny.Definitions.Sockets.DestinySocketTypeDefinition": { "description": "All Sockets have a \"Type\": a set of common properties that determine when the socket allows Plugs to be inserted, what Categories of Plugs can be inserted, and whether the socket is even visible at all given the current game/character/account state.\r\nSee DestinyInventoryItemDefinition for more information about Socketed items and Plugs.", "type": "object", "properties": { "displayProperties": { "description": "There are fields for this display data, but they appear to be unpopulated as of now. I am not sure where in the UI these would show if they even were populated, but I will continue to return this data in case it becomes useful.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "insertAction": { "description": "Defines what happens when a plug is inserted into sockets of this type.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Sockets.DestinyInsertPlugActionDefinition" } ] }, "plugWhitelist": { "description": "A list of Plug \"Categories\" that are allowed to be plugged into sockets of this type.\r\nThese should be compared against a given plug item's DestinyInventoryItemDefinition.plug.plugCategoryHash, which indicates the plug item's category.\r\nIf the plug's category matches any whitelisted plug, or if the whitelist is empty, it is allowed to be inserted.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Sockets.DestinyPlugWhitelistEntryDefinition" } }, "socketCategoryHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Sockets.DestinySocketCategoryDefinition" } }, "visibility": { "format": "int32", "description": "Sometimes a socket isn't visible. These are some of the conditions under which sockets of this type are not visible. Unfortunately, the truth of visibility is much, much more complex. Best to rely on the live data for whether the socket is visible and enabled.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinySocketVisibility" } }, "alwaysRandomizeSockets": { "type": "boolean" }, "isPreviewEnabled": { "type": "boolean" }, "hideDuplicateReusablePlugs": { "type": "boolean" }, "overridesUiAppearance": { "description": "This property indicates if the socket type determines whether Emblem icons and nameplates should be overridden by the inserted plug item's icon and nameplate.", "type": "boolean" }, "avoidDuplicatesOnInitialization": { "type": "boolean" }, "currencyScalars": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Sockets.DestinySocketTypeScalarMaterialRequirementEntry" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "SocketTypes" }, "Destiny.Definitions.Sockets.DestinyInsertPlugActionDefinition": { "description": "Data related to what happens while a plug is being inserted, mostly for UI purposes.", "type": "object", "properties": { "actionExecuteSeconds": { "format": "int32", "description": "How long it takes for the Plugging of the item to be completed once it is initiated, if you care.", "type": "integer" }, "actionType": { "format": "int32", "description": "The type of action being performed when you act on this Socket Type. The most common value is \"insert plug\", but there are others as well (for instance, a \"Masterwork\" socket may allow for Re-initialization, and an Infusion socket allows for items to be consumed to upgrade the item)", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.SocketTypeActionType" } } } }, "Destiny.SocketTypeActionType": { "format": "int32", "description": "Indicates the type of actions that can be performed", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "InsertPlug" }, { "numericValue": "1", "identifier": "InfuseItem" }, { "numericValue": "2", "identifier": "ReinitializeSocket" } ] }, "Destiny.Definitions.Sockets.DestinyPlugWhitelistEntryDefinition": { "description": "Defines a plug \"Category\" that is allowed to be plugged into a socket of this type.\r\nThis should be compared against a given plug item's DestinyInventoryItemDefinition.plug.plugCategoryHash, which indicates the plug item's category.", "type": "object", "properties": { "categoryHash": { "format": "uint32", "description": "The hash identifier of the Plug Category to compare against the plug item's plug.plugCategoryHash.\r\nNote that this does NOT relate to any Definition in itself, it is only used for comparison purposes.", "type": "integer" }, "categoryIdentifier": { "description": "The string identifier for the category, which is here mostly for debug purposes.", "type": "string" }, "reinitializationPossiblePlugHashes": { "description": "The list of all plug items (DestinyInventoryItemDefinition) that the socket may randomly be populated with when reinitialized.\r\nWhich ones you should actually show are determined by the plug being inserted into the socket, and the socket’s type.\r\nWhen you inspect the plug that could go into a Masterwork Socket, look up the socket type of the socket being inspected and find the DestinySocketTypeDefinition.\r\nThen, look at the Plugs that can fit in that socket. Find the Whitelist in the DestinySocketTypeDefinition that matches the plug item’s categoryhash.\r\nThat whitelist entry will potentially have a new “reinitializationPossiblePlugHashes” property.If it does, that means we know what it will roll if you try to insert this plug into this socket.", "type": "array", "items": { "format": "uint32", "type": "integer" } } } }, "Destiny.DestinySocketVisibility": { "format": "int32", "enum": [ "0", "1", "2", "3" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Visible" }, { "numericValue": "1", "identifier": "Hidden" }, { "numericValue": "2", "identifier": "HiddenWhenEmpty" }, { "numericValue": "3", "identifier": "HiddenIfNoPlugsAvailable" } ] }, "Destiny.Definitions.Sockets.DestinySocketTypeScalarMaterialRequirementEntry": { "type": "object", "properties": { "currencyItemHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "scalarValue": { "format": "int32", "type": "integer" } } }, "Destiny.Definitions.Sockets.DestinySocketCategoryDefinition": { "description": "Sockets on an item are organized into Categories visually.\r\nYou can find references to the socket category defined on an item's DestinyInventoryItemDefinition.sockets.socketCategories property.\r\nThis has the display information for rendering the categories' header, and a hint for how the UI should handle showing this category.\r\nThe shitty thing about this, however, is that the socket categories' UI style can be overridden by the item's UI style. For instance, the Socket Category used by Emote Sockets says it's \"consumable,\" but that's a lie: they're all reusable, and overridden by the detail UI pages in ways that we can't easily account for in the API.\r\nAs a result, I will try to compile these rules into the individual sockets on items, and provide the best hint possible there through the plugSources property. In the future, I may attempt to use this information in conjunction with the item to provide a more usable UI hint on the socket layer, but for now improving the consistency of plugSources is the best I have time to provide. (See https://github.com/Bungie-net/api/issues/522 for more info)", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "uiCategoryStyle": { "format": "uint32", "description": "A string hinting to the game's UI system about how the sockets in this category should be displayed.\r\nBNet doesn't use it: it's up to you to find valid values and make your own special UI if you want to honor this category style.", "type": "integer" }, "categoryStyle": { "format": "int32", "description": "Same as uiCategoryStyle, but in a more usable enumeration form.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinySocketCategoryStyle" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "SocketCategories" }, "Destiny.DestinySocketCategoryStyle": { "format": "int32", "description": "Represents the possible and known UI styles used by the game for rendering Socket Categories.", "enum": [ "0", "1", "2", "3", "4", "5", "6", "7", "8" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Unknown" }, { "numericValue": "1", "identifier": "Reusable" }, { "numericValue": "2", "identifier": "Consumable" }, { "numericValue": "3", "identifier": "Unlockable" }, { "numericValue": "4", "identifier": "Intrinsic" }, { "numericValue": "5", "identifier": "EnergyMeter" }, { "numericValue": "6", "identifier": "LargePerk" }, { "numericValue": "7", "identifier": "Abilities" }, { "numericValue": "8", "identifier": "Supers" } ] }, "Destiny.Definitions.DestinyMaterialRequirementSetDefinition": { "description": "Represent a set of material requirements: Items that either need to be owned or need to be consumed in order to perform an action.\r\nA variety of other entities refer to these as gatekeepers and payments for actions that can be performed in game.", "type": "object", "properties": { "materials": { "description": "The list of all materials that are required.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyMaterialRequirement" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "MaterialRequirementSets" }, "Destiny.Definitions.DestinyMaterialRequirement": { "description": "Many actions relating to items require you to expend materials: - Activating a talent node - Inserting a plug into a socket The items will refer to material requirements by a materialRequirementsHash in these cases, and this is the definition for those requirements in terms of the item required, how much of it is required and other interesting info. This is one of the rare/strange times where a single contract class is used both in definitions *and* in live data response contracts. I'm not sure yet whether I regret that.", "type": "object", "properties": { "itemHash": { "format": "uint32", "description": "The hash identifier of the material required. Use it to look up the material's DestinyInventoryItemDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "deleteOnAction": { "description": "If True, the material will be removed from the character's inventory when the action is performed.", "type": "boolean" }, "count": { "format": "int32", "description": "The amount of the material required.", "type": "integer" }, "countIsConstant": { "description": "If true, the material requirement count value is constant. Since The Witch Queen expansion, some material requirement counts can be dynamic and will need to be returned with an API call.", "type": "boolean" }, "omitFromRequirements": { "description": "If True, this requirement is \"silent\": don't bother showing it in a material requirements display. I mean, I'm not your mom: I'm not going to tell you you *can't* show it. But we won't show it in our UI.", "type": "boolean" } } }, "Destiny.Definitions.DestinyItemInventoryBlockDefinition": { "description": "If the item can exist in an inventory - the overwhelming majority of them can and do - then this is the basic properties regarding the item's relationship with the inventory.", "type": "object", "properties": { "stackUniqueLabel": { "description": "If this string is populated, you can't have more than one stack with this label in a given inventory. Note that this is different from the equipping block's unique label, which is used for equipping uniqueness.", "type": "string" }, "maxStackSize": { "format": "int32", "description": "The maximum quantity of this item that can exist in a stack.", "type": "integer" }, "bucketTypeHash": { "format": "uint32", "description": "The hash identifier for the DestinyInventoryBucketDefinition to which this item belongs. I should have named this \"bucketHash\", but too many things refer to it now. Sigh.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryBucketDefinition" } }, "recoveryBucketTypeHash": { "format": "uint32", "description": "If the item is picked up by the lost loot queue, this is the hash identifier for the DestinyInventoryBucketDefinition into which it will be placed. Again, I should have named this recoveryBucketHash instead.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryBucketDefinition" } }, "tierTypeHash": { "format": "uint32", "description": "The hash identifier for the Tier Type of the item, use to look up its DestinyItemTierTypeDefinition if you need to show localized data for the item's tier.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Items.DestinyItemTierTypeDefinition" } }, "isInstanceItem": { "description": "If TRUE, this item is instanced. Otherwise, it is a generic item that merely has a quantity in a stack (like Glimmer).", "type": "boolean" }, "tierTypeName": { "description": "The localized name of the tier type, which is a useful shortcut so you don't have to look up the definition every time. However, it's mostly a holdover from days before we had a DestinyItemTierTypeDefinition to refer to.", "type": "string" }, "tierType": { "format": "int32", "description": "The enumeration matching the tier type of the item to known values, again for convenience sake.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.TierType" } }, "expirationTooltip": { "description": "The tooltip message to show, if any, when the item expires.", "type": "string" }, "expiredInActivityMessage": { "description": "If the item expires while playing in an activity, we show a different message.", "type": "string" }, "expiredInOrbitMessage": { "description": "If the item expires in orbit, we show a... more different message. (\"Consummate V's, consummate!\")", "type": "string" }, "suppressExpirationWhenObjectivesComplete": { "type": "boolean" }, "recipeItemHash": { "format": "uint32", "description": "A reference to the associated crafting 'recipe' item definition, if this item can be crafted.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } } } }, "Destiny.TierType": { "format": "int32", "enum": [ "0", "1", "2", "3", "4", "5", "6" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Unknown" }, { "numericValue": "1", "identifier": "Currency" }, { "numericValue": "2", "identifier": "Basic" }, { "numericValue": "3", "identifier": "Common" }, { "numericValue": "4", "identifier": "Rare" }, { "numericValue": "5", "identifier": "Superior" }, { "numericValue": "6", "identifier": "Exotic" } ] }, "Destiny.Definitions.DestinyInventoryBucketDefinition": { "description": "An Inventory (be it Character or Profile level) is comprised of many Buckets. An example of a bucket is \"Primary Weapons\", where all of the primary weapons on a character are gathered together into a single visual element in the UI: a subset of the inventory that has a limited number of slots, and in this case also has an associated Equipment Slot for equipping an item in the bucket.\r\nItem definitions declare what their \"default\" bucket is (DestinyInventoryItemDefinition.inventory.bucketTypeHash), and Item instances will tell you which bucket they are currently residing in (DestinyItemComponent.bucketHash). You can use this information along with the DestinyInventoryBucketDefinition to show these items grouped by bucket.\r\nYou cannot transfer an item to a bucket that is not its Default without going through a Vendor's \"accepted items\" (DestinyVendorDefinition.acceptedItems). This is how transfer functionality like the Vault is implemented, as a feature of a Vendor. See the vendor's acceptedItems property for more details.", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "scope": { "format": "int32", "description": "Where the bucket is found. 0 = Character, 1 = Account", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.BucketScope" } }, "category": { "format": "int32", "description": "An enum value for what items can be found in the bucket. See the BucketCategory enum for more details.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.BucketCategory" } }, "bucketOrder": { "format": "int32", "description": "Use this property to provide a quick-and-dirty recommended ordering for buckets in the UI. Most UIs will likely want to forsake this for something more custom and manual.", "type": "integer" }, "itemCount": { "format": "int32", "description": "The maximum # of item \"slots\" in a bucket. A slot is a given combination of item + quantity.\r\nFor instance, a Weapon will always take up a single slot, and always have a quantity of 1. But a material could take up only a single slot with hundreds of quantity.", "type": "integer" }, "location": { "format": "int32", "description": "Sometimes, inventory buckets represent conceptual \"locations\" in the game that might not be expected. This value indicates the conceptual location of the bucket, regardless of where it is actually contained on the character/account. \r\nSee ItemLocation for details. \r\nNote that location includes the Vault and the Postmaster (both of whom being just inventory buckets with additional actions that can be performed on them through a Vendor)", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.ItemLocation" } }, "hasTransferDestination": { "description": "If TRUE, there is at least one Vendor that can transfer items to/from this bucket. See the DestinyVendorDefinition's acceptedItems property for more information on how transferring works.", "type": "boolean" }, "enabled": { "description": "If True, this bucket is enabled. Disabled buckets may include buckets that were included for test purposes, or that were going to be used but then were abandoned but never removed from content *cough*.", "type": "boolean" }, "fifo": { "description": "if a FIFO bucket fills up, it will delete the oldest item from said bucket when a new item tries to be added to it. If this is FALSE, the bucket will not allow new items to be placed in it until room is made by the user manually deleting items from it. You can see an example of this with the Postmaster's bucket.", "type": "boolean" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "InventoryBuckets" }, "Destiny.BucketScope": { "format": "int32", "enum": [ "0", "1" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Character" }, { "numericValue": "1", "identifier": "Account" } ] }, "Destiny.BucketCategory": { "format": "int32", "enum": [ "0", "1", "2", "3", "4" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Invisible" }, { "numericValue": "1", "identifier": "Item" }, { "numericValue": "2", "identifier": "Currency" }, { "numericValue": "3", "identifier": "Equippable" }, { "numericValue": "4", "identifier": "Ignored" } ] }, "Destiny.ItemLocation": { "format": "int32", "enum": [ "0", "1", "2", "3", "4" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Unknown" }, { "numericValue": "1", "identifier": "Inventory" }, { "numericValue": "2", "identifier": "Vault" }, { "numericValue": "3", "identifier": "Vendor" }, { "numericValue": "4", "identifier": "Postmaster" } ] }, "Destiny.Definitions.Items.DestinyItemTierTypeDefinition": { "description": "Defines the tier type of an item. Mostly this provides human readable properties for types like Common, Rare, etc...\r\nIt also provides some base data for infusion that could be useful.", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "infusionProcess": { "description": "If this tier defines infusion properties, they will be contained here.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Items.DestinyItemTierTypeInfusionBlock" } ] }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "ItemTierTypes" }, "Destiny.Definitions.Items.DestinyItemTierTypeInfusionBlock": { "type": "object", "properties": { "baseQualityTransferRatio": { "format": "float", "description": "The default portion of quality that will transfer from the infuser to the infusee item. (InfuserQuality - InfuseeQuality) * baseQualityTransferRatio = base quality transferred.", "type": "number" }, "minimumQualityIncrement": { "format": "int32", "description": "As long as InfuserQuality > InfuseeQuality, the amount of quality bestowed is guaranteed to be at least this value, even if the transferRatio would dictate that it should be less. The total amount of quality that ends up in the Infusee cannot exceed the Infuser's quality however (for instance, if you infuse a 300 item with a 301 item and the minimum quality increment is 10, the infused item will not end up with 310 quality)", "type": "integer" } } }, "Destiny.Definitions.DestinyItemSetBlockDefinition": { "description": "Primarily for Quests, this is the definition of properties related to the item if it is a quest and its various quest steps.", "type": "object", "properties": { "itemList": { "description": "A collection of hashes of set items, for items such as Quest Metadata items that possess this data.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyItemSetBlockEntryDefinition" } }, "requireOrderedSetItemAdd": { "description": "If true, items in the set can only be added in increasing order, and adding an item will remove any previous item. For Quests, this is by necessity true. Only one quest step is present at a time, and previous steps are removed as you advance in the quest.", "type": "boolean" }, "setIsFeatured": { "description": "If true, the UI should treat this quest as \"featured\"", "type": "boolean" }, "setType": { "description": "A string identifier we can use to attempt to identify the category of the Quest.", "type": "string" }, "questLineName": { "description": "The name of the quest line that this quest step is a part of.", "type": "string" }, "questLineDescription": { "description": "The description of the quest line that this quest step is a part of.", "type": "string" }, "questStepSummary": { "description": "An additional summary of this step in the quest line.", "type": "string" } } }, "Destiny.Definitions.DestinyItemSetBlockEntryDefinition": { "description": "Defines a particular entry in an ItemSet (AKA a particular Quest Step in a Quest)", "type": "object", "properties": { "trackingValue": { "format": "int32", "description": "Used for tracking which step a user reached. These values will be populated in the user's internal state, which we expose externally as a more usable DestinyQuestStatus object. If this item has been obtained, this value will be set in trackingUnlockValueHash.", "type": "integer" }, "itemHash": { "format": "uint32", "description": "This is the hash identifier for a DestinyInventoryItemDefinition representing this quest step.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } } } }, "Destiny.Definitions.DestinyItemStatBlockDefinition": { "description": "Information about the item's calculated stats, with as much data as we can find for the stats without having an actual instance of the item.\r\nNote that this means the entire concept of providing these stats is fundamentally insufficient: we cannot predict with 100% accuracy the conditions under which an item can spawn, so we use various heuristics to attempt to simulate the conditions as accurately as possible. Actual stats for items in-game can and will vary, but these should at least be useful base points for comparison and display.\r\nIt is also worth noting that some stats, like Magazine size, have further calculations performed on them by scripts in-game and on the game servers that BNet does not have access to. We cannot know how those stats are further transformed, and thus some stats will be inaccurate even on instances of items in BNet vs. how they appear in-game. This is a known limitation of our item statistics, without any planned fix.", "type": "object", "properties": { "disablePrimaryStatDisplay": { "description": "If true, the game won't show the \"primary\" stat on this item when you inspect it.\r\nNOTE: This is being manually mapped, because I happen to want it in a block that isn't going to directly create this derivative block.", "type": "boolean" }, "statGroupHash": { "format": "uint32", "description": "If the item's stats are meant to be modified by a DestinyStatGroupDefinition, this will be the identifier for that definition.\r\nIf you are using live data or precomputed stats data on the DestinyInventoryItemDefinition.stats.stats property, you don't have to worry about statGroupHash and how it alters stats: the already altered stats are provided to you. But if you want to see how the sausage gets made, or perform computations yourself, this is valuable information.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyStatGroupDefinition" } }, "stats": { "description": "If you are looking for precomputed values for the stats on a weapon, this is where they are stored. Technically these are the \"Display\" stat values. Please see DestinyStatsDefinition for what Display Stat Values means, it's a very long story... but essentially these are the closest values BNet can get to the item stats that you see in-game.\r\nThese stats are keyed by the DestinyStatDefinition's hash identifier for the stat that's found on the item.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemStatDefinition" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyStatDefinition" } }, "hasDisplayableStats": { "description": "A quick and lazy way to determine whether any stat other than the \"primary\" stat is actually visible on the item. Items often have stats that we return in case people find them useful, but they're not part of the \"Stat Group\" and thus we wouldn't display them in our UI. If this is False, then we're not going to display any of these stats other than the primary one.", "type": "boolean" }, "primaryBaseStatHash": { "format": "uint32", "description": "This stat is determined to be the \"primary\" stat, and can be looked up in the stats or any other stat collection related to the item.\r\nUse this hash to look up the stat's value using DestinyInventoryItemDefinition.stats.stats, and the renderable data for the primary stat in the related DestinyStatDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyStatDefinition" } } } }, "Destiny.Definitions.DestinyInventoryItemStatDefinition": { "description": "Defines a specific stat value on an item, and the minimum/maximum range that we could compute for the item based on our heuristics for how the item might be generated.\r\nNot guaranteed to match real-world instances of the item, but should hopefully at least be close. If it's not close, let us know on the Bungie API forums.", "type": "object", "properties": { "statHash": { "format": "uint32", "description": "The hash for the DestinyStatDefinition representing this stat.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyStatDefinition" } }, "value": { "format": "int32", "description": "This value represents the stat value assuming the minimum possible roll but accounting for any mandatory bonuses that should be applied to the stat on item creation.\r\nIn Destiny 1, this was different from the \"minimum\" value because there were certain conditions where an item could be theoretically lower level/value than the initial roll. \r\nIn Destiny 2, this is not possible unless Talent Grids begin to be used again for these purposes or some other system change occurs... thus in practice, value and minimum should be the same in Destiny 2. Good riddance.", "type": "integer" }, "minimum": { "format": "int32", "description": "The minimum possible value for this stat that we think the item can roll.", "type": "integer" }, "maximum": { "format": "int32", "description": "The maximum possible value for this stat that we think the item can roll.\r\nWARNING: In Destiny 1, this field was calculated using the potential stat rolls on the item's talent grid. In Destiny 2, items no longer have meaningful talent grids and instead have sockets: but the calculation of this field was never altered to adapt to this change. As such, this field should be considered deprecated until we can address this oversight.", "type": "integer" }, "displayMaximum": { "format": "int32", "description": "The maximum possible value for the stat as shown in the UI, if it is being shown somewhere that reveals maximum in the UI (such as a bar chart-style view).\r\nThis is pulled directly from the item's DestinyStatGroupDefinition, and placed here for convenience.\r\nIf not returned, there is no maximum to use (and thus the stat should not be shown in a way that assumes there is a limit to the stat)", "type": "integer" } } }, "Destiny.Definitions.DestinyStatDefinition": { "description": "This represents a stat that's applied to a character or an item (such as a weapon, piece of armor, or a vehicle).\r\nAn example of a stat might be Attack Power on a weapon.\r\nStats go through a complex set of transformations before they end up being shown to the user as a number or a progress bar, and those transformations are fundamentally intertwined with the concept of a \"Stat Group\" (DestinyStatGroupDefinition). Items have both Stats and a reference to a Stat Group, and it is the Stat Group that takes the raw stat information and gives it both rendering metadata (such as whether to show it as a number or a progress bar) and the final transformation data (interpolation tables to turn the raw investment stat into a display stat). Please see DestinyStatGroupDefinition for more information on that transformational process.\r\nStats are segregated from Stat Groups because different items and types of items can refer to the same stat, but have different \"scales\" for the stat while still having the same underlying value. For example, both a Shotgun and an Auto Rifle may have a \"raw\" impact stat of 50, but the Auto Rifle's Stat Group will scale that 50 down so that, when it is displayed, it is a smaller value relative to the shotgun. (this is a totally made up example, don't assume shotguns have naturally higher impact than auto rifles because of this)\r\nA final caveat is that some stats, even after this \"final\" transformation, go through yet another set of transformations directly in the game as a result of dynamic, stateful scripts that get run. BNet has no access to these scripts, nor any way to know which scripts get executed. As a result, the stats for an item that you see in-game - particularly for stats that are often impacted by Perks, like Magazine Size - can change dramatically from what we return on Bungie.Net. This is a known issue with no fix coming down the pipeline. Take these stats with a grain of salt.\r\nStats actually go through four transformations, for those interested:\r\n1) \"Sandbox\" stat, the \"most raw\" form. These are pretty much useless without transformations applied, and thus are not currently returned in the API. If you really want these, we can provide them. Maybe someone could do something cool with it?\r\n2) \"Investment\" stat (the stat's value after DestinyStatDefinition's interpolation tables and aggregation logic is applied to the \"Sandbox\" stat value)\r\n3) \"Display\" stat (the stat's base UI-visible value after DestinyStatGroupDefinition's interpolation tables are applied to the Investment Stat value. For most stats, this is what is displayed.)\r\n4) Underlying in-game stat (the stat's actual value according to the game, after the game runs dynamic scripts based on the game and character's state. This is the final transformation that BNet does not have access to. For most stats, this is not actually displayed to the user, with the exception of Magazine Size which is then piped back to the UI for display in-game, but not to BNet.)", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "aggregationType": { "format": "int32", "description": "Stats can exist on a character or an item, and they may potentially be aggregated in different ways. The DestinyStatAggregationType enum value indicates the way that this stat is being aggregated.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyStatAggregationType" } }, "hasComputedBlock": { "description": "True if the stat is computed rather than being delivered as a raw value on items.\r\nFor instance, the Light stat in Destiny 1 was a computed stat.", "type": "boolean" }, "statCategory": { "format": "int32", "description": "The category of the stat, according to the game.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyStatCategory" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Stats" }, "Destiny.DestinyStatAggregationType": { "format": "int32", "description": "When a Stat (DestinyStatDefinition) is aggregated, this is the rules used for determining the level and formula used for aggregation.\r\n* CharacterAverage = apply a weighted average using the related DestinyStatGroupDefinition on the DestinyInventoryItemDefinition across the character's equipped items. See both of those definitions for details. * Character = don't aggregate: the stat should be located and used directly on the character. * Item = don't aggregate: the stat should be located and used directly on the item.", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "CharacterAverage" }, { "numericValue": "1", "identifier": "Character" }, { "numericValue": "2", "identifier": "Item" } ] }, "Destiny.DestinyStatCategory": { "format": "int32", "description": "At last, stats have categories. Use this for whatever purpose you might wish.", "enum": [ "0", "1", "2", "3" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Gameplay" }, { "numericValue": "1", "identifier": "Weapon" }, { "numericValue": "2", "identifier": "Defense" }, { "numericValue": "3", "identifier": "Primary" } ] }, "Destiny.Definitions.DestinyStatGroupDefinition": { "description": "When an inventory item (DestinyInventoryItemDefinition) has Stats (such as Attack Power), the item will refer to a Stat Group. This definition enumerates the properties used to transform the item's \"Investment\" stats into \"Display\" stats.\r\nSee DestinyStatDefinition's documentation for information about the transformation of Stats, and the meaning of an Investment vs. a Display stat.\r\nIf you don't want to do these calculations on your own, fear not: pulling live data from the BNet endpoints will return display stat values pre-computed and ready for you to use. I highly recommend this approach, saves a lot of time and also accounts for certain stat modifiers that can't easily be accounted for without live data (such as stat modifiers on Talent Grids and Socket Plugs)", "type": "object", "properties": { "maximumValue": { "format": "int32", "description": "The maximum possible value that any stat in this group can be transformed into.\r\nThis is used by stats that *don't* have scaledStats entries below, but that still need to be displayed as a progress bar, in which case this is used as the upper bound for said progress bar. (the lower bound is always 0)", "type": "integer" }, "uiPosition": { "format": "int32", "description": "This apparently indicates the position of the stats in the UI? I've returned it in case anyone can use it, but it's not of any use to us on BNet. Something's being lost in translation with this value.", "type": "integer" }, "scaledStats": { "description": "Any stat that requires scaling to be transformed from an \"Investment\" stat to a \"Display\" stat will have an entry in this list. For more information on what those types of stats mean and the transformation process, see DestinyStatDefinition.\r\nIn retrospect, I wouldn't mind if this was a dictionary keyed by the stat hash instead. But I'm going to leave it be because [[After Apple Picking]].", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyStatDisplayDefinition" } }, "overrides": { "description": "The game has the ability to override, based on the stat group, what the localized text is that is displayed for Stats being shown on the item.\r\nMercifully, no Stat Groups use this feature currently. If they start using them, we'll all need to start using them (and those of you who are more prudent than I am can go ahead and start pre-checking for this.)", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Definitions.DestinyStatOverrideDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "StatGroups" }, "Destiny.Definitions.DestinyStatDisplayDefinition": { "description": "Describes the way that an Item Stat (see DestinyStatDefinition) is transformed using the DestinyStatGroupDefinition related to that item. See both of the aforementioned definitions for more information about the stages of stat transformation.\r\nThis represents the transformation of a stat into a \"Display\" stat (the closest value that BNet can get to the in-game display value of the stat)", "type": "object", "properties": { "statHash": { "format": "uint32", "description": "The hash identifier for the stat being transformed into a Display stat.\r\nUse it to look up the DestinyStatDefinition, or key into a DestinyInventoryItemDefinition's stats property.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyStatDefinition" } }, "maximumValue": { "format": "int32", "description": "Regardless of the output of interpolation, this is the maximum possible value that the stat can be. It should also be used as the upper bound for displaying the stat as a progress bar (the minimum always being 0)", "type": "integer" }, "displayAsNumeric": { "description": "If this is true, the stat should be displayed as a number. Otherwise, display it as a progress bar. Or, you know, do whatever you want. There's no displayAsNumeric police.", "type": "boolean" }, "displayInterpolation": { "description": "The interpolation table representing how the Investment Stat is transformed into a Display Stat. \r\nSee DestinyStatDefinition for a description of the stages of stat transformation.", "type": "array", "items": { "$ref": "#/definitions/Interpolation.InterpolationPoint" } } } }, "Interpolation.InterpolationPoint": { "type": "object", "properties": { "value": { "format": "int32", "type": "integer" }, "weight": { "format": "int32", "type": "integer" } } }, "Destiny.Definitions.DestinyStatOverrideDefinition": { "description": "Stat Groups (DestinyStatGroupDefinition) has the ability to override the localized text associated with stats that are to be shown on the items with which they are associated.\r\nThis defines a specific overridden stat. You could theoretically check these before rendering your stat UI, and for each stat that has an override show these displayProperties instead of those on the DestinyStatDefinition.\r\nOr you could be like us, and skip that for now because the game has yet to actually use this feature. But know that it's here, waiting for a resilliant young designer to take up the mantle and make us all look foolish by showing the wrong name for stats.\r\nNote that, if this gets used, the override will apply only to items using the overriding Stat Group. Other items will still show the default stat's name/description.", "type": "object", "properties": { "statHash": { "format": "uint32", "description": "The hash identifier of the stat whose display properties are being overridden.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyStatDefinition" } }, "displayProperties": { "description": "The display properties to show instead of the base DestinyStatDefinition display properties.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] } } }, "Destiny.Definitions.DestinyEquippingBlockDefinition": { "description": "Items that can be equipped define this block. It contains information we need to understand how and when the item can be equipped.", "type": "object", "properties": { "gearsetItemHash": { "format": "uint32", "description": "If the item is part of a gearset, this is a reference to that gearset item.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "uniqueLabel": { "description": "If defined, this is the label used to check if the item has other items of matching types already equipped. \r\nFor instance, when you aren't allowed to equip more than one Exotic Weapon, that's because all exotic weapons have identical uniqueLabels and the game checks the to-be-equipped item's uniqueLabel vs. all other already equipped items (other than the item in the slot that's about to be occupied).", "type": "string" }, "uniqueLabelHash": { "format": "uint32", "description": "The hash of that unique label. Does not point to a specific definition.", "type": "integer" }, "equipmentSlotTypeHash": { "format": "uint32", "description": "An equipped item *must* be equipped in an Equipment Slot. This is the hash identifier of the DestinyEquipmentSlotDefinition into which it must be equipped.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyEquipmentSlotDefinition" } }, "attributes": { "format": "int32", "description": "These are custom attributes on the equippability of the item.\r\nFor now, this can only be \"equip on acquire\", which would mean that the item will be automatically equipped as soon as you pick it up.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.EquippingItemBlockAttributes" } }, "ammoType": { "format": "int32", "description": "Ammo type used by a weapon is no longer determined by the bucket in which it is contained. If the item has an ammo type - i.e. if it is a weapon - this will be the type of ammunition expected.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyAmmunitionType" } }, "displayStrings": { "description": "These are strings that represent the possible Game/Account/Character state failure conditions that can occur when trying to equip the item. They match up one-to-one with requiredUnlockExpressions.", "type": "array", "items": { "type": "string" } } } }, "Destiny.EquippingItemBlockAttributes": { "format": "int32", "enum": [ "0", "1" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "EquipOnAcquire" } ] }, "Destiny.DestinyAmmunitionType": { "format": "int32", "enum": [ "0", "1", "2", "3", "4" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Primary" }, { "numericValue": "2", "identifier": "Special" }, { "numericValue": "3", "identifier": "Heavy" }, { "numericValue": "4", "identifier": "Unknown" } ] }, "Destiny.Definitions.DestinyEquipmentSlotDefinition": { "description": "Characters can not only have Inventory buckets (containers of items that are generally matched by their type or functionality), they can also have Equipment Slots.\r\nThe Equipment Slot is an indicator that the related bucket can have instanced items equipped on the character. For instance, the Primary Weapon bucket has an Equipment Slot that determines whether you can equip primary weapons, and holds the association between its slot and the inventory bucket from which it can have items equipped.\r\nAn Equipment Slot must have a related Inventory Bucket, but not all inventory buckets must have Equipment Slots.", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "equipmentCategoryHash": { "format": "uint32", "description": "These technically point to \"Equipment Category Definitions\". But don't get excited. There's nothing of significant value in those definitions, so I didn't bother to expose them. You can use the hash here to group equipment slots by common functionality, which serves the same purpose as if we had the Equipment Category definitions exposed.", "type": "integer" }, "bucketTypeHash": { "format": "uint32", "description": "The inventory bucket that owns this equipment slot.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryBucketDefinition" } }, "applyCustomArtDyes": { "description": "If True, equipped items should have their custom art dyes applied when rendering the item. Otherwise, custom art dyes on an item should be ignored if the item is equipped in this slot.", "type": "boolean" }, "artDyeChannels": { "description": "The Art Dye Channels that apply to this equipment slot.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyArtDyeReference" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "EquipmentSlots" }, "Destiny.Definitions.DestinyArtDyeReference": { "type": "object", "properties": { "artDyeChannelHash": { "format": "uint32", "type": "integer" } } }, "Destiny.Definitions.DestinyItemTranslationBlockDefinition": { "description": "This Block defines the rendering data associated with the item, if any.", "type": "object", "properties": { "weaponPatternIdentifier": { "type": "string" }, "weaponPatternHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinySandboxPatternDefinition" } }, "defaultDyes": { "type": "array", "items": { "$ref": "#/definitions/Destiny.DyeReference" } }, "lockedDyes": { "type": "array", "items": { "$ref": "#/definitions/Destiny.DyeReference" } }, "customDyes": { "type": "array", "items": { "$ref": "#/definitions/Destiny.DyeReference" } }, "arrangements": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyGearArtArrangementReference" } }, "hasGeometry": { "type": "boolean" } } }, "Destiny.DyeReference": { "type": "object", "properties": { "channelHash": { "format": "uint32", "type": "integer" }, "dyeHash": { "format": "uint32", "type": "integer" } } }, "Destiny.Definitions.DestinyGearArtArrangementReference": { "type": "object", "properties": { "classHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyClassDefinition" } }, "artArrangementHash": { "format": "uint32", "type": "integer" } } }, "Destiny.Definitions.DestinyClassDefinition": { "description": "Defines a Character Class in Destiny 2. These are types of characters you can play, like Titan, Warlock, and Hunter.", "type": "object", "properties": { "classType": { "format": "int32", "description": "In Destiny 1, we added a convenience Enumeration for referring to classes. We've kept it, though mostly for posterity. This is the enum value for this definition's class.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyClass" } }, "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "genderedClassNames": { "description": "A localized string referring to the singular form of the Class's name when referred to in gendered form. Keyed by the DestinyGender.", "type": "object", "additionalProperties": { "type": "string" } }, "genderedClassNamesByGenderHash": { "type": "object", "additionalProperties": { "type": "string" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyGenderDefinition" } }, "mentorVendorHash": { "format": "uint32", "description": "Mentors don't really mean anything anymore. Don't expect this to be populated.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Classes" }, "Destiny.DestinyClass": { "format": "int32", "enum": [ "0", "1", "2", "3" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Titan" }, { "numericValue": "1", "identifier": "Hunter" }, { "numericValue": "2", "identifier": "Warlock" }, { "numericValue": "3", "identifier": "Unknown" } ] }, "Destiny.DestinyGender": { "format": "int32", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Male" }, { "numericValue": "1", "identifier": "Female" }, { "numericValue": "2", "identifier": "Unknown" } ] }, "Destiny.Definitions.DestinyGenderDefinition": { "description": "Gender is a social construct, and as such we have definitions for Genders. Right now there happens to only be two, but we'll see what the future holds.", "type": "object", "properties": { "genderType": { "format": "int32", "description": "This is a quick reference enumeration for all of the currently defined Genders. We use the enumeration for quicker lookups in related data, like DestinyClassDefinition.genderedClassNames.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyGender" } }, "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Genders" }, "Destiny.Definitions.DestinyVendorDefinition": { "description": "These are the definitions for Vendors.\r\nIn Destiny, a Vendor can be a lot of things - some things that you wouldn't expect, and some things that you don't even see directly in the game. Vendors are the Dolly Levi of the Destiny universe.\r\n- Traditional Vendors as you see in game: people who you come up to and who give you quests, rewards, or who you can buy things from.\r\n- Kiosks/Collections, which are really just Vendors that don't charge currency (or charge some pittance of a currency) and whose gating for purchases revolves more around your character's state.\r\n- Previews for rewards or the contents of sacks. These are implemented as Vendors, where you can't actually purchase from them but the items that they have for sale and the categories of sale items reflect the rewards or contents of the sack. This is so that the game could reuse the existing Vendor display UI for rewards and save a bunch of wheel reinvention.\r\n- Item Transfer capabilities, like the Vault and Postmaster. Vendors can have \"acceptedItem\" buckets that determine the source and destination buckets for transfers. When you interact with such a vendor, these buckets are what gets shown in the UI instead of any items that the Vendor would have for sale. Yep, the Vault is a vendor.\r\nIt is pretty much guaranteed that they'll be used for even more features in the future. They have come to be seen more as generic categorized containers for items than \"vendors\" in a traditional sense, for better or worse.\r\nWhere possible and time allows, we'll attempt to split those out into their own more digestible derived \"Definitions\": but often time does not allow that, as you can see from the above ways that vendors are used which we never split off from Vendor Definitions externally.\r\nSince Vendors are so many things to so many parts of the game, the definition is understandably complex. You will want to combine this data with live Vendor information from the API when it is available.", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDisplayPropertiesDefinition" }, "vendorProgressionType": { "format": "int32", "description": "The type of reward progression that this vendor has. Default - The original rank progression from token redemption. Ritual - Progression from ranks in ritual content. For example: Crucible (Shaxx), Gambit (Drifter), and Battlegrounds (War Table).", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyVendorProgressionType" } }, "buyString": { "description": "If the vendor has a custom localized string describing the \"buy\" action, that is returned here.", "type": "string" }, "sellString": { "description": "Ditto for selling. Not that you can sell items to a vendor anymore. Will it come back? Who knows. The string's still there.", "type": "string" }, "displayItemHash": { "format": "uint32", "description": "If the vendor has an item that should be displayed as the \"featured\" item, this is the hash identifier for that DestinyVendorItemDefinition.\r\nApparently this is usually a related currency, like a reputation token. But it need not be restricted to that.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "inhibitBuying": { "description": "If this is true, you aren't allowed to buy whatever the vendor is selling.", "type": "boolean" }, "inhibitSelling": { "description": "If this is true, you're not allowed to sell whatever the vendor is buying.", "type": "boolean" }, "factionHash": { "format": "uint32", "description": "If the Vendor has a faction, this hash will be valid and point to a DestinyFactionDefinition.\r\nThe game UI and BNet often mine the faction definition for additional elements and details to place on the screen, such as the faction's Progression status (aka \"Reputation\").", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyFactionDefinition" } }, "resetIntervalMinutes": { "format": "int32", "description": "A number used for calculating the frequency of a vendor's inventory resetting/refreshing.\r\nDon't worry about calculating this - we do it on the server side and send you the next refresh date with the live data.", "type": "integer" }, "resetOffsetMinutes": { "format": "int32", "description": "Again, used for reset/refreshing of inventory. Don't worry too much about it. Unless you want to.", "type": "integer" }, "failureStrings": { "description": "If an item can't be purchased from the vendor, there may be many \"custom\"/game state specific reasons why not.\r\nThis is a list of localized strings with messages for those custom failures. The live BNet data will return a failureIndexes property for items that can't be purchased: using those values to index into this array, you can show the user the appropriate failure message for the item that can't be bought.", "type": "array", "items": { "type": "string" } }, "unlockRanges": { "description": "If we were able to predict the dates when this Vendor will be visible/available, this will be the list of those date ranges. Sadly, we're not able to predict this very frequently, so this will often be useless data.", "type": "array", "items": { "$ref": "#/definitions/Dates.DateRange" } }, "vendorIdentifier": { "description": "The internal identifier for the Vendor. A holdover from the old days of Vendors, but we don't have time to refactor it away.", "type": "string" }, "vendorPortrait": { "description": "A portrait of the Vendor's smiling mug. Or frothing tentacles.", "type": "string" }, "vendorBanner": { "description": "If the vendor has a custom banner image, that can be found here.", "type": "string" }, "enabled": { "description": "If a vendor is not enabled, we won't even save the vendor's definition, and we won't return any items or info about them. It's as if they don't exist.", "type": "boolean" }, "visible": { "description": "If a vendor is not visible, we still have and will give vendor definition info, but we won't use them for things like Advisors or UI.", "type": "boolean" }, "vendorSubcategoryIdentifier": { "description": "The identifier of the VendorCategoryDefinition for this vendor's subcategory.", "type": "string" }, "consolidateCategories": { "description": "If TRUE, consolidate categories that only differ by trivial properties (such as having minor differences in name)", "type": "boolean" }, "actions": { "description": "Describes \"actions\" that can be performed on a vendor. Currently, none of these exist. But theoretically a Vendor could let you interact with it by performing actions. We'll see what these end up looking like if they ever get used.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorActionDefinition" } }, "categories": { "description": "These are the headers for sections of items that the vendor is selling. When you see items organized by category in the header, it is these categories that it is showing.\r\nWell, technically not *exactly* these. On BNet, it doesn't make sense to have categories be \"paged\" as we do in Destiny, so we run some heuristics to attempt to aggregate pages of categories together. \r\nThese are the categories post-concatenation, if the vendor had concatenation applied. If you want the pre-aggregated category data, use originalCategories.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorCategoryEntryDefinition" } }, "originalCategories": { "description": "See the categories property for a description of categories and why originalCategories exists.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorCategoryEntryDefinition" } }, "displayCategories": { "description": "Display Categories are different from \"categories\" in that these are specifically for visual grouping and display of categories in Vendor UI. \r\nThe \"categories\" structure is for validation of the contained items, and can be categorized entirely separately from \"Display Categories\", there need be and often will be no meaningful relationship between the two.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyDisplayCategoryDefinition" } }, "interactions": { "description": "In addition to selling items, vendors can have \"interactions\": UI where you \"talk\" with the vendor and they offer you a reward, some item, or merely acknowledge via dialog that you did something cool.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorInteractionDefinition" } }, "inventoryFlyouts": { "description": "If the vendor shows you items from your own inventory - such as the Vault vendor does - this data describes the UI around showing those inventory buckets and which ones get shown.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorInventoryFlyoutDefinition" } }, "itemList": { "description": "If the vendor sells items (or merely has a list of items to show like the \"Sack\" vendors do), this is the list of those items that the vendor can sell. From this list, only a subset will be available from the vendor at any given time, selected randomly and reset on the vendor's refresh interval.\r\nNote that a vendor can sell the same item multiple ways: for instance, nothing stops a vendor from selling you some specific weapon but using two different currencies, or the same weapon at multiple \"item levels\".", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorItemDefinition" } }, "services": { "description": "BNet doesn't use this data yet, but it appears to be an optional list of flavor text about services that the Vendor can provide.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorServiceDefinition" } }, "acceptedItems": { "description": "If the Vendor is actually a vehicle for the transferring of items (like the Vault and Postmaster vendors), this defines the list of source->destination buckets for transferring.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorAcceptedItemDefinition" } }, "returnWithVendorRequest": { "description": "As many of you know, Vendor data has historically been pretty brutal on the BNet servers. In an effort to reduce this workload, only Vendors with this flag set will be returned on Vendor requests. This allows us to filter out Vendors that don't dynamic data that's particularly useful: things like \"Preview/Sack\" vendors, for example, that you can usually suss out the details for using just the definitions themselves.", "type": "boolean" }, "locations": { "description": "A vendor can be at different places in the world depending on the game/character/account state. This is the list of possible locations for the vendor, along with conditions we use to determine which one is currently active.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Vendors.DestinyVendorLocationDefinition" } }, "groups": { "description": "A vendor can be a part of 0 or 1 \"groups\" at a time: a group being a collection of Vendors related by either location or function/purpose. It's used for our our Companion Vendor UI. Only one of these can be active for a Vendor at a time.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorGroupReference" } }, "ignoreSaleItemHashes": { "description": "Some items don't make sense to return in the API, for example because they represent an action to be performed rather than an item being sold. I'd rather we not do this, but at least in the short term this is a workable workaround.", "type": "array", "items": { "format": "uint32", "type": "integer" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Vendors" }, "Destiny.Definitions.DestinyVendorDisplayPropertiesDefinition": { "type": "object", "properties": { "largeIcon": { "description": "I regret calling this a \"large icon\". It's more like a medium-sized image with a picture of the vendor's mug on it, trying their best to look cool. Not what one would call an icon.", "type": "string" }, "subtitle": { "type": "string" }, "originalIcon": { "description": "If we replaced the icon with something more glitzy, this is the original icon that the vendor had according to the game's content. It may be more lame and/or have less razzle-dazzle. But who am I to tell you which icon to use.", "type": "string" }, "requirementsDisplay": { "description": "Vendors, in addition to expected display property data, may also show some \"common requirements\" as statically defined definition data. This might be when a vendor accepts a single type of currency, or when the currency is unique to the vendor and the designers wanted to show that currency when you interact with the vendor.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorRequirementDisplayEntryDefinition" } }, "smallTransparentIcon": { "description": "This is the icon used in parts of the game UI such as the vendor's waypoint.", "type": "string" }, "mapIcon": { "description": "This is the icon used in the map overview, when the vendor is located on the map.", "type": "string" }, "largeTransparentIcon": { "description": "This is apparently the \"Watermark\". I am not certain offhand where this is actually used in the Game UI, but some people may find it useful.", "type": "string" }, "description": { "type": "string" }, "name": { "type": "string" }, "icon": { "description": "Note that \"icon\" is sometimes misleading, and should be interpreted in the context of the entity. For instance, in Destiny 1 the DestinyRecordBookDefinition's icon was a big picture of a book.\r\nBut usually, it will be a small square image that you can use as... well, an icon.\r\nThey are currently represented as 96px x 96px images.", "type": "string" }, "iconSequences": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyIconSequenceDefinition" } }, "highResIcon": { "description": "If this item has a high-res icon (at least for now, many things won't), then the path to that icon will be here.", "type": "string" }, "hasIcon": { "type": "boolean" } } }, "Destiny.Definitions.DestinyVendorRequirementDisplayEntryDefinition": { "description": "The localized properties of the requirementsDisplay, allowing information about the requirement or item being featured to be seen.", "type": "object", "properties": { "icon": { "type": "string" }, "name": { "type": "string" }, "source": { "type": "string" }, "type": { "type": "string" } } }, "Destiny.DestinyVendorProgressionType": { "format": "int32", "description": "Describes the type of progression that a vendor has.", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Default", "description": "The original rank progression from token redemption." }, { "numericValue": "1", "identifier": "Ritual", "description": "Progression from ranks in ritual content. For example: Crucible (Shaxx), Gambit (Drifter), and Season 13 Battlegrounds (War Table)." }, { "numericValue": "2", "identifier": "NoSeasonalRefresh", "description": "A vendor progression with no seasonal refresh. For example: Xur in the Eternity destination for the 30th Anniversary." } ] }, "Dates.DateRange": { "type": "object", "properties": { "start": { "format": "date-time", "type": "string" }, "end": { "format": "date-time", "type": "string" } } }, "Destiny.Definitions.DestinyVendorActionDefinition": { "description": "If a vendor can ever end up performing actions, these are the properties that will be related to those actions. I'm not going to bother documenting this yet, as it is unused and unclear if it will ever be used... but in case it is ever populated and someone finds it useful, it is defined here.", "type": "object", "properties": { "description": { "type": "string" }, "executeSeconds": { "format": "int32", "type": "integer" }, "icon": { "type": "string" }, "name": { "type": "string" }, "verb": { "type": "string" }, "isPositive": { "type": "boolean" }, "actionId": { "type": "string" }, "actionHash": { "format": "uint32", "type": "integer" }, "autoPerformAction": { "type": "boolean" } } }, "Destiny.Definitions.DestinyVendorCategoryEntryDefinition": { "description": "This is the definition for a single Vendor Category, into which Sale Items are grouped.", "type": "object", "properties": { "categoryIndex": { "format": "int32", "description": "The index of the category in the original category definitions for the vendor.", "type": "integer" }, "sortValue": { "format": "int32", "description": "Used in sorting items in vendors... but there's a lot more to it. Just go with the order provided in the itemIndexes property on the DestinyVendorCategoryComponent instead, it should be more reliable than trying to recalculate it yourself.", "type": "integer" }, "categoryHash": { "format": "uint32", "description": "The hashed identifier for the category.", "type": "integer" }, "quantityAvailable": { "format": "int32", "description": "The amount of items that will be available when this category is shown.", "type": "integer" }, "showUnavailableItems": { "description": "If items aren't up for sale in this category, should we still show them (greyed out)?", "type": "boolean" }, "hideIfNoCurrency": { "description": "If you don't have the currency required to buy items from this category, should the items be hidden?", "type": "boolean" }, "hideFromRegularPurchase": { "description": "True if this category doesn't allow purchases.", "type": "boolean" }, "buyStringOverride": { "description": "The localized string for making purchases from this category, if it is different from the vendor's string for purchasing.", "type": "string" }, "disabledDescription": { "description": "If the category is disabled, this is the localized description to show.", "type": "string" }, "displayTitle": { "description": "The localized title of the category.", "type": "string" }, "overlay": { "description": "If this category has an overlay prompt that should appear, this contains the details of that prompt.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorCategoryOverlayDefinition" } ] }, "vendorItemIndexes": { "description": "A shortcut for the vendor item indexes sold under this category. Saves us from some expensive reorganization at runtime.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "isPreview": { "description": "Sometimes a category isn't actually used to sell items, but rather to preview them. This implies different UI (and manual placement of the category in the UI) in the game, and special treatment.", "type": "boolean" }, "isDisplayOnly": { "description": "If true, this category only displays items: you can't purchase anything in them.", "type": "boolean" }, "resetIntervalMinutesOverride": { "format": "int32", "type": "integer" }, "resetOffsetMinutesOverride": { "format": "int32", "type": "integer" } } }, "Destiny.Definitions.DestinyVendorCategoryOverlayDefinition": { "description": "The details of an overlay prompt to show to a user. They are all fairly self-explanatory localized strings that can be shown.", "type": "object", "properties": { "choiceDescription": { "type": "string" }, "description": { "type": "string" }, "icon": { "type": "string" }, "title": { "type": "string" }, "currencyItemHash": { "format": "uint32", "description": "If this overlay has a currency item that it features, this is said featured item.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } } } }, "Destiny.Definitions.DestinyDisplayCategoryDefinition": { "description": "Display Categories are different from \"categories\" in that these are specifically for visual grouping and display of categories in Vendor UI. The \"categories\" structure is for validation of the contained items, and can be categorized entirely separately from \"Display Categories\", there need be and often will be no meaningful relationship between the two.", "type": "object", "properties": { "index": { "format": "int32", "type": "integer" }, "identifier": { "description": "A string identifier for the display category.", "type": "string" }, "displayCategoryHash": { "format": "uint32", "type": "integer" }, "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "displayInBanner": { "description": "If true, this category should be displayed in the \"Banner\" section of the vendor's UI.", "type": "boolean" }, "progressionHash": { "format": "uint32", "description": "If it exists, this is the hash identifier of a DestinyProgressionDefinition that represents the progression to show on this display category.\r\nSpecific categories can now have thier own distinct progression, apparently. So that's cool.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyProgressionDefinition" } }, "sortOrder": { "format": "int32", "description": "If this category sorts items in a nonstandard way, this will be the way we sort.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.VendorDisplayCategorySortOrder" } }, "displayStyleHash": { "format": "uint32", "description": "An indicator of how the category will be displayed in the UI. It's up to you to do something cool or interesting in response to this, or just to treat it as a normal category.", "type": "integer" }, "displayStyleIdentifier": { "description": "An indicator of how the category will be displayed in the UI. It's up to you to do something cool or interesting in response to this, or just to treat it as a normal category.", "type": "string" } } }, "Destiny.VendorDisplayCategorySortOrder": { "format": "int32", "description": "Display categories can have custom sort orders. These are the possible options.", "enum": [ "0", "1" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Default" }, { "numericValue": "1", "identifier": "SortByTier" } ] }, "Destiny.Definitions.DestinyVendorInteractionDefinition": { "description": "A Vendor Interaction is a dialog shown by the vendor other than sale items or transfer screens. The vendor is showing you something, and asking you to reply to it by choosing an option or reward.", "type": "object", "properties": { "interactionIndex": { "format": "int32", "description": "The position of this interaction in its parent array. Note that this is NOT content agnostic, and should not be used as such.", "type": "integer" }, "replies": { "description": "The potential replies that the user can make to the interaction.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorInteractionReplyDefinition" } }, "vendorCategoryIndex": { "format": "int32", "description": "If >= 0, this is the category of sale items to show along with this interaction dialog.", "type": "integer" }, "questlineItemHash": { "format": "uint32", "description": "If this interaction dialog is about a quest, this is the questline related to the interaction. You can use this to show the quest overview, or even the character's status with the quest if you use it to find the character's current Quest Step by checking their inventory against this questlineItemHash's DestinyInventoryItemDefinition.setData.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "sackInteractionList": { "description": "If this interaction is meant to show you sacks, this is the list of types of sacks to be shown. If empty, the interaction is not meant to show sacks.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorInteractionSackEntryDefinition" } }, "uiInteractionType": { "format": "uint32", "description": "A UI hint for the behavior of the interaction screen. This is useful to determine what type of interaction is occurring, such as a prompt to receive a rank up reward or a prompt to choose a reward for completing a quest. The hash isn't as useful as the Enum in retrospect, well what can you do. Try using interactionType instead.", "type": "integer" }, "interactionType": { "format": "int32", "description": "The enumerated version of the possible UI hints for vendor interactions, which is a little easier to grok than the hash found in uiInteractionType.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.VendorInteractionType" } }, "rewardBlockLabel": { "description": "If this interaction is displaying rewards, this is the text to use for the header of the reward-displaying section of the interaction.", "type": "string" }, "rewardVendorCategoryIndex": { "format": "int32", "description": "If the vendor's reward list is sourced from one of his categories, this is the index into the category array of items to show.", "type": "integer" }, "flavorLineOne": { "description": "If the vendor interaction has flavor text, this is some of it.", "type": "string" }, "flavorLineTwo": { "description": "If the vendor interaction has flavor text, this is the rest of it.", "type": "string" }, "headerDisplayProperties": { "description": "The header for the interaction dialog.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "instructions": { "description": "The localized text telling the player what to do when they see this dialog.", "type": "string" } } }, "Destiny.Definitions.DestinyVendorInteractionReplyDefinition": { "description": "When the interaction is replied to, Reward sites will fire and items potentially selected based on whether the given unlock expression is TRUE.\r\nYou can potentially choose one from multiple replies when replying to an interaction: this is how you get either/or rewards from vendors.", "type": "object", "properties": { "itemRewardsSelection": { "format": "int32", "description": "The rewards granted upon responding to the vendor.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyVendorInteractionRewardSelection" } }, "reply": { "description": "The localized text for the reply.", "type": "string" }, "replyType": { "format": "int32", "description": "An enum indicating the type of reply being made.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyVendorReplyType" } } } }, "Destiny.DestinyVendorInteractionRewardSelection": { "format": "int32", "description": "When a Vendor Interaction provides rewards, they'll either let you choose one or let you have all of them. This determines which it will be.", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "One" }, { "numericValue": "2", "identifier": "All" } ] }, "Destiny.DestinyVendorReplyType": { "format": "int32", "description": "This determines the type of reply that a Vendor will have during an Interaction.", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Accept" }, { "numericValue": "1", "identifier": "Decline" }, { "numericValue": "2", "identifier": "Complete" } ] }, "Destiny.Definitions.DestinyVendorInteractionSackEntryDefinition": { "description": "Compare this sackType to the sack identifier in the DestinyInventoryItemDefinition.vendorSackType property of items. If they match, show this sack with this interaction.", "type": "object", "properties": { "sackType": { "format": "uint32", "type": "integer" } } }, "Destiny.VendorInteractionType": { "format": "int32", "description": "An enumeration of the known UI interactions for Vendors.", "enum": [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Unknown" }, { "numericValue": "1", "identifier": "Undefined", "description": "An empty interaction. If this ends up in content, it is probably a game bug." }, { "numericValue": "2", "identifier": "QuestComplete", "description": "An interaction shown when you complete a quest and receive a reward." }, { "numericValue": "3", "identifier": "QuestContinue", "description": "An interaction shown when you talk to a Vendor as an intermediary step of a quest." }, { "numericValue": "4", "identifier": "ReputationPreview", "description": "An interaction shown when you are previewing the vendor's reputation rewards." }, { "numericValue": "5", "identifier": "RankUpReward", "description": "An interaction shown when you rank up with the vendor." }, { "numericValue": "6", "identifier": "TokenTurnIn", "description": "An interaction shown when you have tokens to turn in for the vendor." }, { "numericValue": "7", "identifier": "QuestAccept", "description": "An interaction shown when you're accepting a new quest." }, { "numericValue": "8", "identifier": "ProgressTab", "description": "Honestly, this doesn't seem consistent to me. It is used to give you choices in the Cryptarch as well as some reward prompts by the Eververse vendor. I'll have to look into that further at some point." }, { "numericValue": "9", "identifier": "End", "description": "These seem even less consistent. I don't know what these are." }, { "numericValue": "10", "identifier": "Start", "description": "Also seem inconsistent. I also don't know what these are offhand." } ] }, "Destiny.Definitions.DestinyVendorInventoryFlyoutDefinition": { "description": "The definition for an \"inventory flyout\": a UI screen where we show you part of an otherwise hidden vendor inventory: like the Vault inventory buckets.", "type": "object", "properties": { "lockedDescription": { "description": "If the flyout is locked, this is the reason why.", "type": "string" }, "displayProperties": { "description": "The title and other common properties of the flyout.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "buckets": { "description": "A list of inventory buckets and other metadata to show on the screen.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorInventoryFlyoutBucketDefinition" } }, "flyoutId": { "format": "uint32", "description": "An identifier for the flyout, in case anything else needs to refer to them.", "type": "integer" }, "suppressNewness": { "description": "If this is true, don't show any of the glistening \"this is a new item\" UI elements, like we show on the inventory items themselves in in-game UI.", "type": "boolean" }, "equipmentSlotHash": { "format": "uint32", "description": "If this flyout is meant to show you the contents of the player's equipment slot, this is the slot to show.", "type": "integer" } } }, "Destiny.Definitions.DestinyVendorInventoryFlyoutBucketDefinition": { "description": "Information about a single inventory bucket in a vendor flyout UI and how it is shown.", "type": "object", "properties": { "collapsible": { "description": "If true, the inventory bucket should be able to be collapsed visually.", "type": "boolean" }, "inventoryBucketHash": { "format": "uint32", "description": "The inventory bucket whose contents should be shown.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryBucketDefinition" } }, "sortItemsBy": { "format": "int32", "description": "The methodology to use for sorting items from the flyout.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyItemSortType" } } } }, "Destiny.DestinyItemSortType": { "format": "int32", "description": "Determines how items are sorted in an inventory bucket.", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "ItemId" }, { "numericValue": "1", "identifier": "Timestamp" }, { "numericValue": "2", "identifier": "StackSize" } ] }, "Destiny.Definitions.DestinyVendorItemDefinition": { "description": "This represents an item being sold by the vendor.", "type": "object", "properties": { "vendorItemIndex": { "format": "int32", "description": "The index into the DestinyVendorDefinition.saleList. This is what we use to refer to items being sold throughout live and definition data.", "type": "integer" }, "itemHash": { "format": "uint32", "description": "The hash identifier of the item being sold (DestinyInventoryItemDefinition).\r\nNote that a vendor can sell the same item in multiple ways, so don't assume that itemHash is a unique identifier for this entity.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "quantity": { "format": "int32", "description": "The amount you will recieve of the item described in itemHash if you make the purchase.", "type": "integer" }, "failureIndexes": { "description": "An list of indexes into the DestinyVendorDefinition.failureStrings array, indicating the possible failure strings that can be relevant for this item.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "currencies": { "description": "This is a pre-compiled aggregation of item value and priceOverrideList, so that we have one place to check for what the purchaser must pay for the item. Use this instead of trying to piece together the price separately.\r\nThe somewhat crappy part about this is that, now that item quantity overrides have dynamic modifiers, this will not necessarily be statically true. If you were using this instead of live data, switch to using live data.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorItemQuantity" } }, "refundPolicy": { "format": "int32", "description": "If this item can be refunded, this is the policy for what will be refundd, how, and in what time period.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyVendorItemRefundPolicy" } }, "refundTimeLimit": { "format": "int32", "description": "The amount of time before refundability of the newly purchased item will expire.", "type": "integer" }, "creationLevels": { "description": "The Default level at which the item will spawn. Almost always driven by an adjusto these days. Ideally should be singular. It's a long story how this ended up as a list, but there is always either going to be 0:1 of these entities.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyItemCreationEntryLevelDefinition" } }, "displayCategoryIndex": { "format": "int32", "description": "This is an index specifically into the display category, as opposed to the server-side Categories (which do not need to match or pair with each other in any way: server side categories are really just structures for common validation. Display Category will let us more easily categorize items visually)", "type": "integer" }, "categoryIndex": { "format": "int32", "description": "The index into the DestinyVendorDefinition.categories array, so you can find the category associated with this item.", "type": "integer" }, "originalCategoryIndex": { "format": "int32", "description": "Same as above, but for the original category indexes.", "type": "integer" }, "minimumLevel": { "format": "int32", "description": "The minimum character level at which this item is available for sale.", "type": "integer" }, "maximumLevel": { "format": "int32", "description": "The maximum character level at which this item is available for sale.", "type": "integer" }, "action": { "description": "The action to be performed when purchasing the item, if it's not just \"buy\".", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorSaleItemActionBlockDefinition" } ] }, "displayCategory": { "description": "The string identifier for the category selling this item.", "type": "string" }, "inventoryBucketHash": { "format": "uint32", "description": "The inventory bucket into which this item will be placed upon purchase.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryBucketDefinition" } }, "visibilityScope": { "format": "int32", "description": "The most restrictive scope that determines whether the item is available in the Vendor's inventory. See DestinyGatingScope's documentation for more information.\r\nThis can be determined by Unlock gating, or by whether or not the item has purchase level requirements (minimumLevel and maximumLevel properties).", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyGatingScope" } }, "purchasableScope": { "format": "int32", "description": "Similar to visibilityScope, it represents the most restrictive scope that determines whether the item can be purchased. It will at least be as restrictive as visibilityScope, but could be more restrictive if the item has additional purchase requirements beyond whether it is merely visible or not.\r\nSee DestinyGatingScope's documentation for more information.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyGatingScope" } }, "exclusivity": { "format": "int32", "description": "If this item can only be purchased by a given platform, this indicates the platform to which it is restricted.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } }, "isOffer": { "description": "If this sale can only be performed as the result of an offer check, this is true.", "type": "boolean" }, "isCrm": { "description": "If this sale can only be performed as the result of receiving a CRM offer, this is true.", "type": "boolean" }, "sortValue": { "format": "int32", "description": "*if* the category this item is in supports non-default sorting, this value should represent the sorting value to use, pre-processed and ready to go.", "type": "integer" }, "expirationTooltip": { "description": "If this item can expire, this is the tooltip message to show with its expiration info.", "type": "string" }, "redirectToSaleIndexes": { "description": "If this is populated, the purchase of this item should redirect to purchasing these other items instead.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "socketOverrides": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorItemSocketOverride" } }, "unpurchasable": { "description": "If true, this item is some sort of dummy sale item that cannot actually be purchased. It may be a display only item, or some fluff left by a content designer for testing purposes, or something that got disabled because it was a terrible idea. You get the picture. We won't know *why* it can't be purchased, only that it can't be. Sorry.\r\nThis is also only whether it's unpurchasable as a static property according to game content. There are other reasons why an item may or may not be purchasable at runtime, so even if this isn't set to True you should trust the runtime value for this sale item over the static definition if this is unset.", "type": "boolean" } } }, "Destiny.Definitions.DestinyVendorItemQuantity": { "description": "In addition to item quantity information for vendor prices, this also has any optional information that may exist about how the item's quantity can be modified. (unfortunately not information that is able to be read outside of the BNet servers, but it's there)", "type": "object", "properties": { "itemHash": { "format": "uint32", "description": "The hash identifier for the item in question. Use it to look up the item's DestinyInventoryItemDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "itemInstanceId": { "format": "int64", "description": "If this quantity is referring to a specific instance of an item, this will have the item's instance ID. Normally, this will be null.", "type": "integer" }, "quantity": { "format": "int32", "description": "The amount of the item needed/available depending on the context of where DestinyItemQuantity is being used.", "type": "integer" }, "hasConditionalVisibility": { "description": "Indicates that this item quantity may be conditionally shown or hidden, based on various sources of state. For example: server flags, account state, or character progress.", "type": "boolean" } } }, "Destiny.DestinyVendorItemRefundPolicy": { "format": "int32", "description": "The action that happens when the user attempts to refund an item.", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "NotRefundable" }, { "numericValue": "1", "identifier": "DeletesItem" }, { "numericValue": "2", "identifier": "RevokesLicense" } ] }, "Destiny.Definitions.DestinyItemCreationEntryLevelDefinition": { "description": "An overly complicated wrapper for the item level at which the item should spawn.", "type": "object", "properties": { "level": { "format": "int32", "type": "integer" } } }, "Destiny.Definitions.DestinyVendorSaleItemActionBlockDefinition": { "description": "Not terribly useful, some basic cooldown interaction info.", "type": "object", "properties": { "executeSeconds": { "format": "float", "type": "number" }, "isPositive": { "type": "boolean" } } }, "Destiny.DestinyGatingScope": { "format": "int32", "description": "This enumeration represents the most restrictive type of gating that is being performed by an entity. This is useful as a shortcut to avoid a lot of lookups when determining whether the gating on an Entity applies to everyone equally, or to their specific Profile or Character states.\r\nNone = There is no gating on this item.\r\nGlobal = The gating on this item is based entirely on global game state. It will be gated the same for everyone.\r\nClan = The gating on this item is at the Clan level. For instance, if you're gated by Clan level this will be the case.\r\nProfile = The gating includes Profile-specific checks, but not on the Profile's characters. An example of this might be when you acquire an Emblem: the Emblem will be available in your Kiosk for all characters in your Profile from that point onward.\r\nCharacter = The gating includes Character-specific checks, including character level restrictions. An example of this might be an item that you can't purchase from a Vendor until you reach a specific Character Level.\r\nItem = The gating includes item-specific checks. For BNet, this generally implies that we'll show this data only on a character level or deeper.\r\nAssumedWorstCase = The unlocks and checks being used for this calculation are of an unknown type and are used for unknown purposes. For instance, if some great person decided that an unlock value should be globally scoped, but then the game changes it using character-specific data in a way that BNet doesn't know about. Because of the open-ended potential for this to occur, many unlock checks for \"globally\" scoped unlock data may be assumed as the worst case unless it has been specifically whitelisted as otherwise. That sucks, but them's the breaks.", "enum": [ "0", "1", "2", "3", "4", "5", "6" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Global" }, { "numericValue": "2", "identifier": "Clan" }, { "numericValue": "3", "identifier": "Profile" }, { "numericValue": "4", "identifier": "Character" }, { "numericValue": "5", "identifier": "Item" }, { "numericValue": "6", "identifier": "AssumedWorstCase" } ] }, "Destiny.Definitions.DestinyVendorItemSocketOverride": { "description": "The information for how the vendor purchase should override a given socket with custom plug data.", "type": "object", "properties": { "singleItemHash": { "format": "uint32", "description": "If this is populated, the socket will be overridden with a specific plug.\r\nIf this isn't populated, it's being overridden by something more complicated that is only known by the Game Server and God, which means we can't tell you in advance what it'll be.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "randomizedOptionsCount": { "format": "int32", "description": "If this is greater than -1, the number of randomized plugs on this socket will be set to this quantity instead of whatever it's set to by default.", "type": "integer" }, "socketTypeHash": { "format": "uint32", "description": "This appears to be used to select which socket ultimately gets the override defined here.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Sockets.DestinySocketTypeDefinition" } } } }, "Destiny.Definitions.DestinyVendorServiceDefinition": { "description": "When a vendor provides services, this is the localized name of those services.", "type": "object", "properties": { "name": { "description": "The localized name of a service provided.", "type": "string" } } }, "Destiny.Definitions.DestinyVendorAcceptedItemDefinition": { "description": "If you ever wondered how the Vault works, here it is.\r\nThe Vault is merely a set of inventory buckets that exist on your Profile/Account level. When you transfer items in the Vault, the game is using the Vault Vendor's DestinyVendorAcceptedItemDefinitions to see where the appropriate destination bucket is for the source bucket from whence your item is moving. If it finds such an entry, it transfers the item to the other bucket.\r\nThe mechanics for Postmaster works similarly, which is also a vendor. All driven by Accepted Items.", "type": "object", "properties": { "acceptedInventoryBucketHash": { "format": "uint32", "description": "The \"source\" bucket for a transfer. When a user wants to transfer an item, the appropriate DestinyVendorDefinition's acceptedItems property is evaluated, looking for an entry where acceptedInventoryBucketHash matches the bucket that the item being transferred is currently located. If it exists, the item will be transferred into whatever bucket is defined by destinationInventoryBucketHash.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryBucketDefinition" } }, "destinationInventoryBucketHash": { "format": "uint32", "description": "This is the bucket where the item being transferred will be put, given that it was being transferred *from* the bucket defined in acceptedInventoryBucketHash.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryBucketDefinition" } } } }, "Destiny.Definitions.Vendors.DestinyVendorLocationDefinition": { "description": "These definitions represent vendors' locations and relevant display information at different times in the game.", "type": "object", "properties": { "destinationHash": { "format": "uint32", "description": "The hash identifier for a Destination at which this vendor may be located. Each destination where a Vendor may exist will only ever have a single entry.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyDestinationDefinition" } }, "backgroundImagePath": { "description": "The relative path to the background image representing this Vendor at this location, for use in a banner.", "type": "string" } } }, "Destiny.Definitions.DestinyDestinationDefinition": { "description": "On to one of the more confusing subjects of the API. What is a Destination, and what is the relationship between it, Activities, Locations, and Places?\r\nA \"Destination\" is a specific region/city/area of a larger \"Place\". For instance, a Place might be Earth where a Destination might be Bellevue, Washington. (Please, pick a more interesting destination if you come to visit Earth).", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "placeHash": { "format": "uint32", "description": "The place that \"owns\" this Destination. Use this hash to look up the DestinyPlaceDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyPlaceDefinition" } }, "defaultFreeroamActivityHash": { "format": "uint32", "description": "If this Destination has a default Free-Roam activity, this is the hash for that Activity. Use it to look up the DestinyActivityDefintion.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "activityGraphEntries": { "description": "If the Destination has default Activity Graphs (i.e. \"Map\") that should be shown in the director, this is the list of those Graphs. At most, only one should be active at any given time for a Destination: these would represent, for example, different variants on a Map if the Destination is changing on a macro level based on game state.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityGraphListEntryDefinition" } }, "bubbleSettings": { "description": "A Destination may have many \"Bubbles\" zones with human readable properties.\r\nWe don't get as much info as I'd like about them - I'd love to return info like where on the map they are located - but at least this gives you the name of those bubbles. bubbleSettings and bubbles both have the identical number of entries, and you should match up their indexes to provide matching bubble and bubbleSettings data.\r\nDEPRECATED - Just use bubbles, it now has this data.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyDestinationBubbleSettingDefinition" } }, "bubbles": { "description": "This provides the unique identifiers for every bubble in the destination (only guaranteed unique within the destination), and any intrinsic properties of the bubble.\r\nbubbleSettings and bubbles both have the identical number of entries, and you should match up their indexes to provide matching bubble and bubbleSettings data.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyBubbleDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Destinations" }, "Destiny.Definitions.DestinyActivityGraphListEntryDefinition": { "description": "Destinations and Activities may have default Activity Graphs that should be shown when you bring up the Director and are playing in either.\r\nThis contract defines the graph referred to and the gating for when it is relevant.", "type": "object", "properties": { "activityGraphHash": { "format": "uint32", "description": "The hash identifier of the DestinyActivityGraphDefinition that should be shown when opening the director.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Director.DestinyActivityGraphDefinition" } } } }, "Destiny.Definitions.Director.DestinyActivityGraphDefinition": { "description": "Represents a Map View in the director: be them overview views, destination views, or other.\r\nThey have nodes which map to activities, and other various visual elements that we (or others) may or may not be able to use.\r\nActivity graphs, most importantly, have nodes which can have activities in various states of playability.\r\nUnfortunately, activity graphs are combined at runtime with Game UI-only assets such as fragments of map images, various in-game special effects, decals etc... that we don't get in these definitions.\r\nIf we end up having time, we may end up trying to manually populate those here: but the last time we tried that, before the lead-up to D1, it proved to be unmaintainable as the game's content changed. So don't bet the farm on us providing that content in this definition.", "type": "object", "properties": { "nodes": { "description": "These represent the visual \"nodes\" on the map's view. These are the activities you can click on in the map.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Director.DestinyActivityGraphNodeDefinition" } }, "artElements": { "description": "Represents one-off/special UI elements that appear on the map.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Director.DestinyActivityGraphArtElementDefinition" } }, "connections": { "description": "Represents connections between graph nodes. However, it lacks context that we'd need to make good use of it.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Director.DestinyActivityGraphConnectionDefinition" } }, "displayObjectives": { "description": "Objectives can display on maps, and this is supposedly metadata for that. I have not had the time to analyze the details of what is useful within however: we could be missing important data to make this work. Expect this property to be expanded on later if possible.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Director.DestinyActivityGraphDisplayObjectiveDefinition" } }, "displayProgressions": { "description": "Progressions can also display on maps, but similarly to displayObjectives we appear to lack some required information and context right now. We will have to look into it later and add more data if possible.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Director.DestinyActivityGraphDisplayProgressionDefinition" } }, "linkedGraphs": { "description": "Represents links between this Activity Graph and other ones.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Director.DestinyLinkedGraphDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "ActivityGraphs" }, "Destiny.Definitions.Director.DestinyActivityGraphNodeDefinition": { "description": "This is the position and other data related to nodes in the activity graph that you can click to launch activities. An Activity Graph node will only have one active Activity at a time, which will determine the activity to be launched (and, unless overrideDisplay information is provided, will also determine the tooltip and other UI related to the node)", "type": "object", "properties": { "nodeId": { "format": "uint32", "description": "An identifier for the Activity Graph Node, only guaranteed to be unique within its parent Activity Graph.", "type": "integer" }, "overrideDisplay": { "description": "The node *may* have display properties that override the active Activity's display properties.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "position": { "description": "The position on the map for this node.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyPositionDefinition" } ] }, "featuringStates": { "description": "The node may have various visual accents placed on it, or styles applied. These are the list of possible styles that the Node can have. The game iterates through each, looking for the first one that passes a check of the required game/character/account state in order to show that style, and then renders the node in that style.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Director.DestinyActivityGraphNodeFeaturingStateDefinition" } }, "activities": { "description": "The node may have various possible activities that could be active for it, however only one may be active at a time. See the DestinyActivityGraphNodeActivityDefinition for details.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Director.DestinyActivityGraphNodeActivityDefinition" } }, "states": { "description": "Represents possible states that the graph node can be in. These are combined with some checking that happens in the game client and server to determine which state is actually active at any given time.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Director.DestinyActivityGraphNodeStateEntry" } } } }, "Destiny.Definitions.Common.DestinyPositionDefinition": { "type": "object", "properties": { "x": { "format": "int32", "type": "integer" }, "y": { "format": "int32", "type": "integer" }, "z": { "format": "int32", "type": "integer" } } }, "Destiny.Definitions.Director.DestinyActivityGraphNodeFeaturingStateDefinition": { "description": "Nodes can have different visual states. This object represents a single visual state (\"highlight type\") that a node can be in, and the unlock expression condition to determine whether it should be set.", "type": "object", "properties": { "highlightType": { "format": "int32", "description": "The node can be highlighted in a variety of ways - the game iterates through these and finds the first FeaturingState that is valid at the present moment given the Game, Account, and Character state, and renders the node in that state. See the ActivityGraphNodeHighlightType enum for possible values.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.ActivityGraphNodeHighlightType" } } } }, "Destiny.ActivityGraphNodeHighlightType": { "format": "int32", "description": "The various known UI styles in which an item can be highlighted. It'll be up to you to determine what you want to show based on this highlighting, BNet doesn't have any assets that correspond to these states. And yeah, RiseOfIron and Comet have their own special highlight states. Don't ask me, I can't imagine they're still used.", "enum": [ "0", "1", "2", "3", "4" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Normal" }, { "numericValue": "2", "identifier": "Hyper" }, { "numericValue": "3", "identifier": "Comet" }, { "numericValue": "4", "identifier": "RiseOfIron" } ] }, "Destiny.Definitions.Director.DestinyActivityGraphNodeActivityDefinition": { "description": "The actual activity to be redirected to when you click on the node. Note that a node can have many Activities attached to it: but only one will be active at any given time. The list of Node Activities will be traversed, and the first one found to be active will be displayed. This way, a node can layer multiple variants of an activity on top of each other. For instance, one node can control the weekly Crucible Playlist. There are multiple possible playlists, but only one is active for the week.", "type": "object", "properties": { "nodeActivityId": { "format": "uint32", "description": "An identifier for this node activity. It is only guaranteed to be unique within the Activity Graph.", "type": "integer" }, "activityHash": { "format": "uint32", "description": "The activity that will be activated if the user clicks on this node. Controls all activity-related information displayed on the node if it is active (the text shown in the tooltip etc)", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } } } }, "Destiny.Definitions.DestinyActivityDefinition": { "description": "The static data about Activities in Destiny 2.\r\nNote that an Activity must be combined with an ActivityMode to know - from a Gameplay perspective - what the user is \"Playing\".\r\nIn most PvE activities, this is fairly straightforward. A Story Activity can only be played in the Story Activity Mode.\r\nHowever, in PvP activities, the Activity alone only tells you the map being played, or the Playlist that the user chose to enter. You'll need to know the Activity Mode they're playing to know that they're playing Mode X on Map Y.\r\nActivity Definitions tell a great deal of information about what *could* be relevant to a user: what rewards they can earn, what challenges could be performed, what modifiers could be applied. To figure out which of these properties is actually live, you'll need to combine the definition with \"Live\" data from one of the Destiny endpoints.\r\nActivities also have Activity Types, but unfortunately in Destiny 2 these are even less reliable of a source of information than they were in Destiny 1. I will be looking into ways to provide more reliable sources for type information as time goes on, but for now we're going to have to deal with the limitations. See DestinyActivityTypeDefinition for more information.", "type": "object", "properties": { "displayProperties": { "description": "The title, subtitle, and icon for the activity. We do a little post-processing on this to try and account for Activities where the designers have left this data too minimal to determine what activity is actually being played.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "originalDisplayProperties": { "description": "The unadulterated form of the display properties, as they ought to be shown in the Director (if the activity appears in the director).", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "selectionScreenDisplayProperties": { "description": "The title, subtitle, and icon for the activity as determined by Selection Screen data, if there is any for this activity. There won't be data in this field if the activity is never shown in a selection/options screen.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "releaseIcon": { "description": "If the activity has an icon associated with a specific release (such as a DLC), this is the path to that release's icon.", "type": "string" }, "releaseTime": { "format": "int32", "description": "If the activity will not be visible until a specific and known time, this will be the seconds since the Epoch when it will become visible.", "type": "integer" }, "activityLightLevel": { "format": "int32", "description": "The recommended light level for this activity.", "type": "integer" }, "destinationHash": { "format": "uint32", "description": "The hash identifier for the Destination on which this Activity is played. Use it to look up the DestinyDestinationDefinition for human readable info about the destination. A Destination can be thought of as a more specific location than a \"Place\". For instance, if the \"Place\" is Earth, the \"Destination\" would be a specific city or region on Earth.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyDestinationDefinition" } }, "placeHash": { "format": "uint32", "description": "The hash identifier for the \"Place\" on which this Activity is played. Use it to look up the DestinyPlaceDefinition for human readable info about the Place. A Place is the largest-scoped concept for location information. For instance, if the \"Place\" is Earth, the \"Destination\" would be a specific city or region on Earth.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyPlaceDefinition" } }, "activityTypeHash": { "format": "uint32", "description": "The hash identifier for the Activity Type of this Activity. You may use it to look up the DestinyActivityTypeDefinition for human readable info, but be forewarned: Playlists and many PVP Map Activities will map to generic Activity Types. You'll have to use your knowledge of the Activity Mode being played to get more specific information about what the user is playing.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityTypeDefinition" } }, "tier": { "format": "int32", "description": "The difficulty tier of the activity.", "type": "integer" }, "pgcrImage": { "description": "When Activities are completed, we generate a \"Post-Game Carnage Report\", or PGCR, with details about what happened in that activity (how many kills someone got, which team won, etc...) We use this image as the background when displaying PGCR information, and often use it when we refer to the Activity in general.", "type": "string" }, "rewards": { "description": "The expected possible rewards for the activity. These rewards may or may not be accessible for an individual player based on their character state, the account state, and even the game's state overall. But it is a useful reference for possible rewards you can earn in the activity. These match up to rewards displayed when you hover over the Activity in the in-game Director, and often refer to Placeholder or \"Dummy\" items: items that tell you what you can earn in vague terms rather than what you'll specifically be earning (partly because the game doesn't even know what you'll earn specifically until you roll for it at the end)", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityRewardDefinition" } }, "modifiers": { "description": "Activities can have Modifiers, as defined in DestinyActivityModifierDefinition. These are references to the modifiers that *can* be applied to that activity, along with data that we use to determine if that modifier is actually active at any given point in time.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityModifierReferenceDefinition" } }, "isPlaylist": { "description": "If True, this Activity is actually a Playlist that refers to multiple possible specific Activities and Activity Modes. For instance, a Crucible Playlist may have references to multiple Activities (Maps) with multiple Activity Modes (specific PvP gameplay modes). If this is true, refer to the playlistItems property for the specific entries in the playlist.", "type": "boolean" }, "challenges": { "description": "An activity can have many Challenges, of which any subset of them may be active for play at any given period of time. This gives the information about the challenges and data that we use to understand when they're active and what rewards they provide. Sadly, at the moment there's no central definition for challenges: much like \"Skulls\" were in Destiny 1, these are defined on individual activities and there can be many duplicates/near duplicates across the Destiny 2 ecosystem. I have it in mind to centralize these in a future revision of the API, but we are out of time.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityChallengeDefinition" } }, "optionalUnlockStrings": { "description": "If there are status strings related to the activity and based on internal state of the game, account, or character, then this will be the definition of those strings and the states needed in order for the strings to be shown.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityUnlockStringDefinition" } }, "playlistItems": { "description": "Represents all of the possible activities that could be played in the Playlist, along with information that we can use to determine if they are active at the present time.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityPlaylistItemDefinition" } }, "activityGraphList": { "description": "Unfortunately, in practice this is almost never populated. In theory, this is supposed to tell which Activity Graph to show if you bring up the director while in this activity.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityGraphListEntryDefinition" } }, "matchmaking": { "description": "This block of data provides information about the Activity's matchmaking attributes: how many people can join and such.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityMatchmakingBlockDefinition" } ] }, "guidedGame": { "description": "This block of data, if it exists, provides information about the guided game experience and restrictions for this activity. If it doesn't exist, the game is not able to be played as a guided game.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityGuidedBlockDefinition" } ] }, "directActivityModeHash": { "format": "uint32", "description": "If this activity had an activity mode directly defined on it, this will be the hash of that mode.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityModeDefinition" } }, "directActivityModeType": { "format": "int32", "description": "If the activity had an activity mode directly defined on it, this will be the enum value of that mode.", "enum": [ "0", "2", "3", "4", "5", "6", "7", "9", "10", "11", "12", "13", "15", "16", "17", "18", "19", "20", "21", "22", "24", "25", "26", "27", "28", "29", "30", "31", "32", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "2", "identifier": "Story" }, { "numericValue": "3", "identifier": "Strike" }, { "numericValue": "4", "identifier": "Raid" }, { "numericValue": "5", "identifier": "AllPvP" }, { "numericValue": "6", "identifier": "Patrol" }, { "numericValue": "7", "identifier": "AllPvE" }, { "numericValue": "9", "identifier": "Reserved9" }, { "numericValue": "10", "identifier": "Control" }, { "numericValue": "11", "identifier": "Reserved11" }, { "numericValue": "12", "identifier": "Clash", "description": "Clash -> Destiny's name for Team Deathmatch. 4v4 combat, the team with the highest kills at the end of time wins." }, { "numericValue": "13", "identifier": "Reserved13" }, { "numericValue": "15", "identifier": "CrimsonDoubles" }, { "numericValue": "16", "identifier": "Nightfall" }, { "numericValue": "17", "identifier": "HeroicNightfall" }, { "numericValue": "18", "identifier": "AllStrikes" }, { "numericValue": "19", "identifier": "IronBanner" }, { "numericValue": "20", "identifier": "Reserved20" }, { "numericValue": "21", "identifier": "Reserved21" }, { "numericValue": "22", "identifier": "Reserved22" }, { "numericValue": "24", "identifier": "Reserved24" }, { "numericValue": "25", "identifier": "AllMayhem" }, { "numericValue": "26", "identifier": "Reserved26" }, { "numericValue": "27", "identifier": "Reserved27" }, { "numericValue": "28", "identifier": "Reserved28" }, { "numericValue": "29", "identifier": "Reserved29" }, { "numericValue": "30", "identifier": "Reserved30" }, { "numericValue": "31", "identifier": "Supremacy" }, { "numericValue": "32", "identifier": "PrivateMatchesAll" }, { "numericValue": "37", "identifier": "Survival" }, { "numericValue": "38", "identifier": "Countdown" }, { "numericValue": "39", "identifier": "TrialsOfTheNine" }, { "numericValue": "40", "identifier": "Social" }, { "numericValue": "41", "identifier": "TrialsCountdown" }, { "numericValue": "42", "identifier": "TrialsSurvival" }, { "numericValue": "43", "identifier": "IronBannerControl" }, { "numericValue": "44", "identifier": "IronBannerClash" }, { "numericValue": "45", "identifier": "IronBannerSupremacy" }, { "numericValue": "46", "identifier": "ScoredNightfall" }, { "numericValue": "47", "identifier": "ScoredHeroicNightfall" }, { "numericValue": "48", "identifier": "Rumble" }, { "numericValue": "49", "identifier": "AllDoubles" }, { "numericValue": "50", "identifier": "Doubles" }, { "numericValue": "51", "identifier": "PrivateMatchesClash" }, { "numericValue": "52", "identifier": "PrivateMatchesControl" }, { "numericValue": "53", "identifier": "PrivateMatchesSupremacy" }, { "numericValue": "54", "identifier": "PrivateMatchesCountdown" }, { "numericValue": "55", "identifier": "PrivateMatchesSurvival" }, { "numericValue": "56", "identifier": "PrivateMatchesMayhem" }, { "numericValue": "57", "identifier": "PrivateMatchesRumble" }, { "numericValue": "58", "identifier": "HeroicAdventure" }, { "numericValue": "59", "identifier": "Showdown" }, { "numericValue": "60", "identifier": "Lockdown" }, { "numericValue": "61", "identifier": "Scorched" }, { "numericValue": "62", "identifier": "ScorchedTeam" }, { "numericValue": "63", "identifier": "Gambit" }, { "numericValue": "64", "identifier": "AllPvECompetitive" }, { "numericValue": "65", "identifier": "Breakthrough" }, { "numericValue": "66", "identifier": "BlackArmoryRun" }, { "numericValue": "67", "identifier": "Salvage" }, { "numericValue": "68", "identifier": "IronBannerSalvage" }, { "numericValue": "69", "identifier": "PvPCompetitive" }, { "numericValue": "70", "identifier": "PvPQuickplay" }, { "numericValue": "71", "identifier": "ClashQuickplay" }, { "numericValue": "72", "identifier": "ClashCompetitive" }, { "numericValue": "73", "identifier": "ControlQuickplay" }, { "numericValue": "74", "identifier": "ControlCompetitive" }, { "numericValue": "75", "identifier": "GambitPrime" }, { "numericValue": "76", "identifier": "Reckoning" }, { "numericValue": "77", "identifier": "Menagerie" }, { "numericValue": "78", "identifier": "VexOffensive" }, { "numericValue": "79", "identifier": "NightmareHunt" }, { "numericValue": "80", "identifier": "Elimination" }, { "numericValue": "81", "identifier": "Momentum" }, { "numericValue": "82", "identifier": "Dungeon" }, { "numericValue": "83", "identifier": "Sundial" }, { "numericValue": "84", "identifier": "TrialsOfOsiris" }, { "numericValue": "85", "identifier": "Dares" }, { "numericValue": "86", "identifier": "Offensive" }, { "numericValue": "87", "identifier": "LostSector" }, { "numericValue": "88", "identifier": "Rift" }, { "numericValue": "89", "identifier": "ZoneControl" }, { "numericValue": "90", "identifier": "IronBannerRift" }, { "numericValue": "91", "identifier": "IronBannerZoneControl" } ] }, "loadouts": { "description": "The set of all possible loadout requirements that could be active for this activity. Only one will be active at any given time, and you can discover which one through activity-associated data such as Milestones that have activity info on them.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityLoadoutRequirementSet" } }, "activityModeHashes": { "description": "The hash identifiers for Activity Modes relevant to this activity. Note that if this is a playlist, the specific playlist entry chosen will determine the actual activity modes that end up being relevant.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityModeDefinition" } }, "activityModeTypes": { "description": "The activity modes - if any - in enum form. Because we can't seem to escape the enums.", "type": "array", "items": { "format": "int32", "description": "For historical reasons, this list will have both D1 and D2-relevant Activity Modes in it. Please don't take this to mean that some D1-only feature is coming back!", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.HistoricalStats.Definitions.DestinyActivityModeType" } } }, "isPvP": { "description": "If true, this activity is a PVP activity or playlist.", "type": "boolean" }, "insertionPoints": { "description": "The list of phases or points of entry into an activity, along with information we can use to determine their gating and availability.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityInsertionPointDefinition" } }, "activityLocationMappings": { "description": "A list of location mappings that are affected by this activity. Pulled out of DestinyLocationDefinitions for our/your lookup convenience.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Constants.DestinyEnvironmentLocationMapping" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Activities" }, "Destiny.Definitions.DestinyActivityRewardDefinition": { "description": "Activities can refer to one or more sets of tooltip-friendly reward data. These are the definitions for those tooltip friendly rewards.", "type": "object", "properties": { "rewardText": { "description": "The header for the reward set, if any.", "type": "string" }, "rewardItems": { "description": "The \"Items provided\" in the reward. This is almost always a pointer to a DestinyInventoryItemDefintion for an item that you can't actually earn in-game, but that has name/description/icon information for the vague concept of the rewards you will receive. This is because the actual reward generation is non-deterministic and extremely complicated, so the best the game can do is tell you what you'll get in vague terms. And so too shall we.\r\nInteresting trivia: you actually *do* earn these items when you complete the activity. They go into a single-slot bucket on your profile, which is how you see the pop-ups of these rewards when you complete an activity that match these \"dummy\" items. You can even see them if you look at the last one you earned in your profile-level inventory through the BNet API! Who said reading documentation is a waste of time?", "type": "array", "items": { "$ref": "#/definitions/Destiny.DestinyItemQuantity" } } } }, "Destiny.Definitions.DestinyActivityModifierReferenceDefinition": { "description": "A reference to an Activity Modifier from another entity, such as an Activity (for now, just Activities).\r\nThis defines some", "type": "object", "properties": { "activityModifierHash": { "format": "uint32", "description": "The hash identifier for the DestinyActivityModifierDefinition referenced by this activity.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.ActivityModifiers.DestinyActivityModifierDefinition" } } } }, "Destiny.Definitions.ActivityModifiers.DestinyActivityModifierDefinition": { "description": "Modifiers - in Destiny 1, these were referred to as \"Skulls\" - are changes that can be applied to an Activity.", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "displayInNavMode": { "type": "boolean" }, "displayInActivitySelection": { "type": "boolean" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "ActivityModifiers" }, "Destiny.Definitions.DestinyActivityChallengeDefinition": { "description": "Represents a reference to a Challenge, which for now is just an Objective.", "type": "object", "properties": { "objectiveHash": { "format": "uint32", "description": "The hash for the Objective that matches this challenge. Use it to look up the DestinyObjectiveDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyObjectiveDefinition" } }, "dummyRewards": { "description": "The rewards as they're represented in the UI. Note that they generally link to \"dummy\" items that give a summary of rewards rather than direct, real items themselves.\r\nIf the quantity is 0, don't show the quantity.", "type": "array", "items": { "$ref": "#/definitions/Destiny.DestinyItemQuantity" } } } }, "Destiny.Definitions.DestinyObjectiveDefinition": { "description": "Defines an \"Objective\".\r\nAn objective is a specific task you should accomplish in the game. These are referred to by:\r\n- Quest Steps (which are DestinyInventoryItemDefinition entities with Objectives)\r\n- Challenges (which are Objectives defined on an DestinyActivityDefintion)\r\n- Milestones (which refer to Objectives that are defined on both Quest Steps and Activities)\r\n- Anything else that the designers decide to do later.\r\nObjectives have progress, a notion of having been Completed, human readable data describing the task to be accomplished, and a lot of optional tack-on data that can enhance the information provided about the task.", "type": "object", "properties": { "displayProperties": { "description": "Ideally, this should tell you what your task is. I'm not going to lie to you though. Sometimes this doesn't have useful information at all. Which sucks, but there's nothing either of us can do about it.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "completionValue": { "format": "int32", "description": "The value that the unlock value defined in unlockValueHash must reach in order for the objective to be considered Completed. Used in calculating progress and completion status.", "type": "integer" }, "scope": { "format": "int32", "description": "A shortcut for determining the most restrictive gating that this Objective is set to use. This includes both the dynamic determination of progress and of completion values. See the DestinyGatingScope enum's documentation for more details.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyGatingScope" } }, "locationHash": { "format": "uint32", "description": "OPTIONAL: a hash identifier for the location at which this objective must be accomplished, if there is a location defined. Look up the DestinyLocationDefinition for this hash for that additional location info.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyLocationDefinition" } }, "allowNegativeValue": { "description": "If true, the value is allowed to go negative.", "type": "boolean" }, "allowValueChangeWhenCompleted": { "description": "If true, you can effectively \"un-complete\" this objective if you lose progress after crossing the completion threshold. \r\nIf False, once you complete the task it will remain completed forever by locking the value.", "type": "boolean" }, "isCountingDownward": { "description": "If true, completion means having an unlock value less than or equal to the completionValue.\r\nIf False, completion means having an unlock value greater than or equal to the completionValue.", "type": "boolean" }, "valueStyle": { "format": "int32", "description": "The UI style applied to the objective. It's an enum, take a look at DestinyUnlockValueUIStyle for details of the possible styles. Use this info as you wish to customize your UI.\r\nDEPRECATED: This is no longer populated by Destiny 2 game content. Please use inProgressValueStyle and completedValueStyle instead.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyUnlockValueUIStyle" } }, "progressDescription": { "description": "Text to describe the progress bar.", "type": "string" }, "perks": { "description": "If this objective enables Perks intrinsically, the conditions for that enabling are defined here.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyObjectivePerkEntryDefinition" } ] }, "stats": { "description": "If this objective enables modifications on a player's stats intrinsically, the conditions are defined here.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyObjectiveStatEntryDefinition" } ] }, "minimumVisibilityThreshold": { "format": "int32", "description": "If nonzero, this is the minimum value at which the objective's progression should be shown. Otherwise, don't show it yet.", "type": "integer" }, "allowOvercompletion": { "description": "If True, the progress will continue even beyond the point where the objective met its minimum completion requirements. Your UI will have to accommodate it.", "type": "boolean" }, "showValueOnComplete": { "description": "If True, you should continue showing the progression value in the UI after it's complete. I mean, we already do that in BNet anyways, but if you want to be better behaved than us you could honor this flag.", "type": "boolean" }, "completedValueStyle": { "format": "int32", "description": "The style to use when the objective is completed.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyUnlockValueUIStyle" } }, "inProgressValueStyle": { "format": "int32", "description": "The style to use when the objective is still in progress.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyUnlockValueUIStyle" } }, "uiLabel": { "description": "Objectives can have arbitrary UI-defined identifiers that define the style applied to objectives. For convenience, known UI labels will be defined in the uiStyle enum value.", "type": "string" }, "uiStyle": { "format": "int32", "description": "If the objective has a known UI label value, this property will represent it.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyObjectiveUiStyle" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Objectives" }, "Destiny.DestinyUnlockValueUIStyle": { "format": "int32", "description": "If you're showing an unlock value in the UI, this is the format in which it should be shown. You'll have to build your own algorithms on the client side to determine how best to render these options.", "enum": [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Automatic", "description": "Generally, Automatic means \"Just show the number\"" }, { "numericValue": "1", "identifier": "Fraction", "description": "Show the number as a fractional value. For this to make sense, the value being displayed should have a comparable upper bound, like the progress to the next level of a Progression." }, { "numericValue": "2", "identifier": "Checkbox", "description": "Show the number as a checkbox. 0 Will mean unchecked, any other value will mean checked." }, { "numericValue": "3", "identifier": "Percentage", "description": "Show the number as a percentage. For this to make sense, the value being displayed should have a comparable upper bound, like the progress to the next level of a Progression." }, { "numericValue": "4", "identifier": "DateTime", "description": "Show the number as a date and time. The number will be the number of seconds since the Unix Epoch (January 1st, 1970 at midnight UTC). It'll be up to you to convert this into a date and time format understandable to the user in their time zone." }, { "numericValue": "5", "identifier": "FractionFloat", "description": "Show the number as a floating point value that represents a fraction, where 0 is min and 1 is max. For this to make sense, the value being displayed should have a comparable upper bound, like the progress to the next level of a Progression." }, { "numericValue": "6", "identifier": "Integer", "description": "Show the number as a straight-up integer." }, { "numericValue": "7", "identifier": "TimeDuration", "description": "Show the number as a time duration. The value will be returned as seconds." }, { "numericValue": "8", "identifier": "Hidden", "description": "Don't bother showing the value at all, it's not easily human-interpretable, and used for some internal purpose." }, { "numericValue": "9", "identifier": "Multiplier", "description": "Example: \"1.5x\"" }, { "numericValue": "10", "identifier": "GreenPips", "description": "Show the value as a series of green pips, like the wins in a Trials of Osiris score card." }, { "numericValue": "11", "identifier": "RedPips", "description": "Show the value as a series of red pips, like the losses in a Trials of Osiris score card." }, { "numericValue": "12", "identifier": "ExplicitPercentage", "description": "Show the value as a percentage. For example: \"51%\" - Does no division, only appends '%'" }, { "numericValue": "13", "identifier": "RawFloat", "description": "Show the value as a floating-point number. For example: \"4.52\" NOTE: Passed along from Investment as whole number with last two digits as decimal values (452 -> 4.52)" }, { "numericValue": "14", "identifier": "LevelAndReward", "description": "Show the value as a level and a reward." } ] }, "Destiny.Definitions.DestinyObjectivePerkEntryDefinition": { "description": "Defines the conditions under which an intrinsic perk is applied while participating in an Objective.\r\nThese perks will generally not be benefit-granting perks, but rather a perk that modifies gameplay in some interesting way.", "type": "object", "properties": { "perkHash": { "format": "uint32", "description": "The hash identifier of the DestinySandboxPerkDefinition that will be applied to the character.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinySandboxPerkDefinition" } }, "style": { "format": "int32", "description": "An enumeration indicating whether it will be applied as long as the Objective is active, when it's completed, or until it's completed.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyObjectiveGrantStyle" } } } }, "Destiny.DestinyObjectiveGrantStyle": { "format": "int32", "description": "Some Objectives provide perks, generally as part of providing some kind of interesting modifier for a Challenge or Quest. This indicates when the Perk is granted.", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "WhenIncomplete" }, { "numericValue": "1", "identifier": "WhenComplete" }, { "numericValue": "2", "identifier": "Always" } ] }, "Destiny.Definitions.DestinySandboxPerkDefinition": { "description": "Perks are modifiers to a character or item that can be applied situationally.\r\n- Perks determine a weapons' damage type.\r\n- Perks put the Mods in Modifiers (they are literally the entity that bestows the Sandbox benefit for whatever fluff text about the modifier in the Socket, Plug or Talent Node)\r\n- Perks are applied for unique alterations of state in Objectives\r\nAnyways, I'm sure you can see why perks are so interesting.\r\nWhat Perks often don't have is human readable information, so we attempt to reverse engineer that by pulling that data from places that uniquely refer to these perks: namely, Talent Nodes and Plugs. That only gives us a subset of perks that are human readable, but those perks are the ones people generally care about anyways. The others are left as a mystery, their true purpose mostly unknown and undocumented.", "type": "object", "properties": { "displayProperties": { "description": "These display properties are by no means guaranteed to be populated. Usually when it is, it's only because we back-filled them with the displayProperties of some Talent Node or Plug item that happened to be uniquely providing that perk.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "perkIdentifier": { "description": "The string identifier for the perk.", "type": "string" }, "isDisplayable": { "description": "If true, you can actually show the perk in the UI. Otherwise, it doesn't have useful player-facing information.", "type": "boolean" }, "damageType": { "format": "int32", "description": "If this perk grants a damage type to a weapon, the damage type will be defined here.\r\nUnless you have a compelling reason to use this enum value, use the damageTypeHash instead to look up the actual DestinyDamageTypeDefinition.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DamageType" } }, "damageTypeHash": { "format": "uint32", "description": "The hash identifier for looking up the DestinyDamageTypeDefinition, if this perk has a damage type.\r\nThis is preferred over using the damageType enumeration value, which has been left purely because it is occasionally convenient.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyDamageTypeDefinition" } }, "perkGroups": { "description": "An old holdover from the original Armory, this was an attempt to group perks by functionality.\r\nIt is as yet unpopulated, and there will be quite a bit of work needed to restore it to its former working order.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyTalentNodeStepGroups" } ] }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "SandboxPerks" }, "Destiny.DamageType": { "format": "int32", "enum": [ "0", "1", "2", "3", "4", "5", "6", "7" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Kinetic" }, { "numericValue": "2", "identifier": "Arc" }, { "numericValue": "3", "identifier": "Thermal" }, { "numericValue": "4", "identifier": "Void" }, { "numericValue": "5", "identifier": "Raid" }, { "numericValue": "6", "identifier": "Stasis" }, { "numericValue": "7", "identifier": "Strand" } ] }, "Destiny.Definitions.DestinyTalentNodeStepGroups": { "description": "These properties are an attempt to categorize talent node steps by certain common properties. See the related enumerations for the type of properties being categorized.", "type": "object", "properties": { "weaponPerformance": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.Definitions.DestinyTalentNodeStepWeaponPerformances" } }, "impactEffects": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.Definitions.DestinyTalentNodeStepImpactEffects" } }, "guardianAttributes": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.Definitions.DestinyTalentNodeStepGuardianAttributes" } }, "lightAbilities": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.Definitions.DestinyTalentNodeStepLightAbilities" } }, "damageTypes": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.Definitions.DestinyTalentNodeStepDamageTypes" } } } }, "Destiny.Definitions.DestinyTalentNodeStepWeaponPerformances": { "format": "int32", "enum": [ "0", "1", "2", "4", "8", "16", "32", "64", "128", "256", "512", "1024", "2048", "4096", "8191" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "RateOfFire" }, { "numericValue": "2", "identifier": "Damage" }, { "numericValue": "4", "identifier": "Accuracy" }, { "numericValue": "8", "identifier": "Range" }, { "numericValue": "16", "identifier": "Zoom" }, { "numericValue": "32", "identifier": "Recoil" }, { "numericValue": "64", "identifier": "Ready" }, { "numericValue": "128", "identifier": "Reload" }, { "numericValue": "256", "identifier": "HairTrigger" }, { "numericValue": "512", "identifier": "AmmoAndMagazine" }, { "numericValue": "1024", "identifier": "TrackingAndDetonation" }, { "numericValue": "2048", "identifier": "ShotgunSpread" }, { "numericValue": "4096", "identifier": "ChargeTime" }, { "numericValue": "8191", "identifier": "All" } ] }, "Destiny.Definitions.DestinyTalentNodeStepImpactEffects": { "format": "int32", "enum": [ "0", "1", "2", "4", "8", "16", "32", "63" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "ArmorPiercing" }, { "numericValue": "2", "identifier": "Ricochet" }, { "numericValue": "4", "identifier": "Flinch" }, { "numericValue": "8", "identifier": "CollateralDamage" }, { "numericValue": "16", "identifier": "Disorient" }, { "numericValue": "32", "identifier": "HighlightTarget" }, { "numericValue": "63", "identifier": "All" } ] }, "Destiny.Definitions.DestinyTalentNodeStepGuardianAttributes": { "format": "int32", "enum": [ "0", "1", "2", "4", "8", "16", "32", "64", "128", "255" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Stats" }, { "numericValue": "2", "identifier": "Shields" }, { "numericValue": "4", "identifier": "Health" }, { "numericValue": "8", "identifier": "Revive" }, { "numericValue": "16", "identifier": "AimUnderFire" }, { "numericValue": "32", "identifier": "Radar" }, { "numericValue": "64", "identifier": "Invisibility" }, { "numericValue": "128", "identifier": "Reputations" }, { "numericValue": "255", "identifier": "All" } ] }, "Destiny.Definitions.DestinyTalentNodeStepLightAbilities": { "format": "int32", "enum": [ "0", "1", "2", "4", "8", "16", "32", "63" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Grenades" }, { "numericValue": "2", "identifier": "Melee" }, { "numericValue": "4", "identifier": "MovementModes" }, { "numericValue": "8", "identifier": "Orbs" }, { "numericValue": "16", "identifier": "SuperEnergy" }, { "numericValue": "32", "identifier": "SuperMods" }, { "numericValue": "63", "identifier": "All" } ] }, "Destiny.Definitions.DestinyTalentNodeStepDamageTypes": { "format": "int32", "enum": [ "0", "1", "2", "4", "8", "15" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Kinetic" }, { "numericValue": "2", "identifier": "Arc" }, { "numericValue": "4", "identifier": "Solar" }, { "numericValue": "8", "identifier": "Void" }, { "numericValue": "15", "identifier": "All" } ] }, "Destiny.Definitions.DestinyDamageTypeDefinition": { "description": "All damage types that are possible in the game are defined here, along with localized info and icons as needed.", "type": "object", "properties": { "displayProperties": { "description": "The description of the damage type, icon etc...", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "transparentIconPath": { "description": "A variant of the icon that is transparent and colorless.", "type": "string" }, "showIcon": { "description": "If TRUE, the game shows this damage type's icon. Otherwise, it doesn't. Whether you show it or not is up to you.", "type": "boolean" }, "enumValue": { "format": "int32", "description": "We have an enumeration for damage types for quick reference. This is the current definition's damage type enum value.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DamageType" } }, "color": { "description": "A color associated with the damage type. The displayProperties icon is tinted with a color close to this.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Misc.DestinyColor" } ] }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "DamageTypes" }, "Destiny.Definitions.DestinyObjectiveStatEntryDefinition": { "description": "Defines the conditions under which stat modifications will be applied to a Character while participating in an objective.", "type": "object", "properties": { "stat": { "description": "The stat being modified, and the value used.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyItemInvestmentStatDefinition" } ] }, "style": { "format": "int32", "description": "Whether it will be applied as long as the objective is active, when it's completed, or until it's completed.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyObjectiveGrantStyle" } } } }, "Destiny.Definitions.DestinyItemInvestmentStatDefinition": { "description": "Represents a \"raw\" investment stat, before calculated stats are calculated and before any DestinyStatGroupDefinition is applied to transform the stat into something closer to what you see in-game.\r\nBecause these won't match what you see in-game, consider carefully whether you really want to use these stats. I have left them in case someone can do something useful or interesting with the pre-processed statistics.", "type": "object", "properties": { "statTypeHash": { "format": "uint32", "description": "The hash identifier for the DestinyStatDefinition defining this stat.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyStatDefinition" } }, "value": { "format": "int32", "description": "The raw \"Investment\" value for the stat, before transformations are performed to turn this raw stat into stats that are displayed in the game UI.", "type": "integer" }, "isConditionallyActive": { "description": "If this is true, the stat will only be applied on the item in certain game state conditions, and we can't know statically whether or not this stat will be applied. Check the \"live\" API data instead for whether this value is being applied on a specific instance of the item in question, and you can use this to decide whether you want to show the stat on the generic view of the item, or whether you want to show some kind of caveat or warning about the stat value being conditional on game state.", "type": "boolean" } } }, "Destiny.DestinyObjectiveUiStyle": { "format": "int32", "description": "If the objective has a known UI label, this enumeration will represent it.", "enum": [ "0", "1", "2", "3", "4", "5", "6" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Highlighted" }, { "numericValue": "2", "identifier": "CraftingWeaponLevel" }, { "numericValue": "3", "identifier": "CraftingWeaponLevelProgress" }, { "numericValue": "4", "identifier": "CraftingWeaponTimestamp" }, { "numericValue": "5", "identifier": "CraftingMementos" }, { "numericValue": "6", "identifier": "CraftingMementoTitle" } ] }, "Destiny.Definitions.DestinyLocationDefinition": { "description": "A \"Location\" is a sort of shortcut for referring to a specific combination of Activity, Destination, Place, and even Bubble or NavPoint within a space.\r\nMost of this data isn't intrinsically useful to us, but Objectives refer to locations, and through that we can at least infer the Activity, Destination, and Place being referred to by the Objective.", "type": "object", "properties": { "vendorHash": { "format": "uint32", "description": "If the location has a Vendor on it, this is the hash identifier for that Vendor. Look them up with DestinyVendorDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDefinition" } }, "locationReleases": { "description": "A Location may refer to different specific spots in the world based on the world's current state. This is a list of those potential spots, and the data we can use at runtime to determine which one of the spots is the currently valid one.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyLocationReleaseDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Locations" }, "Destiny.Definitions.DestinyLocationReleaseDefinition": { "description": "A specific \"spot\" referred to by a location. Only one of these can be active at a time for a given Location.", "type": "object", "properties": { "displayProperties": { "description": "Sadly, these don't appear to be populated anymore (ever?)", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "smallTransparentIcon": { "type": "string" }, "mapIcon": { "type": "string" }, "largeTransparentIcon": { "type": "string" }, "spawnPoint": { "format": "uint32", "description": "If we had map information, this spawnPoint would be interesting. But sadly, we don't have that info.", "type": "integer" }, "destinationHash": { "format": "uint32", "description": "The Destination being pointed to by this location.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyDestinationDefinition" } }, "activityHash": { "format": "uint32", "description": "The Activity being pointed to by this location.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "activityGraphHash": { "format": "uint32", "description": "The Activity Graph being pointed to by this location.", "type": "integer" }, "activityGraphNodeHash": { "format": "uint32", "description": "The Activity Graph Node being pointed to by this location. (Remember that Activity Graph Node hashes are only unique within an Activity Graph: so use the combination to find the node being spoken of)", "type": "integer" }, "activityBubbleName": { "format": "uint32", "description": "The Activity Bubble within the Destination. Look this up in the DestinyDestinationDefinition's bubbles and bubbleSettings properties.", "type": "integer" }, "activityPathBundle": { "format": "uint32", "description": "If we had map information, this would tell us something cool about the path this location wants you to take. I wish we had map information.", "type": "integer" }, "activityPathDestination": { "format": "uint32", "description": "If we had map information, this would tell us about path information related to destination on the map. Sad. Maybe you can do something cool with it. Go to town man.", "type": "integer" }, "navPointType": { "format": "int32", "description": "The type of Nav Point that this represents. See the enumeration for more info.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyActivityNavPointType" } }, "worldPosition": { "description": "Looks like it should be the position on the map, but sadly it does not look populated... yet?", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "Destiny.DestinyActivityNavPointType": { "format": "int32", "enum": [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Inactive" }, { "numericValue": "1", "identifier": "PrimaryObjective" }, { "numericValue": "2", "identifier": "SecondaryObjective" }, { "numericValue": "3", "identifier": "TravelObjective" }, { "numericValue": "4", "identifier": "PublicEventObjective" }, { "numericValue": "5", "identifier": "AmmoCache" }, { "numericValue": "6", "identifier": "PointTypeFlag" }, { "numericValue": "7", "identifier": "CapturePoint" }, { "numericValue": "8", "identifier": "DefensiveEncounter" }, { "numericValue": "9", "identifier": "GhostInteraction" }, { "numericValue": "10", "identifier": "KillAi" }, { "numericValue": "11", "identifier": "QuestItem" }, { "numericValue": "12", "identifier": "PatrolMission" }, { "numericValue": "13", "identifier": "Incoming" }, { "numericValue": "14", "identifier": "ArenaObjective" }, { "numericValue": "15", "identifier": "AutomationHint" }, { "numericValue": "16", "identifier": "TrackedQuest" } ] }, "Destiny.Definitions.DestinyActivityUnlockStringDefinition": { "description": "Represents a status string that could be conditionally displayed about an activity. Note that externally, you can only see the strings themselves. Internally we combine this information with server state to determine which strings should be shown.", "type": "object", "properties": { "displayString": { "description": "The string to be displayed if the conditions are met.", "type": "string" } } }, "Destiny.Definitions.DestinyActivityPlaylistItemDefinition": { "description": "If the activity is a playlist, this is the definition for a specific entry in the playlist: a single possible combination of Activity and Activity Mode that can be chosen.", "type": "object", "properties": { "activityHash": { "format": "uint32", "description": "The hash identifier of the Activity that can be played. Use it to look up the DestinyActivityDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "directActivityModeHash": { "format": "uint32", "description": "If this playlist entry had an activity mode directly defined on it, this will be the hash of that mode.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityModeDefinition" } }, "directActivityModeType": { "format": "int32", "description": "If the playlist entry had an activity mode directly defined on it, this will be the enum value of that mode.", "enum": [ "0", "2", "3", "4", "5", "6", "7", "9", "10", "11", "12", "13", "15", "16", "17", "18", "19", "20", "21", "22", "24", "25", "26", "27", "28", "29", "30", "31", "32", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "2", "identifier": "Story" }, { "numericValue": "3", "identifier": "Strike" }, { "numericValue": "4", "identifier": "Raid" }, { "numericValue": "5", "identifier": "AllPvP" }, { "numericValue": "6", "identifier": "Patrol" }, { "numericValue": "7", "identifier": "AllPvE" }, { "numericValue": "9", "identifier": "Reserved9" }, { "numericValue": "10", "identifier": "Control" }, { "numericValue": "11", "identifier": "Reserved11" }, { "numericValue": "12", "identifier": "Clash", "description": "Clash -> Destiny's name for Team Deathmatch. 4v4 combat, the team with the highest kills at the end of time wins." }, { "numericValue": "13", "identifier": "Reserved13" }, { "numericValue": "15", "identifier": "CrimsonDoubles" }, { "numericValue": "16", "identifier": "Nightfall" }, { "numericValue": "17", "identifier": "HeroicNightfall" }, { "numericValue": "18", "identifier": "AllStrikes" }, { "numericValue": "19", "identifier": "IronBanner" }, { "numericValue": "20", "identifier": "Reserved20" }, { "numericValue": "21", "identifier": "Reserved21" }, { "numericValue": "22", "identifier": "Reserved22" }, { "numericValue": "24", "identifier": "Reserved24" }, { "numericValue": "25", "identifier": "AllMayhem" }, { "numericValue": "26", "identifier": "Reserved26" }, { "numericValue": "27", "identifier": "Reserved27" }, { "numericValue": "28", "identifier": "Reserved28" }, { "numericValue": "29", "identifier": "Reserved29" }, { "numericValue": "30", "identifier": "Reserved30" }, { "numericValue": "31", "identifier": "Supremacy" }, { "numericValue": "32", "identifier": "PrivateMatchesAll" }, { "numericValue": "37", "identifier": "Survival" }, { "numericValue": "38", "identifier": "Countdown" }, { "numericValue": "39", "identifier": "TrialsOfTheNine" }, { "numericValue": "40", "identifier": "Social" }, { "numericValue": "41", "identifier": "TrialsCountdown" }, { "numericValue": "42", "identifier": "TrialsSurvival" }, { "numericValue": "43", "identifier": "IronBannerControl" }, { "numericValue": "44", "identifier": "IronBannerClash" }, { "numericValue": "45", "identifier": "IronBannerSupremacy" }, { "numericValue": "46", "identifier": "ScoredNightfall" }, { "numericValue": "47", "identifier": "ScoredHeroicNightfall" }, { "numericValue": "48", "identifier": "Rumble" }, { "numericValue": "49", "identifier": "AllDoubles" }, { "numericValue": "50", "identifier": "Doubles" }, { "numericValue": "51", "identifier": "PrivateMatchesClash" }, { "numericValue": "52", "identifier": "PrivateMatchesControl" }, { "numericValue": "53", "identifier": "PrivateMatchesSupremacy" }, { "numericValue": "54", "identifier": "PrivateMatchesCountdown" }, { "numericValue": "55", "identifier": "PrivateMatchesSurvival" }, { "numericValue": "56", "identifier": "PrivateMatchesMayhem" }, { "numericValue": "57", "identifier": "PrivateMatchesRumble" }, { "numericValue": "58", "identifier": "HeroicAdventure" }, { "numericValue": "59", "identifier": "Showdown" }, { "numericValue": "60", "identifier": "Lockdown" }, { "numericValue": "61", "identifier": "Scorched" }, { "numericValue": "62", "identifier": "ScorchedTeam" }, { "numericValue": "63", "identifier": "Gambit" }, { "numericValue": "64", "identifier": "AllPvECompetitive" }, { "numericValue": "65", "identifier": "Breakthrough" }, { "numericValue": "66", "identifier": "BlackArmoryRun" }, { "numericValue": "67", "identifier": "Salvage" }, { "numericValue": "68", "identifier": "IronBannerSalvage" }, { "numericValue": "69", "identifier": "PvPCompetitive" }, { "numericValue": "70", "identifier": "PvPQuickplay" }, { "numericValue": "71", "identifier": "ClashQuickplay" }, { "numericValue": "72", "identifier": "ClashCompetitive" }, { "numericValue": "73", "identifier": "ControlQuickplay" }, { "numericValue": "74", "identifier": "ControlCompetitive" }, { "numericValue": "75", "identifier": "GambitPrime" }, { "numericValue": "76", "identifier": "Reckoning" }, { "numericValue": "77", "identifier": "Menagerie" }, { "numericValue": "78", "identifier": "VexOffensive" }, { "numericValue": "79", "identifier": "NightmareHunt" }, { "numericValue": "80", "identifier": "Elimination" }, { "numericValue": "81", "identifier": "Momentum" }, { "numericValue": "82", "identifier": "Dungeon" }, { "numericValue": "83", "identifier": "Sundial" }, { "numericValue": "84", "identifier": "TrialsOfOsiris" }, { "numericValue": "85", "identifier": "Dares" }, { "numericValue": "86", "identifier": "Offensive" }, { "numericValue": "87", "identifier": "LostSector" }, { "numericValue": "88", "identifier": "Rift" }, { "numericValue": "89", "identifier": "ZoneControl" }, { "numericValue": "90", "identifier": "IronBannerRift" }, { "numericValue": "91", "identifier": "IronBannerZoneControl" } ] }, "activityModeHashes": { "description": "The hash identifiers for Activity Modes relevant to this entry.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityModeDefinition" } }, "activityModeTypes": { "description": "The activity modes - if any - in enum form. Because we can't seem to escape the enums.", "type": "array", "items": { "format": "int32", "description": "For historical reasons, this list will have both D1 and D2-relevant Activity Modes in it. Please don't take this to mean that some D1-only feature is coming back!", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.HistoricalStats.Definitions.DestinyActivityModeType" } } } } }, "Destiny.HistoricalStats.Definitions.DestinyActivityModeType": { "format": "int32", "description": "For historical reasons, this list will have both D1 and D2-relevant Activity Modes in it. Please don't take this to mean that some D1-only feature is coming back!", "enum": [ "0", "2", "3", "4", "5", "6", "7", "9", "10", "11", "12", "13", "15", "16", "17", "18", "19", "20", "21", "22", "24", "25", "26", "27", "28", "29", "30", "31", "32", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "2", "identifier": "Story" }, { "numericValue": "3", "identifier": "Strike" }, { "numericValue": "4", "identifier": "Raid" }, { "numericValue": "5", "identifier": "AllPvP" }, { "numericValue": "6", "identifier": "Patrol" }, { "numericValue": "7", "identifier": "AllPvE" }, { "numericValue": "9", "identifier": "Reserved9" }, { "numericValue": "10", "identifier": "Control" }, { "numericValue": "11", "identifier": "Reserved11" }, { "numericValue": "12", "identifier": "Clash", "description": "Clash -> Destiny's name for Team Deathmatch. 4v4 combat, the team with the highest kills at the end of time wins." }, { "numericValue": "13", "identifier": "Reserved13" }, { "numericValue": "15", "identifier": "CrimsonDoubles" }, { "numericValue": "16", "identifier": "Nightfall" }, { "numericValue": "17", "identifier": "HeroicNightfall" }, { "numericValue": "18", "identifier": "AllStrikes" }, { "numericValue": "19", "identifier": "IronBanner" }, { "numericValue": "20", "identifier": "Reserved20" }, { "numericValue": "21", "identifier": "Reserved21" }, { "numericValue": "22", "identifier": "Reserved22" }, { "numericValue": "24", "identifier": "Reserved24" }, { "numericValue": "25", "identifier": "AllMayhem" }, { "numericValue": "26", "identifier": "Reserved26" }, { "numericValue": "27", "identifier": "Reserved27" }, { "numericValue": "28", "identifier": "Reserved28" }, { "numericValue": "29", "identifier": "Reserved29" }, { "numericValue": "30", "identifier": "Reserved30" }, { "numericValue": "31", "identifier": "Supremacy" }, { "numericValue": "32", "identifier": "PrivateMatchesAll" }, { "numericValue": "37", "identifier": "Survival" }, { "numericValue": "38", "identifier": "Countdown" }, { "numericValue": "39", "identifier": "TrialsOfTheNine" }, { "numericValue": "40", "identifier": "Social" }, { "numericValue": "41", "identifier": "TrialsCountdown" }, { "numericValue": "42", "identifier": "TrialsSurvival" }, { "numericValue": "43", "identifier": "IronBannerControl" }, { "numericValue": "44", "identifier": "IronBannerClash" }, { "numericValue": "45", "identifier": "IronBannerSupremacy" }, { "numericValue": "46", "identifier": "ScoredNightfall" }, { "numericValue": "47", "identifier": "ScoredHeroicNightfall" }, { "numericValue": "48", "identifier": "Rumble" }, { "numericValue": "49", "identifier": "AllDoubles" }, { "numericValue": "50", "identifier": "Doubles" }, { "numericValue": "51", "identifier": "PrivateMatchesClash" }, { "numericValue": "52", "identifier": "PrivateMatchesControl" }, { "numericValue": "53", "identifier": "PrivateMatchesSupremacy" }, { "numericValue": "54", "identifier": "PrivateMatchesCountdown" }, { "numericValue": "55", "identifier": "PrivateMatchesSurvival" }, { "numericValue": "56", "identifier": "PrivateMatchesMayhem" }, { "numericValue": "57", "identifier": "PrivateMatchesRumble" }, { "numericValue": "58", "identifier": "HeroicAdventure" }, { "numericValue": "59", "identifier": "Showdown" }, { "numericValue": "60", "identifier": "Lockdown" }, { "numericValue": "61", "identifier": "Scorched" }, { "numericValue": "62", "identifier": "ScorchedTeam" }, { "numericValue": "63", "identifier": "Gambit" }, { "numericValue": "64", "identifier": "AllPvECompetitive" }, { "numericValue": "65", "identifier": "Breakthrough" }, { "numericValue": "66", "identifier": "BlackArmoryRun" }, { "numericValue": "67", "identifier": "Salvage" }, { "numericValue": "68", "identifier": "IronBannerSalvage" }, { "numericValue": "69", "identifier": "PvPCompetitive" }, { "numericValue": "70", "identifier": "PvPQuickplay" }, { "numericValue": "71", "identifier": "ClashQuickplay" }, { "numericValue": "72", "identifier": "ClashCompetitive" }, { "numericValue": "73", "identifier": "ControlQuickplay" }, { "numericValue": "74", "identifier": "ControlCompetitive" }, { "numericValue": "75", "identifier": "GambitPrime" }, { "numericValue": "76", "identifier": "Reckoning" }, { "numericValue": "77", "identifier": "Menagerie" }, { "numericValue": "78", "identifier": "VexOffensive" }, { "numericValue": "79", "identifier": "NightmareHunt" }, { "numericValue": "80", "identifier": "Elimination" }, { "numericValue": "81", "identifier": "Momentum" }, { "numericValue": "82", "identifier": "Dungeon" }, { "numericValue": "83", "identifier": "Sundial" }, { "numericValue": "84", "identifier": "TrialsOfOsiris" }, { "numericValue": "85", "identifier": "Dares" }, { "numericValue": "86", "identifier": "Offensive" }, { "numericValue": "87", "identifier": "LostSector" }, { "numericValue": "88", "identifier": "Rift" }, { "numericValue": "89", "identifier": "ZoneControl" }, { "numericValue": "90", "identifier": "IronBannerRift" }, { "numericValue": "91", "identifier": "IronBannerZoneControl" } ] }, "Destiny.Definitions.DestinyActivityModeDefinition": { "description": "This definition represents an \"Activity Mode\" as it exists in the Historical Stats endpoints. An individual Activity Mode represents a collection of activities that are played in a certain way. For example, Nightfall Strikes are part of a \"Nightfall\" activity mode, and any activities played as the PVP mode \"Clash\" are part of the \"Clash activity mode.\r\nActivity modes are nested under each other in a hierarchy, so that if you ask for - for example - \"AllPvP\", you will get any PVP activities that the user has played, regardless of what specific PVP mode was being played.", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "pgcrImage": { "description": "If this activity mode has a related PGCR image, this will be the path to said image.", "type": "string" }, "modeType": { "format": "int32", "description": "The Enumeration value for this Activity Mode. Pass this identifier into Stats endpoints to get aggregate stats for this mode.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.HistoricalStats.Definitions.DestinyActivityModeType" } }, "activityModeCategory": { "format": "int32", "description": "The type of play being performed in broad terms (PVP, PVE)", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyActivityModeCategory" } }, "isTeamBased": { "description": "If True, this mode has oppositional teams fighting against each other rather than \"Free-For-All\" or Co-operative modes of play.\r\nNote that Aggregate modes are never marked as team based, even if they happen to be team based at the moment. At any time, an aggregate whose subordinates are only team based could be changed so that one or more aren't team based, and then this boolean won't make much sense (the aggregation would become \"sometimes team based\"). Let's not deal with that right now.", "type": "boolean" }, "isAggregateMode": { "description": "If true, this mode is an aggregation of other, more specific modes rather than being a mode in itself. This includes modes that group Features/Events rather than Gameplay, such as Trials of The Nine: Trials of the Nine being an Event that is interesting to see aggregate data for, but when you play the activities within Trials of the Nine they are more specific activity modes such as Clash.", "type": "boolean" }, "parentHashes": { "description": "The hash identifiers of the DestinyActivityModeDefinitions that represent all of the \"parent\" modes for this mode. For instance, the Nightfall Mode is also a member of AllStrikes and AllPvE.", "type": "array", "items": { "format": "uint32", "type": "integer" } }, "friendlyName": { "description": "A Friendly identifier you can use for referring to this Activity Mode. We really only used this in our URLs, so... you know, take that for whatever it's worth.", "type": "string" }, "activityModeMappings": { "description": "If this exists, the mode has specific Activities (referred to by the Key) that should instead map to other Activity Modes when they are played. This was useful in D1 for Private Matches, where we wanted to have Private Matches as an activity mode while still referring to the specific mode being played.", "type": "object", "additionalProperties": { "format": "int32", "description": "For historical reasons, this list will have both D1 and D2-relevant Activity Modes in it. Please don't take this to mean that some D1-only feature is coming back!", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.HistoricalStats.Definitions.DestinyActivityModeType" } } }, "display": { "description": "If FALSE, we want to ignore this type when we're showing activity modes in BNet UI. It will still be returned in case 3rd parties want to use it for any purpose.", "type": "boolean" }, "order": { "format": "int32", "description": "The relative ordering of activity modes.", "type": "integer" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "ActivityModes" }, "Destiny.DestinyActivityModeCategory": { "format": "int32", "description": "Activity Modes are grouped into a few possible broad categories.", "enum": [ "0", "1", "2", "3" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None", "description": "Activities that are neither PVP nor PVE, such as social activities." }, { "numericValue": "1", "identifier": "PvE", "description": "PvE activities, where you shoot aliens in the face." }, { "numericValue": "2", "identifier": "PvP", "description": "PvP activities, where you shoot your \"friends\"." }, { "numericValue": "3", "identifier": "PvECompetitive", "description": "PVE competitive activities, where you shoot whoever you want whenever you want. Or run around collecting small glowing triangles." } ] }, "Destiny.Definitions.DestinyActivityMatchmakingBlockDefinition": { "description": "Information about matchmaking and party size for the activity.", "type": "object", "properties": { "isMatchmade": { "description": "If TRUE, the activity is matchmade. Otherwise, it requires explicit forming of a party.", "type": "boolean" }, "minParty": { "format": "int32", "description": "The minimum # of people in the fireteam for the activity to launch.", "type": "integer" }, "maxParty": { "format": "int32", "description": "The maximum # of people allowed in a Fireteam.", "type": "integer" }, "maxPlayers": { "format": "int32", "description": "The maximum # of people allowed across all teams in the activity.", "type": "integer" }, "requiresGuardianOath": { "description": "If true, you have to Solemnly Swear to be up to Nothing But Good(tm) to play.", "type": "boolean" } } }, "Destiny.Definitions.DestinyActivityGuidedBlockDefinition": { "description": "Guided Game information for this activity.", "type": "object", "properties": { "guidedMaxLobbySize": { "format": "int32", "description": "The maximum amount of people that can be in the waiting lobby.", "type": "integer" }, "guidedMinLobbySize": { "format": "int32", "description": "The minimum amount of people that can be in the waiting lobby.", "type": "integer" }, "guidedDisbandCount": { "format": "int32", "description": "If -1, the guided group cannot be disbanded. Otherwise, take the total # of players in the activity and subtract this number: that is the total # of votes needed for the guided group to disband.", "type": "integer" } } }, "Destiny.Definitions.DestinyActivityLoadoutRequirementSet": { "type": "object", "properties": { "requirements": { "description": "The set of requirements that will be applied on the activity if this requirement set is active.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityLoadoutRequirement" } } } }, "Destiny.Definitions.DestinyActivityLoadoutRequirement": { "type": "object", "properties": { "equipmentSlotHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyEquipmentSlotDefinition" } }, "allowedEquippedItemHashes": { "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "allowedWeaponSubTypes": { "type": "array", "items": { "format": "int32", "description": "This Enumeration further classifies items by more specific categorizations than DestinyItemType. The \"Sub-Type\" is where we classify and categorize items one step further in specificity: \"Auto Rifle\" instead of just \"Weapon\" for example, or \"Vanguard Bounty\" instead of merely \"Bounty\".\r\nThese sub-types are provided for historical compatibility with Destiny 1, but an ideal alternative is to use DestinyItemCategoryDefinitions and the DestinyItemDefinition.itemCategories property instead. Item Categories allow for arbitrary hierarchies of specificity, and for items to belong to multiple categories across multiple hierarchies simultaneously. For this enum, we pick a single type as a \"best guess\" fit.\r\nNOTE: This is not all of the item types available, and some of these are holdovers from Destiny 1 that may or may not still exist.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyItemSubType" } } } } }, "Destiny.DestinyItemSubType": { "format": "int32", "description": "This Enumeration further classifies items by more specific categorizations than DestinyItemType. The \"Sub-Type\" is where we classify and categorize items one step further in specificity: \"Auto Rifle\" instead of just \"Weapon\" for example, or \"Vanguard Bounty\" instead of merely \"Bounty\".\r\nThese sub-types are provided for historical compatibility with Destiny 1, but an ideal alternative is to use DestinyItemCategoryDefinitions and the DestinyItemDefinition.itemCategories property instead. Item Categories allow for arbitrary hierarchies of specificity, and for items to belong to multiple categories across multiple hierarchies simultaneously. For this enum, we pick a single type as a \"best guess\" fit.\r\nNOTE: This is not all of the item types available, and some of these are holdovers from Destiny 1 that may or may not still exist.", "enum": [ "0", "1", "2", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Crucible", "description": "DEPRECATED. Items can be both \"Crucible\" and something else interesting." }, { "numericValue": "2", "identifier": "Vanguard", "description": "DEPRECATED. An item can both be \"Vanguard\" and something else." }, { "numericValue": "5", "identifier": "Exotic", "description": "DEPRECATED. An item can both be Exotic and something else." }, { "numericValue": "6", "identifier": "AutoRifle" }, { "numericValue": "7", "identifier": "Shotgun" }, { "numericValue": "8", "identifier": "Machinegun" }, { "numericValue": "9", "identifier": "HandCannon" }, { "numericValue": "10", "identifier": "RocketLauncher" }, { "numericValue": "11", "identifier": "FusionRifle" }, { "numericValue": "12", "identifier": "SniperRifle" }, { "numericValue": "13", "identifier": "PulseRifle" }, { "numericValue": "14", "identifier": "ScoutRifle" }, { "numericValue": "16", "identifier": "Crm", "description": "DEPRECATED. An item can both be CRM and something else." }, { "numericValue": "17", "identifier": "Sidearm" }, { "numericValue": "18", "identifier": "Sword" }, { "numericValue": "19", "identifier": "Mask" }, { "numericValue": "20", "identifier": "Shader" }, { "numericValue": "21", "identifier": "Ornament" }, { "numericValue": "22", "identifier": "FusionRifleLine" }, { "numericValue": "23", "identifier": "GrenadeLauncher" }, { "numericValue": "24", "identifier": "SubmachineGun" }, { "numericValue": "25", "identifier": "TraceRifle" }, { "numericValue": "26", "identifier": "HelmetArmor" }, { "numericValue": "27", "identifier": "GauntletsArmor" }, { "numericValue": "28", "identifier": "ChestArmor" }, { "numericValue": "29", "identifier": "LegArmor" }, { "numericValue": "30", "identifier": "ClassArmor" }, { "numericValue": "31", "identifier": "Bow" }, { "numericValue": "32", "identifier": "DummyRepeatableBounty" }, { "numericValue": "33", "identifier": "Glaive" } ] }, "Destiny.Definitions.DestinyActivityInsertionPointDefinition": { "description": "A point of entry into an activity, gated by an unlock flag and with some more-or-less useless (for our purposes) phase information. I'm including it in case we end up being able to bolt more useful information onto it in the future.\r\nUPDATE: Turns out this information isn't actually useless, and is in fact actually useful for people. Who would have thought? We still don't have localized info for it, but at least this will help people when they're looking at phase indexes in stats data, or when they want to know what phases have been completed on a weekly achievement.", "type": "object", "properties": { "phaseHash": { "format": "uint32", "description": "A unique hash value representing the phase. This can be useful for, for example, comparing how different instances of Raids have phases in different orders!", "type": "integer" } } }, "Destiny.Constants.DestinyEnvironmentLocationMapping": { "type": "object", "properties": { "locationHash": { "format": "uint32", "description": "The location that is revealed on the director by this mapping.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyLocationDefinition" } }, "activationSource": { "description": "A hint that the UI uses to figure out how this location is activated by the player.", "type": "string" }, "itemHash": { "format": "uint32", "description": "If this is populated, it is the item that you must possess for this location to be active because of this mapping. (theoretically, a location can have multiple mappings, and some might require an item while others don't)", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "objectiveHash": { "format": "uint32", "description": "If this is populated, this is an objective related to the location.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyObjectiveDefinition" } }, "activityHash": { "format": "uint32", "description": "If this is populated, this is the activity you have to be playing in order to see this location appear because of this mapping. (theoretically, a location can have multiple mappings, and some might require you to be in a specific activity when others don't)", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } } } }, "Destiny.Definitions.DestinyPlaceDefinition": { "description": "Okay, so Activities (DestinyActivityDefinition) take place in Destinations (DestinyDestinationDefinition). Destinations are part of larger locations known as Places (you're reading its documentation right now).\r\nPlaces are more on the planetary scale, like \"Earth\" and \"Your Mom.\"", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Places" }, "Destiny.Definitions.DestinyActivityTypeDefinition": { "description": "The definition for an Activity Type.\r\nIn Destiny 2, an Activity Type represents a conceptual categorization of Activities.\r\nThese are most commonly used in the game for the subtitle under Activities, but BNet uses them extensively to identify and group activities by their common properties.\r\nUnfortunately, there has been a movement away from providing the richer data in Destiny 2 that we used to get in Destiny 1 for Activity Types. For instance, Nightfalls are grouped under the same Activity Type as regular Strikes. \r\nFor this reason, BNet will eventually migrate toward Activity Modes as a better indicator of activity category. But for the time being, it is still referred to in many places across our codebase.", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "ActivityTypes" }, "Destiny.Definitions.Director.DestinyActivityGraphNodeStateEntry": { "description": "Represents a single state that a graph node might end up in. Depending on what's going on in the game, graph nodes could be shown in different ways or even excluded from view entirely.", "type": "object", "properties": { "state": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyGraphNodeState" } } } }, "Destiny.DestinyGraphNodeState": { "format": "int32", "description": "Represents a potential state of an Activity Graph node.", "enum": [ "0", "1", "2", "3", "4" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Hidden" }, { "numericValue": "1", "identifier": "Visible" }, { "numericValue": "2", "identifier": "Teaser" }, { "numericValue": "3", "identifier": "Incomplete" }, { "numericValue": "4", "identifier": "Completed" } ] }, "Destiny.Definitions.Director.DestinyActivityGraphArtElementDefinition": { "description": "These Art Elements are meant to represent one-off visual effects overlaid on the map. Currently, we do not have a pipeline to import the assets for these overlays, so this info exists as a placeholder for when such a pipeline exists (if it ever will)", "type": "object", "properties": { "position": { "description": "The position on the map of the art element.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyPositionDefinition" } ] } } }, "Destiny.Definitions.Director.DestinyActivityGraphConnectionDefinition": { "description": "Nodes on a graph can be visually connected: this appears to be the information about which nodes to link. It appears to lack more detailed information, such as the path for that linking.", "type": "object", "properties": { "sourceNodeHash": { "format": "uint32", "type": "integer" }, "destNodeHash": { "format": "uint32", "type": "integer" } } }, "Destiny.Definitions.Director.DestinyActivityGraphDisplayObjectiveDefinition": { "description": "When a Graph needs to show active Objectives, this defines those objectives as well as an identifier.", "type": "object", "properties": { "id": { "format": "uint32", "description": "$NOTE $amola 2017-01-19 This field is apparently something that CUI uses to manually wire up objectives to display info. I am unsure how it works.", "type": "integer" }, "objectiveHash": { "format": "uint32", "description": "The objective being shown on the map.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyObjectiveDefinition" } } } }, "Destiny.Definitions.Director.DestinyActivityGraphDisplayProgressionDefinition": { "description": "When a Graph needs to show active Progressions, this defines those objectives as well as an identifier.", "type": "object", "properties": { "id": { "format": "uint32", "type": "integer" }, "progressionHash": { "format": "uint32", "type": "integer" } } }, "Destiny.Definitions.Director.DestinyLinkedGraphDefinition": { "description": "This describes links between the current graph and others, as well as when that link is relevant.", "type": "object", "properties": { "description": { "type": "string" }, "name": { "type": "string" }, "unlockExpression": { "$ref": "#/definitions/Destiny.Definitions.DestinyUnlockExpressionDefinition" }, "linkedGraphId": { "format": "uint32", "type": "integer" }, "linkedGraphs": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Director.DestinyLinkedGraphEntryDefinition" } }, "overview": { "type": "string" } } }, "Destiny.Definitions.DestinyUnlockExpressionDefinition": { "description": "Where the sausage gets made. Unlock Expressions are the foundation of the game's gating mechanics and investment-related restrictions. They can test Unlock Flags and Unlock Values for certain states, using a sufficient amount of logical operators such that unlock expressions are effectively Turing complete.\r\nUse UnlockExpressionParser to evaluate expressions using an IUnlockContext parsed from Babel.", "type": "object", "properties": { "scope": { "format": "int32", "description": "A shortcut for determining the most restrictive gating that this expression performs. See the DestinyGatingScope enum's documentation for more details.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyGatingScope" } } } }, "Destiny.Definitions.Director.DestinyLinkedGraphEntryDefinition": { "type": "object", "properties": { "activityGraphHash": { "format": "uint32", "type": "integer" } } }, "Destiny.Definitions.DestinyDestinationBubbleSettingDefinition": { "description": "Human readable data about the bubble. Combine with DestinyBubbleDefinition - see DestinyDestinationDefinition.bubbleSettings for more information.\r\nDEPRECATED - Just use bubbles.", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } } }, "Destiny.Definitions.DestinyBubbleDefinition": { "description": "Basic identifying data about the bubble. Combine with DestinyDestinationBubbleSettingDefinition - see DestinyDestinationDefinition.bubbleSettings for more information.", "type": "object", "properties": { "hash": { "format": "uint32", "description": "The identifier for the bubble: only guaranteed to be unique within the Destination.", "type": "integer" }, "displayProperties": { "description": "The display properties of this bubble, so you don't have to look them up in a separate list anymore.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] } } }, "Destiny.Definitions.DestinyVendorGroupReference": { "type": "object", "properties": { "vendorGroupHash": { "format": "uint32", "description": "The DestinyVendorGroupDefinition to which this Vendor can belong.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorGroupDefinition" } } } }, "Destiny.Definitions.DestinyVendorGroupDefinition": { "description": "BNet attempts to group vendors into similar collections. These groups aren't technically game canonical, but they are helpful for filtering vendors or showing them organized into a clean view on a webpage or app.\r\nThese definitions represent the groups we've built. Unlike in Destiny 1, a Vendors' group may change dynamically as the game state changes: thus, you will want to check DestinyVendorComponent responses to find a vendor's currently active Group (if you care).\r\nUsing this will let you group your vendors in your UI in a similar manner to how we will do grouping in the Companion.", "type": "object", "properties": { "order": { "format": "int32", "description": "The recommended order in which to render the groups, Ascending order.", "type": "integer" }, "categoryName": { "description": "For now, a group just has a name.", "type": "string" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "VendorGroups" }, "Destiny.Definitions.DestinyFactionDefinition": { "description": "These definitions represent Factions in the game. Factions have ended up unilaterally being related to Vendors that represent them, but that need not necessarily be the case.\r\nA Faction is really just an entity that has a related progression for which a character can gain experience. In Destiny 1, Dead Orbit was an example of a Faction: there happens to be a Vendor that represents Dead Orbit (and indeed, DestinyVendorDefinition.factionHash defines to this relationship), but Dead Orbit could theoretically exist without the Vendor that provides rewards.", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "progressionHash": { "format": "uint32", "description": "The hash identifier for the DestinyProgressionDefinition that indicates the character's relationship with this faction in terms of experience and levels.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyProgressionDefinition" } }, "tokenValues": { "description": "The faction token item hashes, and their respective progression values.", "type": "object", "additionalProperties": { "format": "uint32", "type": "integer" } }, "rewardItemHash": { "format": "uint32", "description": "The faction reward item hash, usually an engram.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "rewardVendorHash": { "format": "uint32", "description": "The faction reward vendor hash, used for faction engram previews.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDefinition" } }, "vendors": { "description": "List of vendors that are associated with this faction. The last vendor that passes the unlock flag checks is the one that should be shown.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyFactionVendorDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Factions" }, "Destiny.Definitions.DestinyFactionVendorDefinition": { "description": "These definitions represent faction vendors at different points in the game.\r\nA single faction may contain multiple vendors, or the same vendor available at two different locations.", "type": "object", "properties": { "vendorHash": { "format": "uint32", "description": "The faction vendor hash.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDefinition" } }, "destinationHash": { "format": "uint32", "description": "The hash identifier for a Destination at which this vendor may be located. Each destination where a Vendor may exist will only ever have a single entry.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyDestinationDefinition" } }, "backgroundImagePath": { "description": "The relative path to the background image representing this Vendor at this location, for use in a banner.", "type": "string" } } }, "Destiny.Definitions.DestinySandboxPatternDefinition": { "type": "object", "properties": { "patternHash": { "format": "uint32", "type": "integer" }, "patternGlobalTagIdHash": { "format": "uint32", "type": "integer" }, "weaponContentGroupHash": { "format": "uint32", "type": "integer" }, "weaponTranslationGroupHash": { "format": "uint32", "type": "integer" }, "weaponTypeHash": { "format": "uint32", "type": "integer" }, "weaponType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyItemSubType" } }, "filters": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyArrangementRegionFilterDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "SandboxPatterns" }, "Destiny.Definitions.DestinyArrangementRegionFilterDefinition": { "type": "object", "properties": { "artArrangementRegionHash": { "format": "uint32", "type": "integer" }, "artArrangementRegionIndex": { "format": "int32", "type": "integer" }, "statHash": { "format": "uint32", "type": "integer" }, "arrangementIndexByStatValue": { "type": "object", "additionalProperties": { "format": "int32", "type": "integer" } } } }, "Destiny.Definitions.DestinyItemPreviewBlockDefinition": { "description": "Items like Sacks or Boxes can have items that it shows in-game when you view details that represent the items you can obtain if you use or acquire the item.\r\nThis defines those categories, and gives some insights into that data's source.", "type": "object", "properties": { "screenStyle": { "description": "A string that the game UI uses as a hint for which detail screen to show for the item. You, too, can leverage this for your own custom screen detail views. Note, however, that these are arbitrarily defined by designers: there's no guarantees of a fixed, known number of these - so fall back to something reasonable if you don't recognize it.", "type": "string" }, "previewVendorHash": { "format": "uint32", "description": "If the preview data is derived from a fake \"Preview\" Vendor, this will be the hash identifier for the DestinyVendorDefinition of that fake vendor.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDefinition" } }, "artifactHash": { "format": "uint32", "description": "If this item should show you Artifact information when you preview it, this is the hash identifier of the DestinyArtifactDefinition for the artifact whose data should be shown.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Artifacts.DestinyArtifactDefinition" } }, "previewActionString": { "description": "If the preview has an associated action (like \"Open\"), this will be the localized string for that action.", "type": "string" }, "derivedItemCategories": { "description": "This is a list of the items being previewed, categorized in the same way as they are in the preview UI.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Items.DestinyDerivedItemCategoryDefinition" } } } }, "Destiny.Definitions.Items.DestinyDerivedItemCategoryDefinition": { "description": "A shortcut for the fact that some items have a \"Preview Vendor\" - See DestinyInventoryItemDefinition.preview.previewVendorHash - that is intended to be used to show what items you can get as a result of acquiring or using this item.\r\nA common example of this in Destiny 1 was Eververse \"Boxes,\" which could have many possible items. This \"Preview Vendor\" is not a vendor you can actually see in the game, but it defines categories and sale items for all of the possible items you could get from the Box so that the game can show them to you. We summarize that info here so that you don't have to do that Vendor lookup and aggregation manually.", "type": "object", "properties": { "categoryDescription": { "description": "The localized string for the category title. This will be something describing the items you can get as a group, or your likelihood/the quantity you'll get.", "type": "string" }, "items": { "description": "This is the list of all of the items for this category and the basic properties we'll know about them.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Items.DestinyDerivedItemDefinition" } } } }, "Destiny.Definitions.Items.DestinyDerivedItemDefinition": { "description": "This is a reference to, and summary data for, a specific item that you can get as a result of Using or Acquiring some other Item (For example, this could be summary information for an Emote that you can get by opening an an Eververse Box) See DestinyDerivedItemCategoryDefinition for more information.", "type": "object", "properties": { "itemHash": { "format": "uint32", "description": "The hash for the DestinyInventoryItemDefinition of this derived item, if there is one. Sometimes we are given this information as a manual override, in which case there won't be an actual DestinyInventoryItemDefinition for what we display, but you can still show the strings from this object itself.", "type": "integer" }, "itemName": { "description": "The name of the derived item.", "type": "string" }, "itemDetail": { "description": "Additional details about the derived item, in addition to the description.", "type": "string" }, "itemDescription": { "description": "A brief description of the item.", "type": "string" }, "iconPath": { "description": "An icon for the item.", "type": "string" }, "vendorItemIndex": { "format": "int32", "description": "If the item was derived from a \"Preview Vendor\", this will be an index into the DestinyVendorDefinition's itemList property. Otherwise, -1.", "type": "integer" } } }, "Destiny.Definitions.Artifacts.DestinyArtifactDefinition": { "description": "Represents known info about a Destiny Artifact.\r\nWe cannot guarantee that artifact definitions will be immutable between seasons - in fact, we've been told that they will be replaced between seasons. But this definition is built both to minimize the amount of lookups for related data that have to occur, and is built in hope that, if this plan changes, we will be able to accommodate it more easily.", "type": "object", "properties": { "displayProperties": { "description": "Any basic display info we know about the Artifact. Currently sourced from a related inventory item, but the source of this data is subject to change.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "translationBlock": { "description": "Any Geometry/3D info we know about the Artifact. Currently sourced from a related inventory item's gearset information, but the source of this data is subject to change.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyItemTranslationBlockDefinition" } ] }, "tiers": { "description": "Any Tier/Rank data related to this artifact, listed in display order. Currently sourced from a Vendor, but this source is subject to change.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Artifacts.DestinyArtifactTierDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Artifacts" }, "Destiny.Definitions.Artifacts.DestinyArtifactTierDefinition": { "type": "object", "properties": { "tierHash": { "format": "uint32", "description": "An identifier, unique within the Artifact, for this specific tier.", "type": "integer" }, "displayTitle": { "description": "The human readable title of this tier, if any.", "type": "string" }, "progressRequirementMessage": { "description": "A string representing the localized minimum requirement text for this Tier, if any.", "type": "string" }, "items": { "description": "The items that can be earned within this tier.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Artifacts.DestinyArtifactTierItemDefinition" } }, "minimumUnlockPointsUsedRequirement": { "format": "int32", "description": "The minimum number of \"unlock points\" that you must have used before you can unlock items from this tier.", "type": "integer" } } }, "Destiny.Definitions.Artifacts.DestinyArtifactTierItemDefinition": { "type": "object", "properties": { "itemHash": { "format": "uint32", "description": "The identifier of the Plug Item unlocked by activating this item in the Artifact.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } } } }, "Destiny.Definitions.DestinyItemQualityBlockDefinition": { "description": "An item's \"Quality\" determines its calculated stats. The Level at which the item spawns is combined with its \"qualityLevel\" along with some additional calculations to determine the value of those stats.\r\nIn Destiny 2, most items don't have default item levels and quality, making this property less useful: these apparently are almost always determined by the complex mechanisms of the Reward system rather than statically. They are still provided here in case they are still useful for people. This also contains some information about Infusion.", "type": "object", "properties": { "itemLevels": { "description": "The \"base\" defined level of an item. This is a list because, in theory, each Expansion could define its own base level for an item.\r\nIn practice, not only was that never done in Destiny 1, but now this isn't even populated at all. When it's not populated, the level at which it spawns has to be inferred by Reward information, of which BNet receives an imperfect view and will only be reliable on instanced data as a result.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "qualityLevel": { "format": "int32", "description": "qualityLevel is used in combination with the item's level to calculate stats like Attack and Defense. It plays a role in that calculation, but not nearly as large as itemLevel does.", "type": "integer" }, "infusionCategoryName": { "description": "The string identifier for this item's \"infusability\", if any. \r\nItems that match the same infusionCategoryName are allowed to infuse with each other.\r\nDEPRECATED: Items can now have multiple infusion categories. Please use infusionCategoryHashes instead.", "type": "string" }, "infusionCategoryHash": { "format": "uint32", "description": "The hash identifier for the infusion. It does not map to a Definition entity.\r\nDEPRECATED: Items can now have multiple infusion categories. Please use infusionCategoryHashes instead.", "type": "integer" }, "infusionCategoryHashes": { "description": "If any one of these hashes matches any value in another item's infusionCategoryHashes, the two can infuse with each other.", "type": "array", "items": { "format": "uint32", "type": "integer" } }, "progressionLevelRequirementHash": { "format": "uint32", "description": "An item can refer to pre-set level requirements. They are defined in DestinyProgressionLevelRequirementDefinition, and you can use this hash to find the appropriate definition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Progression.DestinyProgressionLevelRequirementDefinition" } }, "currentVersion": { "format": "uint32", "description": "The latest version available for this item.", "type": "integer" }, "versions": { "description": "The list of versions available for this item.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyItemVersionDefinition" } }, "displayVersionWatermarkIcons": { "description": "Icon overlays to denote the item version and power cap status.", "type": "array", "items": { "type": "string" } } } }, "Destiny.Definitions.DestinyItemVersionDefinition": { "description": "The version definition currently just holds a reference to the power cap.", "type": "object", "properties": { "powerCapHash": { "format": "uint32", "description": "A reference to the power cap for this item version.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.PowerCaps.DestinyPowerCapDefinition" } } } }, "Destiny.Definitions.PowerCaps.DestinyPowerCapDefinition": { "description": "Defines a 'power cap' (limit) for gear items, based on the rarity tier and season of release.", "type": "object", "properties": { "powerCap": { "format": "int32", "description": "The raw value for a power cap.", "type": "integer" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "PowerCaps" }, "Destiny.Definitions.Progression.DestinyProgressionLevelRequirementDefinition": { "description": "These are pre-constructed collections of data that can be used to determine the Level Requirement for an item given a Progression to be tested (such as the Character's level).\r\nFor instance, say a character receives a new Auto Rifle, and that Auto Rifle's DestinyInventoryItemDefinition.quality.progressionLevelRequirementHash property is pointing at one of these DestinyProgressionLevelRequirementDefinitions. Let's pretend also that the progressionHash it is pointing at is the Character Level progression. In that situation, the character's level will be used to interpolate a value in the requirementCurve property. The value picked up from that interpolation will be the required level for the item.", "type": "object", "properties": { "requirementCurve": { "description": "A curve of level requirements, weighted by the related progressions' level.\r\nInterpolate against this curve with the character's progression level to determine what the level requirement of the generated item that is using this data will be.", "type": "array", "items": { "$ref": "#/definitions/Interpolation.InterpolationPointFloat" } }, "progressionHash": { "format": "uint32", "description": "The progression whose level should be used to determine the level requirement.\r\nLook up the DestinyProgressionDefinition with this hash for more information about the progression in question.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyProgressionDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "ProgressionLevelRequirements" }, "Interpolation.InterpolationPointFloat": { "type": "object", "properties": { "value": { "format": "float", "type": "number" }, "weight": { "format": "float", "type": "number" } } }, "Destiny.Definitions.DestinyItemValueBlockDefinition": { "description": "This defines an item's \"Value\". Unfortunately, this appears to be used in different ways depending on the way that the item itself is used.\r\nFor items being sold at a Vendor, this is the default \"sale price\" of the item. These days, the vendor itself almost always sets the price, but it still possible for the price to fall back to this value. For quests, it is a preview of rewards you can gain by completing the quest. For dummy items, if the itemValue refers to an Emblem, it is the emblem that should be shown as the reward. (jeez louise)\r\nIt will likely be used in a number of other ways in the future, it appears to be a bucket where they put arbitrary items and quantities into the item.", "type": "object", "properties": { "itemValue": { "description": "References to the items that make up this item's \"value\", and the quantity.", "type": "array", "items": { "$ref": "#/definitions/Destiny.DestinyItemQuantity" } }, "valueDescription": { "description": "If there's a localized text description of the value provided, this will be said description.", "type": "string" } } }, "Destiny.Definitions.DestinyItemSourceBlockDefinition": { "description": "Data about an item's \"sources\": ways that the item can be obtained.", "type": "object", "properties": { "sourceHashes": { "description": "The list of hash identifiers for Reward Sources that hint where the item can be found (DestinyRewardSourceDefinition).", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyRewardSourceDefinition" } }, "sources": { "description": "A collection of details about the stats that were computed for the ways we found that the item could be spawned.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Sources.DestinyItemSourceDefinition" } }, "exclusive": { "format": "int32", "description": "If we found that this item is exclusive to a specific platform, this will be set to the BungieMembershipType enumeration that matches that platform.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } }, "vendorSources": { "description": "A denormalized reference back to vendors that potentially sell this item.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyItemVendorSourceReference" } } } }, "Destiny.Definitions.Sources.DestinyItemSourceDefinition": { "description": "Properties of a DestinyInventoryItemDefinition that store all of the information we were able to discern about how the item spawns, and where you can find the item.\r\nItems will have many of these sources, one per level at which it spawns, to try and give more granular data about where items spawn for specific level ranges.", "type": "object", "properties": { "level": { "format": "int32", "description": "The level at which the item spawns. Essentially the Primary Key for this source data: there will be multiple of these source entries per item that has source data, grouped by the level at which the item spawns.", "type": "integer" }, "minQuality": { "format": "int32", "description": "The minimum Quality at which the item spawns for this level. Examine DestinyInventoryItemDefinition for more information about what Quality means. Just don't ask Phaedrus about it, he'll never stop talking and you'll have to write a book about it.", "type": "integer" }, "maxQuality": { "format": "int32", "description": "The maximum quality at which the item spawns for this level.", "type": "integer" }, "minLevelRequired": { "format": "int32", "description": "The minimum Character Level required for equipping the item when the item spawns at the item level defined on this DestinyItemSourceDefinition, as far as we saw in our processing.", "type": "integer" }, "maxLevelRequired": { "format": "int32", "description": "The maximum Character Level required for equipping the item when the item spawns at the item level defined on this DestinyItemSourceDefinition, as far as we saw in our processing.", "type": "integer" }, "computedStats": { "description": "The stats computed for this level/quality range.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemStatDefinition" } }, "sourceHashes": { "description": "The DestinyRewardSourceDefinitions found that can spawn the item at this level.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyRewardSourceDefinition" } } } }, "Destiny.Definitions.DestinyRewardSourceDefinition": { "description": "Represents a heuristically-determined \"item source\" according to Bungie.net. These item sources are non-canonical: we apply a combination of special configuration and often-fragile heuristics to attempt to discern whether an item should be part of a given \"source,\" but we have known cases of false positives and negatives due to our imperfect heuristics.\r\nStill, they provide a decent approximation for people trying to figure out how an item can be obtained. DestinyInventoryItemDefinition refers to sources in the sourceDatas.sourceHashes property for all sources we determined the item could spawn from.\r\nAn example in Destiny 1 of a Source would be \"Nightfall\". If an item has the \"Nightfall\" source associated with it, it's extremely likely that you can earn that item while playing Nightfall, either during play or as an after-completion reward.", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "category": { "format": "int32", "description": "Sources are grouped into categories: common ways that items are provided. I hope to see this expand in Destiny 2 once we have time to generate accurate reward source data.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.Definitions.DestinyRewardSourceCategory" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "RewardSources" }, "Destiny.Definitions.DestinyRewardSourceCategory": { "format": "int32", "description": "BNet's custom categorization of reward sources. We took a look at the existing ways that items could be spawned, and tried to make high-level categorizations of them. This needs to be re-evaluated for Destiny 2.", "enum": [ "0", "1", "2", "3" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None", "description": "The source doesn't fit well into any of the other types." }, { "numericValue": "1", "identifier": "Activity", "description": "The source is directly related to the rewards gained by playing an activity or set of activities. This currently includes Quests and other action in-game." }, { "numericValue": "2", "identifier": "Vendor", "description": "This source is directly related to items that Vendors sell." }, { "numericValue": "3", "identifier": "Aggregate", "description": "This source is a custom aggregation of items that can be earned in many ways, but that share some other property in common that is useful to share. For instance, in Destiny 1 we would make \"Reward Sources\" for every game expansion: that way, you could search reward sources to see what items became available with any given Expansion." } ] }, "Destiny.Definitions.DestinyItemVendorSourceReference": { "description": "Represents that a vendor could sell this item, and provides a quick link to that vendor and sale item.\r\n Note that we do not and cannot make a guarantee that the vendor will ever *actually* sell this item, only that the Vendor has a definition that indicates it *could* be sold.\r\n Note also that a vendor may sell the same item in multiple \"ways\", which means there may be multiple vendorItemIndexes for a single Vendor hash.", "type": "object", "properties": { "vendorHash": { "format": "uint32", "description": "The identifier for the vendor that may sell this item.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDefinition" } }, "vendorItemIndexes": { "description": "The Vendor sale item indexes that represent the sale information for this item. The same vendor may sell an item in multiple \"ways\", hence why this is a list. (for instance, a weapon may be \"sold\" as a reward in a quest, for Glimmer, and for Masterwork Cores: each of those ways would be represented by a different vendor sale item with a different index)", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "Destiny.Definitions.DestinyItemObjectiveBlockDefinition": { "description": "An item can have objectives on it. In practice, these are the exclusive purview of \"Quest Step\" items: DestinyInventoryItemDefinitions that represent a specific step in a Quest.\r\nQuest steps have 1:M objectives that we end up processing and returning in live data as DestinyQuestStatus data, and other useful information.", "type": "object", "properties": { "objectiveHashes": { "description": "The hashes to Objectives (DestinyObjectiveDefinition) that are part of this Quest Step, in the order that they should be rendered.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyObjectiveDefinition" } }, "displayActivityHashes": { "description": "For every entry in objectiveHashes, there is a corresponding entry in this array at the same index. If the objective is meant to be associated with a specific DestinyActivityDefinition, there will be a valid hash at that index. Otherwise, it will be invalid (0).\r\nRendered somewhat obsolete by perObjectiveDisplayProperties, which currently has much the same information but may end up with more info in the future.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "requireFullObjectiveCompletion": { "description": "If True, all objectives must be completed for the step to be completed. If False, any one objective can be completed for the step to be completed.", "type": "boolean" }, "questlineItemHash": { "format": "uint32", "description": "The hash for the DestinyInventoryItemDefinition representing the Quest to which this Quest Step belongs.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "narrative": { "description": "The localized string for narrative text related to this quest step, if any.", "type": "string" }, "objectiveVerbName": { "description": "The localized string describing an action to be performed associated with the objectives, if any.", "type": "string" }, "questTypeIdentifier": { "description": "The identifier for the type of quest being performed, if any. Not associated with any fixed definition, yet.", "type": "string" }, "questTypeHash": { "format": "uint32", "description": "A hashed value for the questTypeIdentifier, because apparently I like to be redundant.", "type": "integer" }, "perObjectiveDisplayProperties": { "description": "One entry per Objective on the item, it will have related display information.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyObjectiveDisplayProperties" } }, "displayAsStatTracker": { "type": "boolean" } } }, "Destiny.Definitions.DestinyObjectiveDisplayProperties": { "type": "object", "properties": { "activityHash": { "format": "uint32", "description": "The activity associated with this objective in the context of this item, if any.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "displayOnItemPreviewScreen": { "description": "If true, the game shows this objective on item preview screens.", "type": "boolean" } } }, "Destiny.Definitions.DestinyItemMetricBlockDefinition": { "description": "The metrics available for display and selection on an item.", "type": "object", "properties": { "availableMetricCategoryNodeHashes": { "description": "Hash identifiers for any DestinyPresentationNodeDefinition entry that can be used to list available metrics. Any metric listed directly below these nodes, or in any of these nodes' children will be made available for selection.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } } } }, "Destiny.Definitions.Presentation.DestinyPresentationNodeBaseDefinition": { "description": "This is the base class for all presentation system children. Presentation Nodes, Records, Collectibles, and Metrics.", "type": "object", "properties": { "presentationNodeType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyPresentationNodeType" } }, "traitIds": { "type": "array", "items": { "type": "string" } }, "traitHashes": { "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Traits.DestinyTraitDefinition" } }, "parentNodeHashes": { "description": "A quick reference to presentation nodes that have this node as a child. Presentation nodes can be parented under multiple parents.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } } }, "Destiny.DestinyPresentationNodeType": { "format": "int32", "enum": [ "0", "1", "2", "3", "4", "5" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Default" }, { "numericValue": "1", "identifier": "Category" }, { "numericValue": "2", "identifier": "Collectibles" }, { "numericValue": "3", "identifier": "Records" }, { "numericValue": "4", "identifier": "Metric" }, { "numericValue": "5", "identifier": "Craftable" } ] }, "Destiny.Definitions.Traits.DestinyTraitDefinition": { "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "displayHint": { "description": "An identifier for how this trait can be displayed. For example: a 'keyword' hint to show an explanation for certain related terms.", "type": "string" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Traits" }, "Destiny.Definitions.Presentation.DestinyScoredPresentationNodeBaseDefinition": { "type": "object", "properties": { "maxCategoryRecordScore": { "format": "int32", "type": "integer" }, "presentationNodeType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyPresentationNodeType" } }, "traitIds": { "type": "array", "items": { "type": "string" } }, "traitHashes": { "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Traits.DestinyTraitDefinition" } }, "parentNodeHashes": { "description": "A quick reference to presentation nodes that have this node as a child. Presentation nodes can be parented under multiple parents.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } } }, "Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition": { "description": "A PresentationNode is an entity that represents a logical grouping of other entities visually/organizationally.\r\nFor now, Presentation Nodes may contain the following... but it may be used for more in the future:\r\n- Collectibles - Records (Or, as the public will call them, \"Triumphs.\" Don't ask me why we're overloading the term \"Triumph\", it still hurts me to think about it) - Metrics (aka Stat Trackers) - Other Presentation Nodes, allowing a tree of Presentation Nodes to be created\r\nPart of me wants to break these into conceptual definitions per entity being collected, but the possibility of these different types being mixed in the same UI and the possibility that it could actually be more useful to return the \"bare metal\" presentation node concept has resulted in me deciding against that for the time being.\r\nWe'll see if I come to regret this as well.", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "originalIcon": { "description": "The original icon for this presentation node, before we futzed with it.", "type": "string" }, "rootViewIcon": { "description": "Some presentation nodes are meant to be explicitly shown on the \"root\" or \"entry\" screens for the feature to which they are related. You should use this icon when showing them on such a view, if you have a similar \"entry point\" view in your UI. If you don't have a UI, then I guess it doesn't matter either way does it?", "type": "string" }, "nodeType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyPresentationNodeType" } }, "scope": { "format": "int32", "description": "Indicates whether this presentation node's state is determined on a per-character or on an account-wide basis.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyScope" } }, "objectiveHash": { "format": "uint32", "description": "If this presentation node shows a related objective (for instance, if it tracks the progress of its children), the objective being tracked is indicated here.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyObjectiveDefinition" } }, "completionRecordHash": { "format": "uint32", "description": "If this presentation node has an associated \"Record\" that you can accomplish for completing its children, this is the identifier of that Record.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Records.DestinyRecordDefinition" } }, "children": { "description": "The child entities contained by this presentation node.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeChildrenBlock" } ] }, "displayStyle": { "format": "int32", "description": "A hint for how to display this presentation node when it's shown in a list.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyPresentationDisplayStyle" } }, "screenStyle": { "format": "int32", "description": "A hint for how to display this presentation node when it's shown in its own detail screen.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyPresentationScreenStyle" } }, "requirements": { "description": "The requirements for being able to interact with this presentation node and its children.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeRequirementsBlock" } ] }, "disableChildSubscreenNavigation": { "description": "If this presentation node has children, but the game doesn't let you inspect the details of those children, that is indicated here.", "type": "boolean" }, "maxCategoryRecordScore": { "format": "int32", "type": "integer" }, "presentationNodeType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyPresentationNodeType" } }, "traitIds": { "type": "array", "items": { "type": "string" } }, "traitHashes": { "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Traits.DestinyTraitDefinition" } }, "parentNodeHashes": { "description": "A quick reference to presentation nodes that have this node as a child. Presentation nodes can be parented under multiple parents.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "PresentationNodes" }, "Destiny.DestinyScope": { "format": "int32", "description": "There's a lot of places where we need to know scope on more than just a profile or character level. For everything else, there's this more generic sense of scope.", "enum": [ "0", "1" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Profile" }, { "numericValue": "1", "identifier": "Character" } ] }, "Destiny.Definitions.Presentation.DestinyPresentationNodeChildrenBlock": { "description": "As/if presentation nodes begin to host more entities as children, these lists will be added to. One list property exists per type of entity that can be treated as a child of this presentation node, and each holds the identifier of the entity and any associated information needed to display the UI for that entity (if anything)", "type": "object", "properties": { "presentationNodes": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeChildEntry" } }, "collectibles": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeCollectibleChildEntry" } }, "records": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeRecordChildEntry" } }, "metrics": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeMetricChildEntry" } }, "craftables": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeCraftableChildEntry" } } } }, "Destiny.Definitions.Presentation.DestinyPresentationNodeChildEntryBase": { "type": "object", "properties": { "nodeDisplayPriority": { "format": "uint32", "description": "Use this value to sort the presentation node children in ascending order.", "type": "integer" } } }, "Destiny.Definitions.Presentation.DestinyPresentationNodeChildEntry": { "type": "object", "properties": { "presentationNodeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "nodeDisplayPriority": { "format": "uint32", "description": "Use this value to sort the presentation node children in ascending order.", "type": "integer" } } }, "Destiny.Definitions.Presentation.DestinyPresentationNodeCollectibleChildEntry": { "type": "object", "properties": { "collectibleHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Collectibles.DestinyCollectibleDefinition" } }, "nodeDisplayPriority": { "format": "uint32", "description": "Use this value to sort the presentation node children in ascending order.", "type": "integer" } } }, "Destiny.Definitions.Collectibles.DestinyCollectibleDefinition": { "description": "Defines a", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "scope": { "format": "int32", "description": "Indicates whether the state of this Collectible is determined on a per-character or on an account-wide basis.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyScope" } }, "sourceString": { "description": "A human readable string for a hint about how to acquire the item.", "type": "string" }, "sourceHash": { "format": "uint32", "description": "This is a hash identifier we are building on the BNet side in an attempt to let people group collectibles by similar sources.\r\nI can't promise that it's going to be 100% accurate, but if the designers were consistent in assigning the same source strings to items with the same sources, it *ought to* be. No promises though.\r\nThis hash also doesn't relate to an actual definition, just to note: we've got nothing useful other than the source string for this data.", "type": "integer" }, "itemHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "acquisitionInfo": { "$ref": "#/definitions/Destiny.Definitions.Collectibles.DestinyCollectibleAcquisitionBlock" }, "stateInfo": { "$ref": "#/definitions/Destiny.Definitions.Collectibles.DestinyCollectibleStateBlock" }, "presentationInfo": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationChildBlock" }, "presentationNodeType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyPresentationNodeType" } }, "traitIds": { "type": "array", "items": { "type": "string" } }, "traitHashes": { "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Traits.DestinyTraitDefinition" } }, "parentNodeHashes": { "description": "A quick reference to presentation nodes that have this node as a child. Presentation nodes can be parented under multiple parents.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Collectibles" }, "Destiny.Definitions.Collectibles.DestinyCollectibleAcquisitionBlock": { "type": "object", "properties": { "acquireMaterialRequirementHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyMaterialRequirementSetDefinition" } }, "acquireTimestampUnlockValueHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyUnlockValueDefinition" } } } }, "Destiny.Definitions.DestinyUnlockValueDefinition": { "description": "An Unlock Value is an internal integer value, stored on the server and used in a variety of ways, most frequently for the gating/requirement checks that the game performs across all of its main features. They can also be used as the storage data for mapped Progressions, Objectives, and other features that require storage of variable numeric values.", "type": "object", "properties": { "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } } }, "Destiny.Definitions.Collectibles.DestinyCollectibleStateBlock": { "type": "object", "properties": { "obscuredOverrideItemHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "requirements": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeRequirementsBlock" } } }, "Destiny.Definitions.Presentation.DestinyPresentationNodeRequirementsBlock": { "description": "Presentation nodes can be restricted by various requirements. This defines the rules of those requirements, and the message(s) to be shown if these requirements aren't met.", "type": "object", "properties": { "entitlementUnavailableMessage": { "description": "If this node is not accessible due to Entitlements (for instance, you don't own the required game expansion), this is the message to show.", "type": "string" } } }, "Destiny.Definitions.Presentation.DestinyPresentationChildBlock": { "type": "object", "properties": { "presentationNodeType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyPresentationNodeType" } }, "parentPresentationNodeHashes": { "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "displayStyle": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyPresentationDisplayStyle" } } } }, "Destiny.DestinyPresentationDisplayStyle": { "format": "int32", "description": "A hint for how the presentation node should be displayed when shown in a list. How you use this is your UI is up to you.", "enum": [ "0", "1", "2", "3", "4", "5", "6" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Category", "description": "Display the item as a category, through which sub-items are filtered." }, { "numericValue": "1", "identifier": "Badge" }, { "numericValue": "2", "identifier": "Medals" }, { "numericValue": "3", "identifier": "Collectible" }, { "numericValue": "4", "identifier": "Record" }, { "numericValue": "5", "identifier": "SeasonalTriumph" }, { "numericValue": "6", "identifier": "GuardianRank" } ] }, "Destiny.Definitions.Presentation.DestinyPresentationNodeRecordChildEntry": { "type": "object", "properties": { "recordHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Records.DestinyRecordDefinition" } }, "nodeDisplayPriority": { "format": "uint32", "description": "Use this value to sort the presentation node children in ascending order.", "type": "integer" } } }, "Destiny.Definitions.Records.DestinyRecordDefinition": { "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "scope": { "format": "int32", "description": "Indicates whether this Record's state is determined on a per-character or on an account-wide basis.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyScope" } }, "presentationInfo": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationChildBlock" }, "loreHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Lore.DestinyLoreDefinition" } }, "objectiveHashes": { "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyObjectiveDefinition" } }, "recordValueStyle": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyRecordValueStyle" } }, "forTitleGilding": { "type": "boolean" }, "shouldShowLargeIcons": { "description": "A hint to show a large icon for a reward", "type": "boolean" }, "titleInfo": { "$ref": "#/definitions/Destiny.Definitions.Records.DestinyRecordTitleBlock" }, "completionInfo": { "$ref": "#/definitions/Destiny.Definitions.Records.DestinyRecordCompletionBlock" }, "stateInfo": { "$ref": "#/definitions/Destiny.Definitions.Records.SchemaRecordStateBlock" }, "requirements": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeRequirementsBlock" }, "expirationInfo": { "$ref": "#/definitions/Destiny.Definitions.Records.DestinyRecordExpirationBlock" }, "intervalInfo": { "description": "Some records have multiple 'interval' objectives, and the record may be claimed at each completed interval", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Records.DestinyRecordIntervalBlock" } ] }, "rewardItems": { "description": "If there is any publicly available information about rewards earned for achieving this record, this is the list of those items.\r\n However, note that some records intentionally have \"hidden\" rewards. These will not be returned in this list.", "type": "array", "items": { "$ref": "#/definitions/Destiny.DestinyItemQuantity" } }, "presentationNodeType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyPresentationNodeType" } }, "traitIds": { "type": "array", "items": { "type": "string" } }, "traitHashes": { "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Traits.DestinyTraitDefinition" } }, "parentNodeHashes": { "description": "A quick reference to presentation nodes that have this node as a child. Presentation nodes can be parented under multiple parents.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Records" }, "Destiny.DestinyRecordValueStyle": { "format": "int32", "enum": [ "0", "1", "2", "3", "4" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Integer" }, { "numericValue": "1", "identifier": "Percentage" }, { "numericValue": "2", "identifier": "Milliseconds" }, { "numericValue": "3", "identifier": "Boolean" }, { "numericValue": "4", "identifier": "Decimal" } ] }, "Destiny.Definitions.Records.DestinyRecordTitleBlock": { "type": "object", "properties": { "hasTitle": { "type": "boolean" }, "titlesByGender": { "type": "object", "additionalProperties": { "type": "string" } }, "titlesByGenderHash": { "description": "For those who prefer to use the definitions.", "type": "object", "additionalProperties": { "type": "string" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyGenderDefinition" } }, "gildingTrackingRecordHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Records.DestinyRecordDefinition" } } } }, "Destiny.Definitions.Records.DestinyRecordCompletionBlock": { "type": "object", "properties": { "partialCompletionObjectiveCountThreshold": { "format": "int32", "description": "The number of objectives that must be completed before the objective is considered \"complete\"", "type": "integer" }, "ScoreValue": { "format": "int32", "type": "integer" }, "shouldFireToast": { "type": "boolean" }, "toastStyle": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyRecordToastStyle" } } } }, "Destiny.DestinyRecordToastStyle": { "format": "int32", "enum": [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Record" }, { "numericValue": "2", "identifier": "Lore" }, { "numericValue": "3", "identifier": "Badge" }, { "numericValue": "4", "identifier": "MetaRecord" }, { "numericValue": "5", "identifier": "MedalComplete" }, { "numericValue": "6", "identifier": "SeasonChallengeComplete" }, { "numericValue": "7", "identifier": "GildedTitleComplete" }, { "numericValue": "8", "identifier": "CraftingRecipeUnlocked" }, { "numericValue": "9", "identifier": "ToastGuardianRankDetails" } ] }, "Destiny.Definitions.Records.SchemaRecordStateBlock": { "type": "object", "properties": { "featuredPriority": { "format": "int32", "type": "integer" }, "obscuredString": { "type": "string" } } }, "Destiny.Definitions.Records.DestinyRecordExpirationBlock": { "description": "If this record has an expiration after which it cannot be earned, this is some information about that expiration.", "type": "object", "properties": { "hasExpiration": { "type": "boolean" }, "description": { "type": "string" }, "icon": { "type": "string" } } }, "Destiny.Definitions.Records.DestinyRecordIntervalBlock": { "type": "object", "properties": { "intervalObjectives": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Records.DestinyRecordIntervalObjective" } }, "intervalRewards": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Records.DestinyRecordIntervalRewards" } }, "originalObjectiveArrayInsertionIndex": { "format": "int32", "type": "integer" } } }, "Destiny.Definitions.Records.DestinyRecordIntervalObjective": { "type": "object", "properties": { "intervalObjectiveHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyObjectiveDefinition" } }, "intervalScoreValue": { "format": "int32", "type": "integer" } } }, "Destiny.Definitions.Records.DestinyRecordIntervalRewards": { "type": "object", "properties": { "intervalRewardItems": { "type": "array", "items": { "$ref": "#/definitions/Destiny.DestinyItemQuantity" } } } }, "Destiny.Definitions.Lore.DestinyLoreDefinition": { "description": "These are definitions for in-game \"Lore,\" meant to be narrative enhancements of the game experience.\r\nDestinyInventoryItemDefinitions for interesting items point to these definitions, but nothing's stopping you from scraping all of these and doing something cool with them. If they end up having cool data.", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "subtitle": { "type": "string" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Lore" }, "Destiny.Definitions.Presentation.DestinyPresentationNodeMetricChildEntry": { "type": "object", "properties": { "metricHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Metrics.DestinyMetricDefinition" } }, "nodeDisplayPriority": { "format": "uint32", "description": "Use this value to sort the presentation node children in ascending order.", "type": "integer" } } }, "Destiny.Definitions.Metrics.DestinyMetricDefinition": { "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "trackingObjectiveHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyObjectiveDefinition" } }, "lowerValueIsBetter": { "type": "boolean" }, "presentationNodeType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyPresentationNodeType" } }, "traitIds": { "type": "array", "items": { "type": "string" } }, "traitHashes": { "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Traits.DestinyTraitDefinition" } }, "parentNodeHashes": { "description": "A quick reference to presentation nodes that have this node as a child. Presentation nodes can be parented under multiple parents.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Metrics" }, "Destiny.Definitions.Presentation.DestinyPresentationNodeCraftableChildEntry": { "type": "object", "properties": { "craftableItemHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "nodeDisplayPriority": { "format": "uint32", "description": "Use this value to sort the presentation node children in ascending order.", "type": "integer" } } }, "Destiny.DestinyPresentationScreenStyle": { "format": "int32", "description": "A hint for what screen should be shown when this presentation node is clicked into. How you use this is your UI is up to you.", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Default", "description": "Use the \"default\" view for the presentation nodes." }, { "numericValue": "1", "identifier": "CategorySets", "description": "Show sub-items as \"category sets\". In-game, you'd see these as a vertical list of child presentation nodes - armor sets for example - and the icons of items within those sets displayed horizontally." }, { "numericValue": "2", "identifier": "Badge", "description": "Show sub-items as Badges. (I know, I know. We don't need no stinkin' badges har har har)" } ] }, "Destiny.Definitions.Items.DestinyItemPlugDefinition": { "description": "If an item is a Plug, its DestinyInventoryItemDefinition.plug property will be populated with an instance of one of these bad boys.\r\nThis gives information about when it can be inserted, what the plug's category is (and thus whether it is compatible with a socket... see DestinySocketTypeDefinition for information about Plug Categories and socket compatibility), whether it is enabled and other Plug info.", "type": "object", "properties": { "insertionRules": { "description": "The rules around when this plug can be inserted into a socket, aside from the socket's individual restrictions.\r\nThe live data DestinyItemPlugComponent.insertFailIndexes will be an index into this array, so you can pull out the failure strings appropriate for the user.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Items.DestinyPlugRuleDefinition" } }, "plugCategoryIdentifier": { "description": "The string identifier for the plug's category. Use the socket's DestinySocketTypeDefinition.plugWhitelist to determine whether this plug can be inserted into the socket.", "type": "string" }, "plugCategoryHash": { "format": "uint32", "description": "The hash for the plugCategoryIdentifier. You can use this instead if you wish: I put both in the definition for debugging purposes.", "type": "integer" }, "onActionRecreateSelf": { "description": "If you successfully socket the item, this will determine whether or not you get \"refunded\" on the plug.", "type": "boolean" }, "insertionMaterialRequirementHash": { "format": "uint32", "description": "If inserting this plug requires materials, this is the hash identifier for looking up the DestinyMaterialRequirementSetDefinition for those requirements.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyMaterialRequirementSetDefinition" } }, "previewItemOverrideHash": { "format": "uint32", "description": "In the game, if you're inspecting a plug item directly, this will be the item shown with the plug attached. Look up the DestinyInventoryItemDefinition for this hash for the item.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "enabledMaterialRequirementHash": { "format": "uint32", "description": "It's not enough for the plug to be inserted. It has to be enabled as well. For it to be enabled, it may require materials. This is the hash identifier for the DestinyMaterialRequirementSetDefinition for those requirements, if there is one.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyMaterialRequirementSetDefinition" } }, "enabledRules": { "description": "The rules around whether the plug, once inserted, is enabled and providing its benefits.\r\nThe live data DestinyItemPlugComponent.enableFailIndexes will be an index into this array, so you can pull out the failure strings appropriate for the user.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Items.DestinyPlugRuleDefinition" } }, "uiPlugLabel": { "description": "Plugs can have arbitrary, UI-defined identifiers that the UI designers use to determine the style applied to plugs. Unfortunately, we have neither a definitive list of these labels nor advance warning of when new labels might be applied or how that relates to how they get rendered. If you want to, you can refer to known labels to change your own styles: but know that new ones can be created arbitrarily, and we have no way of associating the labels with any specific UI style guidance... you'll have to piece that together on your end. Or do what we do, and just show plugs more generically, without specialized styles.", "type": "string" }, "plugStyle": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.PlugUiStyles" } }, "plugAvailability": { "format": "int32", "description": "Indicates the rules about when this plug can be used. See the PlugAvailabilityMode enumeration for more information!", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.PlugAvailabilityMode" } }, "alternateUiPlugLabel": { "description": "If the plug meets certain state requirements, it may have an alternative label applied to it. This is the alternative label that will be applied in such a situation.", "type": "string" }, "alternatePlugStyle": { "format": "int32", "description": "The alternate plug of the plug: only applies when the item is in states that only the server can know about and control, unfortunately. See AlternateUiPlugLabel for the related label info.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.PlugUiStyles" } }, "isDummyPlug": { "description": "If TRUE, this plug is used for UI display purposes only, and doesn't have any interesting effects of its own.", "type": "boolean" }, "parentItemOverride": { "description": "Do you ever get the feeling that a system has become so overburdened by edge cases that it probably should have become some other system entirely? So do I!\r\nIn totally unrelated news, Plugs can now override properties of their parent items. This is some of the relevant definition data for those overrides.\r\nIf this is populated, it will have the override data to be applied when this plug is applied to an item.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Items.DestinyParentItemOverride" } ] }, "energyCapacity": { "description": "IF not null, this plug provides Energy capacity to the item in which it is socketed. In Armor 2.0 for example, is implemented in a similar way to Masterworks, where visually it's a single area of the UI being clicked on to \"Upgrade\" to higher energy levels, but it's actually socketing new plugs.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Items.DestinyEnergyCapacityEntry" } ] }, "energyCost": { "description": "IF not null, this plug has an energy cost. This contains the details of that cost.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Items.DestinyEnergyCostEntry" } ] } } }, "Destiny.Definitions.Items.DestinyPlugRuleDefinition": { "description": "Dictates a rule around whether the plug is enabled or insertable.\r\nIn practice, the live Destiny data will refer to these entries by index. You can then look up that index in the appropriate property (enabledRules or insertionRules) to get the localized string for the failure message if it failed.", "type": "object", "properties": { "failureMessage": { "description": "The localized string to show if this rule fails.", "type": "string" } } }, "Destiny.PlugUiStyles": { "format": "int32", "description": "If the plug has a specific custom style, this enumeration will represent that style/those styles.", "enum": [ "0", "1" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Masterwork" } ] }, "Destiny.PlugAvailabilityMode": { "format": "int32", "description": "This enum determines whether the plug is available to be inserted.\r\n- Normal means that all existing rules for plug insertion apply.\r\n- UnavailableIfSocketContainsMatchingPlugCategory means that the plug is only available if the socket does NOT match the plug category.\r\n- AvailableIfSocketContainsMatchingPlugCategory means that the plug is only available if the socket DOES match the plug category.\r\nFor category matching, use the plug's \"plugCategoryIdentifier\" property, comparing it to", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Normal" }, { "numericValue": "1", "identifier": "UnavailableIfSocketContainsMatchingPlugCategory" }, { "numericValue": "2", "identifier": "AvailableIfSocketContainsMatchingPlugCategory" } ] }, "Destiny.Definitions.Items.DestinyParentItemOverride": { "type": "object", "properties": { "additionalEquipRequirementsDisplayStrings": { "type": "array", "items": { "type": "string" } }, "pipIcon": { "type": "string" } } }, "Destiny.Definitions.Items.DestinyEnergyCapacityEntry": { "description": "Items can have Energy Capacity, and plugs can provide that capacity such as on a piece of Armor in Armor 2.0. This is how much \"Energy\" can be spent on activating plugs for this item.", "type": "object", "properties": { "capacityValue": { "format": "int32", "description": "How much energy capacity this plug provides.", "type": "integer" }, "energyTypeHash": { "format": "uint32", "description": "Energy provided by a plug is always of a specific type - this is the hash identifier for the energy type for which it provides Capacity.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.EnergyTypes.DestinyEnergyTypeDefinition" } }, "energyType": { "format": "int32", "description": "The Energy Type for this energy capacity, in enum form for easy use.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyEnergyType" } } } }, "Destiny.DestinyEnergyType": { "format": "int32", "description": "Represents the socket energy types for Armor 2.0, Ghosts 2.0, and Stasis subclasses.", "enum": [ "0", "1", "2", "3", "4", "5", "6" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Any" }, { "numericValue": "1", "identifier": "Arc" }, { "numericValue": "2", "identifier": "Thermal" }, { "numericValue": "3", "identifier": "Void" }, { "numericValue": "4", "identifier": "Ghost" }, { "numericValue": "5", "identifier": "Subclass" }, { "numericValue": "6", "identifier": "Stasis" } ] }, "Destiny.Definitions.EnergyTypes.DestinyEnergyTypeDefinition": { "description": "Represents types of Energy that can be used for costs and payments related to Armor 2.0 mods.", "type": "object", "properties": { "displayProperties": { "description": "The description of the energy type, icon etc...", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "transparentIconPath": { "description": "A variant of the icon that is transparent and colorless.", "type": "string" }, "showIcon": { "description": "If TRUE, the game shows this Energy type's icon. Otherwise, it doesn't. Whether you show it or not is up to you.", "type": "boolean" }, "enumValue": { "format": "int32", "description": "We have an enumeration for Energy types for quick reference. This is the current definition's Energy type enum value.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyEnergyType" } }, "capacityStatHash": { "format": "uint32", "description": "If this Energy Type can be used for determining the Type of Energy that an item can consume, this is the hash for the DestinyInvestmentStatDefinition that represents the stat which holds the Capacity for that energy type. (Note that this is optional because \"Any\" is a valid cost, but not valid for Capacity - an Armor must have a specific Energy Type for determining the energy type that the Armor is restricted to use)", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyStatDefinition" } }, "costStatHash": { "format": "uint32", "description": "If this Energy Type can be used as a cost to pay for socketing Armor 2.0 items, this is the hash for the DestinyInvestmentStatDefinition that stores the plug's raw cost.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyStatDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "EnergyTypes" }, "Destiny.Definitions.Items.DestinyEnergyCostEntry": { "description": "Some plugs cost Energy, which is a stat on the item that can be increased by other plugs (that, at least in Armor 2.0, have a \"masterworks-like\" mechanic for upgrading). If a plug has costs, the details of that cost are defined here.", "type": "object", "properties": { "energyCost": { "format": "int32", "description": "The Energy cost for inserting this plug.", "type": "integer" }, "energyTypeHash": { "format": "uint32", "description": "The type of energy that this plug costs, as a reference to the DestinyEnergyTypeDefinition of the energy type.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.EnergyTypes.DestinyEnergyTypeDefinition" } }, "energyType": { "format": "int32", "description": "The type of energy that this plug costs, in enum form.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyEnergyType" } } } }, "Destiny.Definitions.DestinyItemGearsetBlockDefinition": { "description": "If an item has a related gearset, this is the list of items in that set, and an unlock expression that evaluates to a number representing the progress toward gearset completion (a very rare use for unlock expressions!)", "type": "object", "properties": { "trackingValueMax": { "format": "int32", "description": "The maximum possible number of items that can be collected.", "type": "integer" }, "itemList": { "description": "The list of hashes for items in the gearset. Use them to look up DestinyInventoryItemDefinition entries for the items in the set.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } } } }, "Destiny.Definitions.DestinyItemSackBlockDefinition": { "description": "Some items are \"sacks\" - they can be \"opened\" to produce other items. This is information related to its sack status, mostly UI strings. Engrams are an example of items that are considered to be \"Sacks\".", "type": "object", "properties": { "detailAction": { "description": "A description of what will happen when you open the sack. As far as I can tell, this is blank currently. Unknown whether it will eventually be populated with useful info.", "type": "string" }, "openAction": { "description": "The localized name of the action being performed when you open the sack.", "type": "string" }, "selectItemCount": { "format": "int32", "type": "integer" }, "vendorSackType": { "type": "string" }, "openOnAcquire": { "type": "boolean" } } }, "Destiny.Definitions.DestinyItemSocketBlockDefinition": { "description": "If defined, the item has at least one socket.", "type": "object", "properties": { "detail": { "description": "This was supposed to be a string that would give per-item details about sockets. In practice, it turns out that all this ever has is the localized word \"details\". ... that's lame, but perhaps it will become something cool in the future.", "type": "string" }, "socketEntries": { "description": "Each non-intrinsic (or mutable) socket on an item is defined here. Check inside for more info.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyItemSocketEntryDefinition" } }, "intrinsicSockets": { "description": "Each intrinsic (or immutable/permanent) socket on an item is defined here, along with the plug that is permanently affixed to the socket.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyItemIntrinsicSocketEntryDefinition" } }, "socketCategories": { "description": "A convenience property, that refers to the sockets in the \"sockets\" property, pre-grouped by category and ordered in the manner that they should be grouped in the UI. You could form this yourself with the existing data, but why would you want to? Enjoy life man.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyItemSocketCategoryDefinition" } } } }, "Destiny.Definitions.DestinyItemSocketEntryDefinition": { "description": "The definition information for a specific socket on an item. This will determine how the socket behaves in-game.", "type": "object", "properties": { "socketTypeHash": { "format": "uint32", "description": "All sockets have a type, and this is the hash identifier for this particular type. Use it to look up the DestinySocketTypeDefinition: read there for more information on how socket types affect the behavior of the socket.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Sockets.DestinySocketTypeDefinition" } }, "singleInitialItemHash": { "format": "uint32", "description": "If a valid hash, this is the hash identifier for the DestinyInventoryItemDefinition representing the Plug that will be initially inserted into the item on item creation. Otherwise, this Socket will either start without a plug inserted, or will have one randomly inserted.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "reusablePlugItems": { "description": "This is a list of pre-determined plugs that can *always* be plugged into this socket, without the character having the plug in their inventory.\r\nIf this list is populated, you will not be allowed to plug an arbitrary item in the socket: you will only be able to choose from one of these reusable plugs.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyItemSocketEntryPlugItemDefinition" } }, "preventInitializationOnVendorPurchase": { "description": "If this is true, then the socket will not be initialized with a plug if the item is purchased from a Vendor.\r\nRemember that Vendors are much more than conceptual vendors: they include \"Collection Kiosks\" and other entities. See DestinyVendorDefinition for more information.", "type": "boolean" }, "hidePerksInItemTooltip": { "description": "If this is true, the perks provided by this socket shouldn't be shown in the item's tooltip. This might be useful if it's providing a hidden bonus, or if the bonus is less important than other benefits on the item.", "type": "boolean" }, "plugSources": { "format": "int32", "description": "Indicates where you should go to get plugs for this socket. This will affect how you populate your UI, as well as what plugs are valid for this socket. It's an alternative to having to check for the existence of certain properties (reusablePlugItems for example) to infer where plugs should come from.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.SocketPlugSources" } }, "reusablePlugSetHash": { "format": "uint32", "description": "If this socket's plugs come from a reusable DestinyPlugSetDefinition, this is the identifier for that set. We added this concept to reduce some major duplication that's going to come from sockets as replacements for what was once implemented as large sets of items and kiosks (like Emotes).\r\n As of Shadowkeep, these will come up much more frequently and be driven by game content rather than custom curation.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Sockets.DestinyPlugSetDefinition" } }, "randomizedPlugSetHash": { "format": "uint32", "description": "This field replaces \"randomizedPlugItems\" as of Shadowkeep launch. If a socket has randomized plugs, this is a pointer to the set of plugs that could be used, as defined in DestinyPlugSetDefinition.\r\n If null, the item has no randomized plugs.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Sockets.DestinyPlugSetDefinition" } }, "defaultVisible": { "description": "If true, then this socket is visible in the item's \"default\" state. If you have an instance, you should always check the runtime state, as that can override this visibility setting: but if you're looking at the item on a conceptual level, this property can be useful for hiding data such as legacy sockets - which remain defined on items for infrastructure purposes, but can be confusing for users to see.", "type": "boolean" } } }, "Destiny.Definitions.DestinyItemSocketEntryPlugItemDefinition": { "description": "The definition of a known, reusable plug that can be applied to a socket.", "type": "object", "properties": { "plugItemHash": { "format": "uint32", "description": "The hash identifier of a DestinyInventoryItemDefinition representing the plug that can be inserted.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } } } }, "Destiny.SocketPlugSources": { "format": "int32", "description": "Indicates how a socket is populated, and where you should look for valid plug data.\r\n This is a flags enumeration/bitmask field, as you may have to look in multiple sources across multiple components for valid plugs.\r\n For instance, a socket could have plugs that are sourced from its own definition, as well as plugs that are sourced from Character-scoped AND profile-scoped Plug Sets. Only by combining plug data for every indicated source will you be able to know all of the plugs available for a socket.", "enum": [ "0", "1", "2", "4", "8" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None", "description": "If there's no way we can detect to insert new plugs." }, { "numericValue": "1", "identifier": "InventorySourced", "description": "Use plugs found in the player's inventory, based on the socket type rules (see DestinySocketTypeDefinition for more info)\r\nNote that a socket - like Shaders - can have *both* reusable plugs and inventory items inserted theoretically." }, { "numericValue": "2", "identifier": "ReusablePlugItems", "description": "Use the DestinyItemSocketsComponent.sockets.reusablePlugs property to determine which plugs are valid for this socket. This may have to be combined with other sources, such as plug sets, if those flags are set.\r\n Note that \"Reusable\" plugs may not necessarily come from a plug set, nor from the \"reusablePlugItems\" in the socket's Definition data. They can sometimes be \"randomized\" in which case the only source of truth at the moment is still the runtime DestinyItemSocketsComponent.sockets.reusablePlugs property." }, { "numericValue": "4", "identifier": "ProfilePlugSet", "description": "Use the ProfilePlugSets (DestinyProfileResponse.profilePlugSets) component data to determine which plugs are valid for this socket." }, { "numericValue": "8", "identifier": "CharacterPlugSet", "description": "Use the CharacterPlugSets (DestinyProfileResponse.characterPlugSets) component data to determine which plugs are valid for this socket." } ] }, "Destiny.Definitions.Sockets.DestinyPlugSetDefinition": { "description": "Sometimes, we have large sets of reusable plugs that are defined identically and thus can (and in some cases, are so large that they *must*) be shared across the places where they are used. These are the definitions for those reusable sets of plugs. \r\n See DestinyItemSocketEntryDefinition.plugSource and reusablePlugSetHash for the relationship between these reusable plug sets and the sockets that leverage them (for starters, Emotes).\r\n As of the release of Shadowkeep (Late 2019), these will begin to be sourced from game content directly - which means there will be many more of them, but it also means we may not get all data that we used to get for them.\r\n DisplayProperties, in particular, will no longer be guaranteed to contain valid information. We will make a best effort to guess what ought to be populated there where possible, but it will be invalid for many/most plug sets.", "type": "object", "properties": { "displayProperties": { "description": "If you want to show these plugs in isolation, these are the display properties for them.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "reusablePlugItems": { "description": "This is a list of pre-determined plugs that can be plugged into this socket, without the character having the plug in their inventory.\r\nIf this list is populated, you will not be allowed to plug an arbitrary item in the socket: you will only be able to choose from one of these reusable plugs.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyItemSocketEntryPlugItemRandomizedDefinition" } }, "isFakePlugSet": { "description": "Mostly for our debugging or reporting bugs, BNet is making \"fake\" plug sets in a desperate effort to reduce socket sizes.\r\n If this is true, the plug set was generated by BNet: if it looks wrong, that's a good indicator that it's bungie.net that fucked this up.", "type": "boolean" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "PlugSets" }, "Destiny.Definitions.DestinyItemSocketEntryPlugItemRandomizedDefinition": { "type": "object", "properties": { "craftingRequirements": { "$ref": "#/definitions/Destiny.Definitions.DestinyPlugItemCraftingRequirements" }, "currentlyCanRoll": { "description": "Indicates if the plug can be rolled on the current version of the item. For example, older versions of weapons may have plug rolls that are no longer possible on the current versions.", "type": "boolean" }, "plugItemHash": { "format": "uint32", "description": "The hash identifier of a DestinyInventoryItemDefinition representing the plug that can be inserted.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } } } }, "Destiny.Definitions.DestinyPlugItemCraftingRequirements": { "type": "object", "properties": { "unlockRequirements": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyPlugItemCraftingUnlockRequirement" } }, "requiredLevel": { "format": "int32", "description": "If the plug has a known level requirement, it'll be available here.", "type": "integer" }, "materialRequirementHashes": { "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyMaterialRequirementSetDefinition" } } } }, "Destiny.Definitions.DestinyPlugItemCraftingUnlockRequirement": { "type": "object", "properties": { "failureDescription": { "type": "string" } } }, "Destiny.Definitions.DestinyItemIntrinsicSocketEntryDefinition": { "description": "Represents a socket that has a plug associated with it intrinsically. This is useful for situations where the weapon needs to have a visual plug/Mod on it, but that plug/Mod should never change.", "type": "object", "properties": { "plugItemHash": { "format": "uint32", "description": "Indicates the plug that is intrinsically inserted into this socket.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "socketTypeHash": { "format": "uint32", "description": "Indicates the type of this intrinsic socket.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Sockets.DestinySocketTypeDefinition" } }, "defaultVisible": { "description": "If true, then this socket is visible in the item's \"default\" state. If you have an instance, you should always check the runtime state, as that can override this visibility setting: but if you're looking at the item on a conceptual level, this property can be useful for hiding data such as legacy sockets - which remain defined on items for infrastructure purposes, but can be confusing for users to see.", "type": "boolean" } } }, "Destiny.Definitions.DestinyItemSocketCategoryDefinition": { "description": "Sockets are grouped into categories in the UI. These define which category and which sockets are under that category.", "type": "object", "properties": { "socketCategoryHash": { "format": "uint32", "description": "The hash for the Socket Category: a quick way to go get the header display information for the category. Use it to look up DestinySocketCategoryDefinition info.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Sockets.DestinySocketCategoryDefinition" } }, "socketIndexes": { "description": "Use these indexes to look up the sockets in the \"sockets.socketEntries\" property on the item definition. These are the indexes under the category, in game-rendered order.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "Destiny.Definitions.DestinyItemSummaryBlockDefinition": { "description": "This appears to be information used when rendering rewards. We don't currently use it on BNet.", "type": "object", "properties": { "sortPriority": { "format": "int32", "description": "Apparently when rendering an item in a reward, this should be used as a sort priority. We're not doing it presently.", "type": "integer" } } }, "Destiny.Definitions.DestinyItemTalentGridBlockDefinition": { "description": "This defines information that can only come from a talent grid on an item. Items mostly have negligible talent grid data these days, but instanced items still retain grids as a source for some of this common information.\r\nBuilds/Subclasses are the only items left that still have talent grids with meaningful Nodes.", "type": "object", "properties": { "talentGridHash": { "format": "uint32", "description": "The hash identifier of the DestinyTalentGridDefinition attached to this item.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyTalentGridDefinition" } }, "itemDetailString": { "description": "This is meant to be a subtitle for looking at the talent grid. In practice, somewhat frustratingly, this always merely says the localized word for \"Details\". Great. Maybe it'll have more if talent grids ever get used for more than builds and subclasses again.", "type": "string" }, "buildName": { "description": "A shortcut string identifier for the \"build\" in question, if this talent grid has an associated build. Doesn't map to anything we can expose at the moment.", "type": "string" }, "hudDamageType": { "format": "int32", "description": "If the talent grid implies a damage type, this is the enum value for that damage type.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DamageType" } }, "hudIcon": { "description": "If the talent grid has a special icon that's shown in the game UI (like builds, funny that), this is the identifier for that icon. Sadly, we don't actually get that icon right now. I'll be looking to replace this with a path to the actual icon itself.", "type": "string" } } }, "Destiny.Definitions.DestinyTalentGridDefinition": { "description": "The time has unfortunately come to talk about Talent Grids.\r\nTalent Grids are the most complex and unintuitive part of the Destiny Definition data. Grab a cup of coffee before we begin, I can wait.\r\nTalent Grids were the primary way that items could be customized in Destiny 1. In Destiny 2, for now, talent grids have become exclusively used by Subclass/Build items: but the system is still in place for it to be used by items should the direction change back toward talent grids.\r\nTalent Grids have Nodes: the visual circles on the talent grid detail screen that have icons and can be activated if you meet certain requirements and pay costs. The actual visual data and effects, however, are driven by the \"Steps\" on Talent Nodes. Any given node will have 1:M of these steps, and the specific step that will be considered the \"current\" step (and thus the dictator of all benefits, visual state, and activation requirements on the Node) will almost always not be determined until an instance of the item is created. This is how, in Destiny 1, items were able to have such a wide variety of what users saw as \"Perks\": they were actually Talent Grids with nodes that had a wide variety of Steps, randomly chosen at the time of item creation.\r\nNow that Talent Grids are used exclusively by subclasses and builds, all of the properties within still apply: but there are additional visual elements on the Subclass/Build screens that are superimposed on top of the talent nodes. Unfortunately, BNet doesn't have this data: if you want to build a subclass screen, you will have to provide your own \"decorative\" assets, such as the visual connectors between nodes and the fancy colored-fire-bathed character standing behind the nodes.\r\nDestinyInventoryItem.talentGrid.talentGridHash defines an item's linked Talent Grid, which brings you to this definition that contains enough satic data about talent grids to make your head spin. These *must* be combined with instanced data - found when live data returns DestinyItemTalentGridComponent - in order to derive meaning. The instanced data will reference nodes and steps within these definitions, which you will then have to look up in the definition and combine with the instanced data to give the user the visual representation of their item's talent grid.", "type": "object", "properties": { "maxGridLevel": { "format": "int32", "description": "The maximum possible level of the Talent Grid: at this level, any nodes are allowed to be activated.", "type": "integer" }, "gridLevelPerColumn": { "format": "int32", "description": "The meaning of this has been lost in the sands of time: it still exists as a property, but appears to be unused in the modern UI of talent grids. It used to imply that each visual \"column\" of talent nodes required identical progression levels in order to be activated. Returning this value in case it is still useful to someone? Perhaps it's just a bit of interesting history.", "type": "integer" }, "progressionHash": { "format": "uint32", "description": "The hash identifier of the Progression (DestinyProgressionDefinition) that drives whether and when Talent Nodes can be activated on the Grid. Items will have instances of this Progression, and will gain experience that will eventually cause the grid to increase in level. As the grid's level increases, it will cross the threshold where nodes can be activated. See DestinyTalentGridStepDefinition's activation requirements for more information.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyProgressionDefinition" } }, "nodes": { "description": "The list of Talent Nodes on the Grid (recall that Nodes themselves are really just locations in the UI to show whatever their current Step is. You will only know the current step for a node by retrieving instanced data through platform calls to the API that return DestinyItemTalentGridComponent).", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyTalentNodeDefinition" } }, "exclusiveSets": { "description": "Talent Nodes can exist in \"exclusive sets\": these are sets of nodes in which only a single node in the set can be activated at any given time. Activating a node in this set will automatically deactivate the other nodes in the set (referred to as a \"Swap\").\r\nIf a node in the exclusive set has already been activated, the game will not charge you materials to activate another node in the set, even if you have never activated it before, because you already paid the cost to activate one node in the set.\r\nNot to be confused with Exclusive Groups. (how the heck do we NOT get confused by that? Jeez) See the groups property for information about that only-tangentially-related concept.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyTalentNodeExclusiveSetDefinition" } }, "independentNodeIndexes": { "description": "This is a quick reference to the indexes of nodes that are not part of exclusive sets. Handy for knowing which talent nodes can only be activated directly, rather than via swapping.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "groups": { "description": "Talent Nodes can have \"Exclusive Groups\". These are not to be confused with Exclusive Sets (see exclusiveSets property).\r\nLook at the definition of DestinyTalentExclusiveGroup for more information and how they work. These groups are keyed by the \"groupHash\" from DestinyTalentExclusiveGroup.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Definitions.DestinyTalentExclusiveGroup" } }, "nodeCategories": { "description": "BNet wants to show talent nodes grouped by similar purpose with localized titles. This is the ordered list of those categories: if you want to show nodes by category, you can iterate over this list, render the displayProperties for the category as the title, and then iterate over the talent nodes referenced by the category to show the related nodes.\r\nNote that this is different from Exclusive Groups or Sets, because these categories also incorporate \"Independent\" nodes that belong to neither sets nor groups. These are purely for visual grouping of nodes rather than functional grouping.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyTalentNodeCategory" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Talents" }, "Destiny.Definitions.DestinyTalentNodeDefinition": { "description": "Talent Grids on items have Nodes. These nodes have positions in the talent grid's UI, and contain \"Steps\" (DestinyTalentNodeStepDefinition), one of whom will be the \"Current\" step.\r\nThe Current Step determines the visual properties of the node, as well as what the node grants when it is activated.\r\nSee DestinyTalentGridDefinition for a more complete overview of how Talent Grids work, and how they are used in Destiny 2 (and how they were used in Destiny 1).", "type": "object", "properties": { "nodeIndex": { "format": "int32", "description": "The index into the DestinyTalentGridDefinition's \"nodes\" property where this node is located. Used to uniquely identify the node within the Talent Grid. Note that this is content version dependent: make sure you have the latest version of content before trying to use these properties.", "type": "integer" }, "nodeHash": { "format": "uint32", "description": "The hash identifier for the node, which unfortunately is also content version dependent but can be (and ideally, should be) used instead of the nodeIndex to uniquely identify the node.\r\nThe two exist side-by-side for backcompat reasons due to the Great Talent Node Restructuring of Destiny 1, and I ran out of time to remove one of them and standardize on the other. Sorry!", "type": "integer" }, "row": { "format": "int32", "description": "The visual \"row\" where the node should be shown in the UI. If negative, then the node is hidden.", "type": "integer" }, "column": { "format": "int32", "description": "The visual \"column\" where the node should be shown in the UI. If negative, the node is hidden.", "type": "integer" }, "prerequisiteNodeIndexes": { "description": "Indexes into the DestinyTalentGridDefinition.nodes property for any nodes that must be activated before this one is allowed to be activated.\r\nI would have liked to change this to hashes for Destiny 2, but we have run out of time.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "binaryPairNodeIndex": { "format": "int32", "description": "At one point, Talent Nodes supported the idea of \"Binary Pairs\": nodes that overlapped each other visually, and where activating one deactivated the other. They ended up not being used, mostly because Exclusive Sets are *almost* a superset of this concept, but the potential for it to be used still exists in theory.\r\nIf this is ever used, this will be the index into the DestinyTalentGridDefinition.nodes property for the node that is the binary pair match to this node. Activating one deactivates the other.", "type": "integer" }, "autoUnlocks": { "description": "If true, this node will automatically unlock when the Talent Grid's level reaches the required level of the current step of this node.", "type": "boolean" }, "lastStepRepeats": { "description": "At one point, Nodes were going to be able to be activated multiple times, changing the current step and potentially piling on multiple effects from the previously activated steps. This property would indicate if the last step could be activated multiple times. \r\nThis is not currently used, but it isn't out of the question that this could end up being used again in a theoretical future.", "type": "boolean" }, "isRandom": { "description": "If this is true, the node's step is determined randomly rather than the first step being chosen.", "type": "boolean" }, "randomActivationRequirement": { "description": "At one point, you were going to be able to repurchase talent nodes that had random steps, to \"re-roll\" the current step of the node (and thus change the properties of your item). This was to be the activation requirement for performing that re-roll.\r\nThe system still exists to do this, as far as I know, so it may yet come back around!", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyNodeActivationRequirement" } ] }, "isRandomRepurchasable": { "description": "If this is true, the node can be \"re-rolled\" to acquire a different random current step. This is not used, but still exists for a theoretical future of talent grids.", "type": "boolean" }, "steps": { "description": "At this point, \"steps\" have been obfuscated into conceptual entities, aggregating the underlying notions of \"properties\" and \"true steps\".\r\nIf you need to know a step as it truly exists - such as when recreating Node logic when processing Vendor data - you'll have to use the \"realSteps\" property below.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyNodeStepDefinition" } }, "exclusiveWithNodeHashes": { "description": "The nodeHash values for nodes that are in an Exclusive Set with this node.\r\nSee DestinyTalentGridDefinition.exclusiveSets for more info about exclusive sets.\r\nAgain, note that these are nodeHashes and *not* nodeIndexes.", "type": "array", "items": { "format": "uint32", "type": "integer" } }, "randomStartProgressionBarAtProgression": { "format": "int32", "description": "If the node's step is randomly selected, this is the amount of the Talent Grid's progression experience at which the progression bar for the node should be shown.", "type": "integer" }, "layoutIdentifier": { "description": "A string identifier for a custom visual layout to apply to this talent node. Unfortunately, we do not have any data for rendering these custom layouts. It will be up to you to interpret these strings and change your UI if you want to have custom UI matching these layouts.", "type": "string" }, "groupHash": { "format": "uint32", "description": "As of Destiny 2, nodes can exist as part of \"Exclusive Groups\". These differ from exclusive sets in that, within the group, many nodes can be activated. But the act of activating any node in the group will cause \"opposing\" nodes (nodes in groups that are not allowed to be activated at the same time as this group) to deactivate.\r\nSee DestinyTalentExclusiveGroup for more information on the details. This is an identifier for this node's group, if it is part of one.", "type": "integer" }, "loreHash": { "format": "uint32", "description": "Talent nodes can be associated with a piece of Lore, generally rendered in a tooltip. This is the hash identifier of the lore element to show, if there is one to be show.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Lore.DestinyLoreDefinition" } }, "nodeStyleIdentifier": { "description": "Comes from the talent grid node style: this identifier should be used to determine how to render the node in the UI.", "type": "string" }, "ignoreForCompletion": { "description": "Comes from the talent grid node style: if true, then this node should be ignored for determining whether the grid is complete.", "type": "boolean" } } }, "Destiny.Definitions.DestinyNodeActivationRequirement": { "description": "Talent nodes have requirements that must be met before they can be activated.\r\nThis describes the material costs, the Level of the Talent Grid's progression required, and other conditional information that limits whether a talent node can be activated.", "type": "object", "properties": { "gridLevel": { "format": "int32", "description": "The Progression level on the Talent Grid required to activate this node.\r\nSee DestinyTalentGridDefinition.progressionHash for the related Progression, and read DestinyProgressionDefinition's documentation to learn more about Progressions.", "type": "integer" }, "materialRequirementHashes": { "description": "The list of hash identifiers for material requirement sets: materials that are required for the node to be activated. See DestinyMaterialRequirementSetDefinition for more information about material requirements.\r\nIn this case, only a single DestinyMaterialRequirementSetDefinition will be chosen from this list, and we won't know which one will be chosen until an instance of the item is created.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyMaterialRequirementSetDefinition" } } } }, "Destiny.Definitions.DestinyNodeStepDefinition": { "description": "This defines the properties of a \"Talent Node Step\". When you see a talent node in game, the actual visible properties that you see (its icon, description, the perks and stats it provides) are not provided by the Node itself, but rather by the currently active Step on the node.\r\nWhen a Talent Node is activated, the currently active step's benefits are conferred upon the item and character.\r\nThe currently active step on talent nodes are determined when an item is first instantiated. Sometimes it is random, sometimes it is more deterministic (particularly when a node has only a single step).\r\nNote that, when dealing with Talent Node Steps, you must ensure that you have the latest version of content. stepIndex and nodeStepHash - two ways of identifying the step within a node - are both content version dependent, and thus are subject to change between content updates.", "type": "object", "properties": { "displayProperties": { "description": "These are the display properties actually used to render the Talent Node. The currently active step's displayProperties are shown.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "stepIndex": { "format": "int32", "description": "The index of this step in the list of Steps on the Talent Node.\r\nUnfortunately, this is the closest thing we have to an identifier for the Step: steps are not provided a content version agnostic identifier. This means that, when you are dealing with talent nodes, you will need to first ensure that you have the latest version of content.", "type": "integer" }, "nodeStepHash": { "format": "uint32", "description": "The hash of this node step. Unfortunately, while it can be used to uniquely identify the step within a node, it is also content version dependent and should not be relied on without ensuring you have the latest vesion of content.", "type": "integer" }, "interactionDescription": { "description": "If you can interact with this node in some way, this is the localized description of that interaction.", "type": "string" }, "damageType": { "format": "int32", "description": "An enum representing a damage type granted by activating this step, if any.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DamageType" } }, "damageTypeHash": { "format": "uint32", "description": "If the step provides a damage type, this will be the hash identifier used to look up the damage type's DestinyDamageTypeDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyDamageTypeDefinition" } }, "activationRequirement": { "description": "If the step has requirements for activation (they almost always do, if nothing else than for the Talent Grid's Progression to have reached a certain level), they will be defined here.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyNodeActivationRequirement" } ] }, "canActivateNextStep": { "description": "There was a time when talent nodes could be activated multiple times, and the effects of subsequent Steps would be compounded on each other, essentially \"upgrading\" the node. We have moved away from this, but theoretically the capability still exists.\r\nI continue to return this in case it is used in the future: if true and this step is the current step in the node, you are allowed to activate the node a second time to receive the benefits of the next step in the node, which will then become the active step.", "type": "boolean" }, "nextStepIndex": { "format": "int32", "description": "The stepIndex of the next step in the talent node, or -1 if this is the last step or if the next step to be chosen is random.\r\nThis doesn't really matter anymore unless canActivateNextStep begins to be used again.", "type": "integer" }, "isNextStepRandom": { "description": "If true, the next step to be chosen is random, and if you're allowed to activate the next step. (if canActivateNextStep = true)", "type": "boolean" }, "perkHashes": { "description": "The list of hash identifiers for Perks (DestinySandboxPerkDefinition) that are applied when this step is active. Perks provide a variety of benefits and modifications - examine DestinySandboxPerkDefinition to learn more.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinySandboxPerkDefinition" } }, "startProgressionBarAtProgress": { "format": "int32", "description": "When the Talent Grid's progression reaches this value, the circular \"progress bar\" that surrounds the talent node should be shown.\r\nThis also indicates the lower bound of said progress bar, with the upper bound being the progress required to reach activationRequirement.gridLevel. (at some point I should precalculate the upper bound and put it in the definition to save people time)", "type": "integer" }, "statHashes": { "description": "When the step provides stat benefits on the item or character, this is the list of hash identifiers for stats (DestinyStatDefinition) that are provided.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyStatDefinition" } }, "affectsQuality": { "description": "If this is true, the step affects the item's Quality in some way. See DestinyInventoryItemDefinition for more information about the meaning of Quality. I already made a joke about Zen and the Art of Motorcycle Maintenance elsewhere in the documentation, so I will avoid doing it again. Oops too late", "type": "boolean" }, "stepGroups": { "description": "In Destiny 1, the Armory's Perk Filtering was driven by a concept of TalentNodeStepGroups: categorizations of talent nodes based on their functionality. While the Armory isn't a BNet-facing thing for now, and the new Armory will need to account for Sockets rather than Talent Nodes, this categorization capability feels useful enough to still keep around.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.DestinyTalentNodeStepGroups" } ] }, "affectsLevel": { "description": "If true, this step can affect the level of the item. See DestinyInventoryItemDefintion for more information about item levels and their effect on stats.", "type": "boolean" }, "socketReplacements": { "description": "If this step is activated, this will be a list of information used to replace socket items with new Plugs. See DestinyInventoryItemDefinition for more information about sockets and plugs.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyNodeSocketReplaceResponse" } } } }, "Destiny.Definitions.DestinyNodeSocketReplaceResponse": { "description": "This is a bit of an odd duck. Apparently, if talent nodes steps have this data, the game will go through on step activation and alter the first Socket it finds on the item that has a type matching the given socket type, inserting the indicated plug item.", "type": "object", "properties": { "socketTypeHash": { "format": "uint32", "description": "The hash identifier of the socket type to find amidst the item's sockets (the item to which this talent grid is attached). See DestinyInventoryItemDefinition.sockets.socketEntries to find the socket type of sockets on the item in question.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Sockets.DestinySocketTypeDefinition" } }, "plugItemHash": { "format": "uint32", "description": "The hash identifier of the plug item that will be inserted into the socket found.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } } } }, "Destiny.Definitions.DestinyTalentNodeExclusiveSetDefinition": { "description": "The list of indexes into the Talent Grid's \"nodes\" property for nodes in this exclusive set. (See DestinyTalentNodeDefinition.nodeIndex)", "type": "object", "properties": { "nodeIndexes": { "description": "The list of node indexes for the exclusive set. Historically, these were indexes. I would have liked to replace this with nodeHashes for consistency, but it's way too late for that. (9:09 PM, he's right!)", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "Destiny.Definitions.DestinyTalentExclusiveGroup": { "description": "As of Destiny 2, nodes can exist as part of \"Exclusive Groups\". These differ from exclusive sets in that, within the group, many nodes can be activated. But the act of activating any node in the group will cause \"opposing\" nodes (nodes in groups that are not allowed to be activated at the same time as this group) to deactivate.", "type": "object", "properties": { "groupHash": { "format": "uint32", "description": "The identifier for this exclusive group. Only guaranteed unique within the talent grid, not globally.", "type": "integer" }, "loreHash": { "format": "uint32", "description": "If this group has an associated piece of lore to show next to it, this will be the identifier for that DestinyLoreDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Lore.DestinyLoreDefinition" } }, "nodeHashes": { "description": "A quick reference of the talent nodes that are part of this group, by their Talent Node hashes. (See DestinyTalentNodeDefinition.nodeHash)", "type": "array", "items": { "format": "uint32", "type": "integer" } }, "opposingGroupHashes": { "description": "A quick reference of Groups whose nodes will be deactivated if any node in this group is activated.", "type": "array", "items": { "format": "uint32", "type": "integer" } }, "opposingNodeHashes": { "description": "A quick reference of Nodes that will be deactivated if any node in this group is activated, by their Talent Node hashes. (See DestinyTalentNodeDefinition.nodeHash)", "type": "array", "items": { "format": "uint32", "type": "integer" } } } }, "Destiny.Definitions.DestinyTalentNodeCategory": { "description": "An artificial construct provided by Bungie.Net, where we attempt to group talent nodes by functionality.\r\nThis is a single set of references to Talent Nodes that share a common trait or purpose.", "type": "object", "properties": { "identifier": { "description": "Mostly just for debug purposes, but if you find it useful you can have it. This is BNet's manually created identifier for this category.", "type": "string" }, "isLoreDriven": { "description": "If true, we found the localized content in a related DestinyLoreDefinition instead of local BNet localization files. This is mostly for ease of my own future investigations.", "type": "boolean" }, "displayProperties": { "description": "Will contain at least the \"name\", which will be the title of the category. We will likely not have description and an icon yet, but I'm going to keep my options open.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "nodeHashes": { "description": "The set of all hash identifiers for Talent Nodes (DestinyTalentNodeDefinition) in this Talent Grid that are part of this Category.", "type": "array", "items": { "format": "uint32", "type": "integer" } } } }, "Destiny.Definitions.DestinyItemPerkEntryDefinition": { "description": "An intrinsic perk on an item, and the requirements for it to be activated.", "type": "object", "properties": { "requirementDisplayString": { "description": "If this perk is not active, this is the string to show for why it's not providing its benefits.", "type": "string" }, "perkHash": { "format": "uint32", "description": "A hash identifier for the DestinySandboxPerkDefinition being provided on the item.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinySandboxPerkDefinition" } }, "perkVisibility": { "format": "int32", "description": "Indicates whether this perk should be shown, or if it should be shown disabled.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.ItemPerkVisibility" } } } }, "Destiny.ItemPerkVisibility": { "format": "int32", "description": "Indicates how a perk should be shown, or if it should be, in the game UI. Maybe useful for those of you trying to filter out internal-use-only perks (or for those of you trying to figure out what they do!)", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Visible" }, { "numericValue": "1", "identifier": "Disabled" }, { "numericValue": "2", "identifier": "Hidden" } ] }, "Destiny.Definitions.Animations.DestinyAnimationReference": { "type": "object", "properties": { "animName": { "type": "string" }, "animIdentifier": { "type": "string" }, "path": { "type": "string" } } }, "Links.HyperlinkReference": { "type": "object", "properties": { "title": { "type": "string" }, "url": { "type": "string" } } }, "Destiny.SpecialItemType": { "format": "int32", "description": "As you run into items that need to be classified for Milestone purposes in ways that we cannot infer via direct data, add a new classification here and use a string constant to represent it in the local item config file.\r\nNOTE: This is not all of the item types available, and some of these are holdovers from Destiny 1 that may or may not still exist.", "enum": [ "0", "1", "8", "9", "23", "24", "25", "27", "29" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "SpecialCurrency" }, { "numericValue": "8", "identifier": "Armor" }, { "numericValue": "9", "identifier": "Weapon" }, { "numericValue": "23", "identifier": "Engram" }, { "numericValue": "24", "identifier": "Consumable" }, { "numericValue": "25", "identifier": "ExchangeMaterial" }, { "numericValue": "27", "identifier": "MissionReward" }, { "numericValue": "29", "identifier": "Currency" } ] }, "Destiny.DestinyItemType": { "format": "int32", "description": "An enumeration that indicates the high-level \"type\" of the item, attempting to iron out the context specific differences for specific instances of an entity. For instance, though a weapon may be of various weapon \"Types\", in DestinyItemType they are all classified as \"Weapon\". This allows for better filtering on a higher level of abstraction for the concept of types.\r\n This enum is provided for historical compatibility with Destiny 1, but an ideal alternative is to use DestinyItemCategoryDefinitions and the DestinyItemDefinition.itemCategories property instead. Item Categories allow for arbitrary hierarchies of specificity, and for items to belong to multiple categories across multiple hierarchies simultaneously. For this enum, we pick a single type as a \"best guess\" fit.\r\n NOTE: This is not all of the item types available, and some of these are holdovers from Destiny 1 that may or may not still exist.\r\n I keep updating these because they're so damn convenient. I guess I shouldn't fight it.", "enum": [ "0", "1", "2", "3", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Currency" }, { "numericValue": "2", "identifier": "Armor" }, { "numericValue": "3", "identifier": "Weapon" }, { "numericValue": "7", "identifier": "Message" }, { "numericValue": "8", "identifier": "Engram" }, { "numericValue": "9", "identifier": "Consumable" }, { "numericValue": "10", "identifier": "ExchangeMaterial" }, { "numericValue": "11", "identifier": "MissionReward" }, { "numericValue": "12", "identifier": "QuestStep" }, { "numericValue": "13", "identifier": "QuestStepComplete" }, { "numericValue": "14", "identifier": "Emblem" }, { "numericValue": "15", "identifier": "Quest" }, { "numericValue": "16", "identifier": "Subclass" }, { "numericValue": "17", "identifier": "ClanBanner" }, { "numericValue": "18", "identifier": "Aura" }, { "numericValue": "19", "identifier": "Mod" }, { "numericValue": "20", "identifier": "Dummy" }, { "numericValue": "21", "identifier": "Ship" }, { "numericValue": "22", "identifier": "Vehicle" }, { "numericValue": "23", "identifier": "Emote" }, { "numericValue": "24", "identifier": "Ghost" }, { "numericValue": "25", "identifier": "Package" }, { "numericValue": "26", "identifier": "Bounty" }, { "numericValue": "27", "identifier": "Wrapper" }, { "numericValue": "28", "identifier": "SeasonalArtifact" }, { "numericValue": "29", "identifier": "Finisher" }, { "numericValue": "30", "identifier": "Pattern" } ] }, "Destiny.DestinyBreakerType": { "format": "int32", "description": "A plug can optionally have a \"Breaker Type\": a special ability that can affect units in unique ways. Activating this plug can grant one of these types.", "enum": [ "0", "1", "2", "3" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "ShieldPiercing" }, { "numericValue": "2", "identifier": "Disruption" }, { "numericValue": "3", "identifier": "Stagger" } ] }, "Destiny.Definitions.DestinyItemCategoryDefinition": { "description": "In an attempt to categorize items by type, usage, and other interesting properties, we created DestinyItemCategoryDefinition: information about types that is assembled using a set of heuristics that examine the properties of an item such as what inventory bucket it's in, its item type name, and whether it has or is missing certain blocks of data.\r\nThis heuristic is imperfect, however. If you find an item miscategorized, let us know on the Bungie API forums!\r\nWe then populate all of the categories that we think an item belongs to in its DestinyInventoryItemDefinition.itemCategoryHashes property. You can use that to provide your own custom item filtering, sorting, aggregating... go nuts on it! And let us know if you see more categories that you wish would be added!", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "visible": { "description": "If True, this category should be visible in UI. Sometimes we make categories that we don't think are interesting externally. It's up to you if you want to skip on showing them.", "type": "boolean" }, "deprecated": { "description": "If True, this category has been deprecated: it may have no items left, or there may be only legacy items that remain in it which are no longer relevant to the game.", "type": "boolean" }, "shortTitle": { "description": "A shortened version of the title. The reason why we have this is because the Armory in German had titles that were too long to display in our UI, so these were localized abbreviated versions of those categories. The property still exists today, even though the Armory doesn't exist for D2... yet.", "type": "string" }, "itemTypeRegex": { "description": "The janky regular expression we used against the item type to try and discern whether the item belongs to this category.", "type": "string" }, "grantDestinyBreakerType": { "format": "int32", "description": "If the item in question has this category, it also should have this breaker type.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyBreakerType" } }, "plugCategoryIdentifier": { "description": "If the item is a plug, this is the identifier we expect to find associated with it if it is in this category.", "type": "string" }, "itemTypeRegexNot": { "description": "If the item type matches this janky regex, it does *not* belong to this category.", "type": "string" }, "originBucketIdentifier": { "description": "If the item belongs to this bucket, it does belong to this category.", "type": "string" }, "grantDestinyItemType": { "format": "int32", "description": "If an item belongs to this category, it will also receive this item type. This is now how DestinyItemType is populated for items: it used to be an even jankier process, but that's a story that requires more alcohol.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyItemType" } }, "grantDestinySubType": { "format": "int32", "description": "If an item belongs to this category, it will also receive this subtype enum value.\r\nI know what you're thinking - what if it belongs to multiple categories that provide sub-types?\r\nThe last one processed wins, as is the case with all of these \"grant\" enums. Now you can see one reason why we moved away from these enums... but they're so convenient when they work, aren't they?", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyItemSubType" } }, "grantDestinyClass": { "format": "int32", "description": "If an item belongs to this category, it will also get this class restriction enum value.\r\nSee the other \"grant\"-prefixed properties on this definition for my color commentary.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyClass" } }, "traitId": { "description": "The traitId that can be found on items that belong to this category.", "type": "string" }, "groupedCategoryHashes": { "description": "If this category is a \"parent\" category of other categories, those children will have their hashes listed in rendering order here, and can be looked up using these hashes against DestinyItemCategoryDefinition.\r\nIn this way, you can build up a visual hierarchy of item categories. That's what we did, and you can do it too. I believe in you. Yes, you, Carl.\r\n(I hope someone named Carl reads this someday)", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyItemCategoryDefinition" } }, "parentCategoryHashes": { "description": "All item category hashes of \"parent\" categories: categories that contain this as a child through the hierarchy of groupedCategoryHashes. It's a bit redundant, but having this child-centric list speeds up some calculations.", "type": "array", "items": { "format": "uint32", "type": "integer" } }, "groupCategoryOnly": { "description": "If true, this category is only used for grouping, and should not be evaluated with its own checks. Rather, the item only has this category if it has one of its child categories.", "type": "boolean" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "ItemCategories" }, "Destiny.Definitions.BreakerTypes.DestinyBreakerTypeDefinition": { "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "enumValue": { "format": "int32", "description": "We have an enumeration for Breaker types for quick reference. This is the current definition's breaker type enum value.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyBreakerType" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "BreakerTypes" }, "Destiny.Definitions.Seasons.DestinySeasonDefinition": { "description": "Defines a canonical \"Season\" of Destiny: a range of a few months where the game highlights certain challenges, provides new loot, has new Clan-related rewards and celebrates various seasonal events.", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "backgroundImagePath": { "type": "string" }, "seasonNumber": { "format": "int32", "type": "integer" }, "startDate": { "format": "date-time", "type": "string" }, "endDate": { "format": "date-time", "type": "string" }, "seasonPassHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Seasons.DestinySeasonPassDefinition" } }, "seasonPassProgressionHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyProgressionDefinition" } }, "artifactItemHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "sealPresentationNodeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "seasonalChallengesPresentationNodeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "preview": { "description": "Optional - Defines the promotional text, images, and links to preview this season.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Seasons.DestinySeasonPreviewDefinition" } ] }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Seasons" }, "Destiny.Definitions.Seasons.DestinySeasonPreviewDefinition": { "description": "Defines the promotional text, images, and links to preview this season.", "type": "object", "properties": { "description": { "description": "A localized description of the season.", "type": "string" }, "linkPath": { "description": "A relative path to learn more about the season. Web browsers should be automatically redirected to the user's Bungie.net locale. For example: \"/SeasonOfTheChosen\" will redirect to \"/7/en/Seasons/SeasonOfTheChosen\" for English users.", "type": "string" }, "videoLink": { "description": "An optional link to a localized video, probably YouTube.", "type": "string" }, "images": { "description": "A list of images to preview the seasonal content. Should have at least three to show.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Seasons.DestinySeasonPreviewImageDefinition" } } } }, "Destiny.Definitions.Seasons.DestinySeasonPreviewImageDefinition": { "description": "Defines the thumbnail icon, high-res image, and video link for promotional images", "type": "object", "properties": { "thumbnailImage": { "description": "A thumbnail icon path to preview seasonal content, probably 480x270.", "type": "string" }, "highResImage": { "description": "An optional path to a high-resolution image, probably 1920x1080.", "type": "string" } } }, "Destiny.Definitions.Seasons.DestinySeasonPassDefinition": { "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "rewardProgressionHash": { "format": "uint32", "description": "This is the progression definition related to the progression for the initial levels 1-100 that provide item rewards for the Season pass. Further experience after you reach the limit is provided in the \"Prestige\" progression referred to by prestigeProgressionHash.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyProgressionDefinition" } }, "prestigeProgressionHash": { "format": "uint32", "description": "I know what you're thinking, but I promise we're not going to duplicate and drown you. Instead, we're giving you sweet, sweet power bonuses.\r\n Prestige progression is further progression that you can make on the Season pass after you gain max ranks, that will ultimately increase your power/light level over the theoretical limit.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyProgressionDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "SeasonPasses" }, "Destiny.Definitions.DestinyProgressionRewardItemQuantity": { "type": "object", "properties": { "rewardedAtProgressionLevel": { "format": "int32", "type": "integer" }, "acquisitionBehavior": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyProgressionRewardItemAcquisitionBehavior" } }, "uiDisplayStyle": { "type": "string" }, "claimUnlockDisplayStrings": { "type": "array", "items": { "type": "string" } }, "itemHash": { "format": "uint32", "description": "The hash identifier for the item in question. Use it to look up the item's DestinyInventoryItemDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "itemInstanceId": { "format": "int64", "description": "If this quantity is referring to a specific instance of an item, this will have the item's instance ID. Normally, this will be null.", "type": "integer" }, "quantity": { "format": "int32", "description": "The amount of the item needed/available depending on the context of where DestinyItemQuantity is being used.", "type": "integer" }, "hasConditionalVisibility": { "description": "Indicates that this item quantity may be conditionally shown or hidden, based on various sources of state. For example: server flags, account state, or character progress.", "type": "boolean" } } }, "Destiny.DestinyProgressionRewardItemAcquisitionBehavior": { "format": "int32", "description": "Represents the different kinds of acquisition behavior for progression reward items.", "enum": [ "0", "1" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Instant" }, { "numericValue": "1", "identifier": "PlayerClaimRequired" } ] }, "GroupsV2.GroupUserBase": { "type": "object", "properties": { "groupId": { "format": "int64", "type": "integer" }, "destinyUserInfo": { "$ref": "#/definitions/GroupsV2.GroupUserInfoCard" }, "bungieNetUserInfo": { "$ref": "#/definitions/User.UserInfoCard" }, "joinDate": { "format": "date-time", "type": "string" } } }, "GroupsV2.GroupMember": { "type": "object", "properties": { "memberType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.RuntimeGroupMemberType" } }, "isOnline": { "type": "boolean" }, "lastOnlineStatusChange": { "format": "int64", "type": "integer" }, "groupId": { "format": "int64", "type": "integer" }, "destinyUserInfo": { "$ref": "#/definitions/GroupsV2.GroupUserInfoCard" }, "bungieNetUserInfo": { "$ref": "#/definitions/User.UserInfoCard" }, "joinDate": { "format": "date-time", "type": "string" } } }, "GroupsV2.GroupAllianceStatus": { "format": "int32", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Unallied" }, { "numericValue": "1", "identifier": "Parent" }, { "numericValue": "2", "identifier": "Child" } ] }, "GroupsV2.GroupPotentialMember": { "type": "object", "properties": { "potentialStatus": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.GroupPotentialMemberStatus" } }, "groupId": { "format": "int64", "type": "integer" }, "destinyUserInfo": { "$ref": "#/definitions/GroupsV2.GroupUserInfoCard" }, "bungieNetUserInfo": { "$ref": "#/definitions/User.UserInfoCard" }, "joinDate": { "format": "date-time", "type": "string" } } }, "GroupsV2.GroupPotentialMemberStatus": { "format": "int32", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Applicant" }, { "numericValue": "2", "identifier": "Invitee" } ] }, "Tags.Models.Contracts.TagResponse": { "type": "object", "properties": { "tagText": { "type": "string" }, "ignoreStatus": { "$ref": "#/definitions/Ignores.IgnoreResponse" } } }, "Forum.PollResponse": { "type": "object", "properties": { "topicId": { "format": "int64", "type": "integer" }, "results": { "type": "array", "items": { "$ref": "#/definitions/Forum.PollResult" } }, "totalVotes": { "format": "int32", "type": "integer" } } }, "Forum.PollResult": { "type": "object", "properties": { "answerText": { "type": "string" }, "answerSlot": { "format": "int32", "type": "integer" }, "lastVoteDate": { "format": "date-time", "type": "string" }, "votes": { "format": "int32", "type": "integer" }, "requestingUserVoted": { "type": "boolean" } } }, "Forum.ForumRecruitmentDetail": { "type": "object", "properties": { "topicId": { "format": "int64", "type": "integer" }, "microphoneRequired": { "type": "boolean" }, "intensity": { "format": "byte", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Forum.ForumRecruitmentIntensityLabel" } }, "tone": { "format": "byte", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Forum.ForumRecruitmentToneLabel" } }, "approved": { "type": "boolean" }, "conversationId": { "format": "int64", "type": "integer" }, "playerSlotsTotal": { "format": "int32", "type": "integer" }, "playerSlotsRemaining": { "format": "int32", "type": "integer" }, "Fireteam": { "type": "array", "items": { "$ref": "#/definitions/User.GeneralUser" } }, "kickedPlayerIds": { "type": "array", "items": { "format": "int64", "type": "integer" } } } }, "Forum.ForumRecruitmentIntensityLabel": { "format": "byte", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Casual" }, { "numericValue": "2", "identifier": "Professional" } ] }, "Forum.ForumRecruitmentToneLabel": { "format": "byte", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "FamilyFriendly" }, { "numericValue": "2", "identifier": "Rowdy" } ] }, "Forum.ForumPostSortEnum": { "format": "int32", "enum": [ "0", "1" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Default" }, { "numericValue": "1", "identifier": "OldestFirst" } ] }, "Config.GroupTheme": { "type": "object", "properties": { "name": { "type": "string" }, "folder": { "type": "string" }, "description": { "type": "string" } } }, "GroupsV2.GroupDateRange": { "format": "int32", "enum": [ "0", "1", "2", "3", "4" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "All" }, { "numericValue": "1", "identifier": "PastDay" }, { "numericValue": "2", "identifier": "PastWeek" }, { "numericValue": "3", "identifier": "PastMonth" }, { "numericValue": "4", "identifier": "PastYear" } ] }, "GroupsV2.GroupV2Card": { "description": "A small infocard of group information, usually used for when a list of groups are returned", "type": "object", "properties": { "groupId": { "format": "int64", "type": "integer" }, "name": { "type": "string" }, "groupType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.GroupType" } }, "creationDate": { "format": "date-time", "type": "string" }, "about": { "type": "string" }, "motto": { "type": "string" }, "memberCount": { "format": "int32", "type": "integer" }, "locale": { "type": "string" }, "membershipOption": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.MembershipOption" } }, "capabilities": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.Capabilities" } }, "clanInfo": { "$ref": "#/definitions/GroupsV2.GroupV2ClanInfo" }, "avatarPath": { "type": "string" }, "theme": { "type": "string" } } }, "SearchResultOfGroupV2Card": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/definitions/GroupsV2.GroupV2Card" } }, "totalResults": { "format": "int32", "type": "integer" }, "hasMore": { "type": "boolean" }, "query": { "$ref": "#/definitions/Queries.PagedQuery" }, "replacementContinuationToken": { "type": "string" }, "useTotalResults": { "description": "If useTotalResults is true, then totalResults represents an accurate count.\r\nIf False, it does not, and may be estimated/only the size of the current page.\r\nEither way, you should probably always only trust hasMore.\r\nThis 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.", "type": "boolean" } } }, "GroupsV2.GroupSearchResponse": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/definitions/GroupsV2.GroupV2Card" } }, "totalResults": { "format": "int32", "type": "integer" }, "hasMore": { "type": "boolean" }, "query": { "$ref": "#/definitions/Queries.PagedQuery" }, "replacementContinuationToken": { "type": "string" }, "useTotalResults": { "description": "If useTotalResults is true, then totalResults represents an accurate count.\r\nIf False, it does not, and may be estimated/only the size of the current page.\r\nEither way, you should probably always only trust hasMore.\r\nThis 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.", "type": "boolean" } } }, "GroupsV2.GroupQuery": { "description": "NOTE: GroupQuery, as of Destiny 2, has essentially two totally different and incompatible \"modes\".\r\nIf you are querying for a group, you can pass any of the properties below.\r\nIf you are querying for a Clan, you MUST NOT pass any of the following properties (they must be null or undefined in your request, not just empty string/default values):\r\n- groupMemberCountFilter - localeFilter - tagText\r\nIf you pass these, you will get a useless InvalidParameters error.", "type": "object", "properties": { "name": { "type": "string" }, "groupType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.GroupType" } }, "creationDate": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.GroupDateRange" } }, "sortBy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.GroupSortBy" } }, "groupMemberCountFilter": { "format": "int32", "enum": [ "0", "1", "2", "3" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "All" }, { "numericValue": "1", "identifier": "OneToTen" }, { "numericValue": "2", "identifier": "ElevenToOneHundred" }, { "numericValue": "3", "identifier": "GreaterThanOneHundred" } ] }, "localeFilter": { "type": "string" }, "tagText": { "type": "string" }, "itemsPerPage": { "format": "int32", "type": "integer" }, "currentPage": { "format": "int32", "type": "integer" }, "requestContinuationToken": { "type": "string" } } }, "GroupsV2.GroupSortBy": { "format": "int32", "enum": [ "0", "1", "2", "3" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Name" }, { "numericValue": "1", "identifier": "Date" }, { "numericValue": "2", "identifier": "Popularity" }, { "numericValue": "3", "identifier": "Id" } ] }, "GroupsV2.GroupMemberCountFilter": { "format": "int32", "enum": [ "0", "1", "2", "3" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "All" }, { "numericValue": "1", "identifier": "OneToTen" }, { "numericValue": "2", "identifier": "ElevenToOneHundred" }, { "numericValue": "3", "identifier": "GreaterThanOneHundred" } ] }, "GroupsV2.GroupNameSearchRequest": { "type": "object", "properties": { "groupName": { "type": "string" }, "groupType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.GroupType" } } } }, "GroupsV2.GroupOptionalConversation": { "type": "object", "properties": { "groupId": { "format": "int64", "type": "integer" }, "conversationId": { "format": "int64", "type": "integer" }, "chatEnabled": { "type": "boolean" }, "chatName": { "type": "string" }, "chatSecurity": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.ChatSecuritySetting" } } } }, "GroupsV2.GroupEditAction": { "type": "object", "properties": { "name": { "type": "string" }, "about": { "type": "string" }, "motto": { "type": "string" }, "theme": { "type": "string" }, "avatarImageIndex": { "format": "int32", "type": "integer" }, "tags": { "type": "string" }, "isPublic": { "type": "boolean" }, "membershipOption": { "format": "int32", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Reviewed" }, { "numericValue": "1", "identifier": "Open" }, { "numericValue": "2", "identifier": "Closed" } ] }, "isPublicTopicAdminOnly": { "type": "boolean" }, "allowChat": { "type": "boolean" }, "chatSecurity": { "format": "int32", "enum": [ "0", "1" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Group" }, { "numericValue": "1", "identifier": "Admins" } ] }, "callsign": { "type": "string" }, "locale": { "type": "string" }, "homepage": { "format": "int32", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Wall" }, { "numericValue": "1", "identifier": "Forum" }, { "numericValue": "2", "identifier": "AllianceForum" } ] }, "enableInvitationMessagingForAdmins": { "type": "boolean" }, "defaultPublicity": { "format": "int32", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Public" }, { "numericValue": "1", "identifier": "Alliance" }, { "numericValue": "2", "identifier": "Private" } ] } } }, "GroupsV2.GroupOptionsEditAction": { "type": "object", "properties": { "InvitePermissionOverride": { "description": "Minimum Member Level allowed to invite new members to group\r\nAlways Allowed: Founder, Acting Founder\r\nTrue means admins have this power, false means they don't\r\nDefault is false for clans, true for groups.", "type": "boolean" }, "UpdateCulturePermissionOverride": { "description": "Minimum Member Level allowed to update group culture\r\nAlways Allowed: Founder, Acting Founder\r\nTrue means admins have this power, false means they don't\r\nDefault is false for clans, true for groups.", "type": "boolean" }, "HostGuidedGamePermissionOverride": { "format": "int32", "description": "Minimum Member Level allowed to host guided games\r\nAlways Allowed: Founder, Acting Founder, Admin\r\nAllowed Overrides: None, Member, Beginner\r\nDefault is Member for clans, None for groups, although this means nothing for groups.", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Beginner" }, { "numericValue": "2", "identifier": "Member" } ] }, "UpdateBannerPermissionOverride": { "description": "Minimum Member Level allowed to update banner\r\nAlways Allowed: Founder, Acting Founder\r\nTrue means admins have this power, false means they don't\r\nDefault is false for clans, true for groups.", "type": "boolean" }, "JoinLevel": { "format": "int32", "description": "Level to join a member at when accepting an invite, application, or joining an open clan\r\nDefault is Beginner.", "enum": [ "0", "1", "2", "3", "4", "5" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Beginner" }, { "numericValue": "2", "identifier": "Member" }, { "numericValue": "3", "identifier": "Admin" }, { "numericValue": "4", "identifier": "ActingFounder" }, { "numericValue": "5", "identifier": "Founder" } ] } } }, "GroupsV2.GroupOptionalConversationAddRequest": { "type": "object", "properties": { "chatName": { "type": "string" }, "chatSecurity": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.ChatSecuritySetting" } } } }, "GroupsV2.GroupOptionalConversationEditRequest": { "type": "object", "properties": { "chatEnabled": { "type": "boolean" }, "chatName": { "type": "string" }, "chatSecurity": { "format": "int32", "enum": [ "0", "1" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Group" }, { "numericValue": "1", "identifier": "Admins" } ] } } }, "SearchResultOfGroupMember": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/definitions/GroupsV2.GroupMember" } }, "totalResults": { "format": "int32", "type": "integer" }, "hasMore": { "type": "boolean" }, "query": { "$ref": "#/definitions/Queries.PagedQuery" }, "replacementContinuationToken": { "type": "string" }, "useTotalResults": { "description": "If useTotalResults is true, then totalResults represents an accurate count.\r\nIf False, it does not, and may be estimated/only the size of the current page.\r\nEither way, you should probably always only trust hasMore.\r\nThis 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.", "type": "boolean" } } }, "GroupsV2.GroupMemberLeaveResult": { "type": "object", "properties": { "group": { "$ref": "#/definitions/GroupsV2.GroupV2" }, "groupDeleted": { "type": "boolean" } } }, "GroupsV2.GroupBanRequest": { "type": "object", "properties": { "comment": { "type": "string" }, "length": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Ignores.IgnoreLength" } } } }, "Ignores.IgnoreLength": { "format": "int32", "enum": [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Week" }, { "numericValue": "2", "identifier": "TwoWeeks" }, { "numericValue": "3", "identifier": "ThreeWeeks" }, { "numericValue": "4", "identifier": "Month" }, { "numericValue": "5", "identifier": "ThreeMonths" }, { "numericValue": "6", "identifier": "SixMonths" }, { "numericValue": "7", "identifier": "Year" }, { "numericValue": "8", "identifier": "Forever" }, { "numericValue": "9", "identifier": "ThreeMinutes" }, { "numericValue": "10", "identifier": "Hour" }, { "numericValue": "11", "identifier": "ThirtyDays" } ] }, "GroupsV2.GroupBan": { "type": "object", "properties": { "groupId": { "format": "int64", "type": "integer" }, "lastModifiedBy": { "$ref": "#/definitions/User.UserInfoCard" }, "createdBy": { "$ref": "#/definitions/User.UserInfoCard" }, "dateBanned": { "format": "date-time", "type": "string" }, "dateExpires": { "format": "date-time", "type": "string" }, "comment": { "type": "string" }, "bungieNetUserInfo": { "$ref": "#/definitions/User.UserInfoCard" }, "destinyUserInfo": { "$ref": "#/definitions/GroupsV2.GroupUserInfoCard" } } }, "SearchResultOfGroupBan": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/definitions/GroupsV2.GroupBan" } }, "totalResults": { "format": "int32", "type": "integer" }, "hasMore": { "type": "boolean" }, "query": { "$ref": "#/definitions/Queries.PagedQuery" }, "replacementContinuationToken": { "type": "string" }, "useTotalResults": { "description": "If useTotalResults is true, then totalResults represents an accurate count.\r\nIf False, it does not, and may be estimated/only the size of the current page.\r\nEither way, you should probably always only trust hasMore.\r\nThis 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.", "type": "boolean" } } }, "GroupsV2.GroupMemberApplication": { "type": "object", "properties": { "groupId": { "format": "int64", "type": "integer" }, "creationDate": { "format": "date-time", "type": "string" }, "resolveState": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.GroupApplicationResolveState" } }, "resolveDate": { "format": "date-time", "type": "string" }, "resolvedByMembershipId": { "format": "int64", "type": "integer" }, "requestMessage": { "type": "string" }, "resolveMessage": { "type": "string" }, "destinyUserInfo": { "$ref": "#/definitions/GroupsV2.GroupUserInfoCard" }, "bungieNetUserInfo": { "$ref": "#/definitions/User.UserInfoCard" } } }, "GroupsV2.GroupApplicationResolveState": { "format": "int32", "enum": [ "0", "1", "2", "3" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Unresolved" }, { "numericValue": "1", "identifier": "Accepted" }, { "numericValue": "2", "identifier": "Denied" }, { "numericValue": "3", "identifier": "Rescinded" } ] }, "SearchResultOfGroupMemberApplication": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/definitions/GroupsV2.GroupMemberApplication" } }, "totalResults": { "format": "int32", "type": "integer" }, "hasMore": { "type": "boolean" }, "query": { "$ref": "#/definitions/Queries.PagedQuery" }, "replacementContinuationToken": { "type": "string" }, "useTotalResults": { "description": "If useTotalResults is true, then totalResults represents an accurate count.\r\nIf False, it does not, and may be estimated/only the size of the current page.\r\nEither way, you should probably always only trust hasMore.\r\nThis 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.", "type": "boolean" } } }, "Entities.EntityActionResult": { "type": "object", "properties": { "entityId": { "format": "int64", "type": "integer" }, "result": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } } } }, "Exceptions.PlatformErrorCodes": { "format": "int32", "enum": [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "89", "90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "100", "101", "102", "103", "104", "105", "106", "107", "108", "109", "110", "111", "112", "113", "115", "116", "117", "118", "119", "120", "121", "122", "123", "124", "125", "126", "127", "128", "129", "130", "131", "132", "133", "134", "135", "136", "137", "138", "139", "140", "141", "142", "143", "144", "145", "146", "147", "148", "149", "150", "151", "152", "153", "154", "155", "156", "157", "158", "159", "160", "161", "162", "163", "164", "165", "166", "167", "168", "169", "170", "171", "172", "173", "174", "175", "176", "177", "178", "179", "180", "181", "200", "201", "202", "203", "204", "205", "206", "207", "208", "209", "210", "211", "212", "213", "214", "215", "216", "217", "218", "219", "220", "221", "222", "223", "224", "225", "226", "227", "228", "229", "230", "231", "232", "233", "234", "235", "236", "237", "238", "239", "240", "241", "242", "243", "244", "300", "301", "302", "303", "304", "305", "306", "307", "308", "309", "310", "311", "312", "313", "400", "500", "501", "502", "503", "504", "505", "506", "507", "508", "509", "510", "511", "512", "513", "514", "515", "516", "517", "518", "519", "520", "521", "522", "523", "524", "525", "526", "527", "528", "529", "530", "531", "532", "533", "534", "535", "536", "537", "538", "539", "540", "541", "542", "543", "544", "555", "556", "557", "558", "559", "560", "561", "562", "563", "564", "565", "566", "567", "568", "569", "570", "571", "572", "573", "574", "575", "576", "577", "578", "579", "580", "581", "582", "583", "584", "585", "586", "587", "588", "589", "590", "591", "592", "593", "594", "595", "596", "601", "602", "603", "604", "605", "606", "607", "608", "609", "610", "611", "612", "613", "614", "615", "616", "617", "618", "619", "620", "621", "622", "623", "624", "625", "626", "627", "628", "629", "630", "631", "632", "633", "634", "635", "636", "637", "638", "639", "641", "642", "643", "644", "646", "647", "648", "649", "650", "651", "652", "653", "654", "655", "656", "657", "658", "659", "660", "661", "662", "663", "664", "665", "666", "667", "668", "669", "670", "671", "672", "673", "674", "675", "676", "677", "678", "679", "680", "681", "682", "683", "684", "685", "686", "687", "688", "689", "690", "691", "692", "693", "694", "695", "696", "697", "698", "699", "701", "702", "703", "704", "705", "706", "707", "750", "751", "752", "753", "754", "755", "801", "802", "803", "804", "805", "806", "807", "900", "901", "902", "903", "904", "905", "906", "907", "908", "909", "1000", "1001", "1002", "1003", "1004", "1005", "1006", "1007", "1008", "1009", "1010", "1100", "1204", "1205", "1218", "1223", "1224", "1225", "1226", "1227", "1229", "1230", "1231", "1232", "1233", "1234", "1235", "1236", "1237", "1238", "1239", "1240", "1241", "1242", "1300", "1301", "1302", "1303", "1304", "1305", "1306", "1307", "1308", "1309", "1310", "1311", "1312", "1313", "1314", "1315", "1316", "1317", "1318", "1400", "1401", "1402", "1403", "1404", "1405", "1500", "1501", "1502", "1600", "1601", "1602", "1603", "1604", "1605", "1606", "1607", "1608", "1609", "1610", "1611", "1612", "1613", "1614", "1615", "1616", "1617", "1618", "1619", "1620", "1621", "1622", "1623", "1624", "1625", "1626", "1627", "1628", "1629", "1630", "1631", "1632", "1633", "1634", "1635", "1636", "1637", "1638", "1639", "1640", "1641", "1642", "1643", "1644", "1645", "1646", "1647", "1648", "1649", "1650", "1651", "1652", "1653", "1654", "1655", "1656", "1657", "1658", "1659", "1660", "1661", "1662", "1663", "1664", "1665", "1666", "1667", "1668", "1669", "1670", "1671", "1672", "1673", "1674", "1675", "1676", "1677", "1678", "1679", "1680", "1681", "1682", "1683", "1684", "1685", "1686", "1687", "1688", "1800", "1801", "1802", "1803", "1804", "1805", "1806", "1900", "1901", "1902", "1903", "1904", "1905", "1906", "1907", "1908", "1910", "1911", "1912", "1913", "1914", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025", "2026", "2027", "2028", "2029", "2030", "2031", "2032", "2033", "2034", "2035", "2036", "2037", "2038", "2039", "2040", "2041", "2042", "2043", "2044", "2045", "2046", "2047", "2048", "2049", "2050", "2051", "2052", "2053", "2054", "2055", "2056", "2057", "2058", "2059", "2060", "2061", "2062", "2063", "2064", "2065", "2100", "2101", "2102", "2103", "2104", "2105", "2106", "2107", "2108", "2109", "2110", "2111", "2112", "2113", "2114", "2115", "2116", "2117", "2118", "2119", "2120", "2121", "2122", "2123", "2124", "2125", "2126", "2200", "2201", "2202", "2203", "2204", "2205", "2206", "2207", "2300", "2500", "2501", "2502", "2503", "2504", "2505", "2506", "2507", "2508", "2509", "2510", "2600", "2601", "2700", "2701", "2702", "2703", "2800", "2801", "2802", "2803", "2804", "2805", "2806", "2900", "2901", "2902", "2903", "3000", "3001", "3002", "3003", "3004", "3005", "3006", "3007", "3008", "3009", "3010", "3011", "3012", "3013", "3014", "3015", "3016", "3017", "3018", "3019", "3020", "3021", "3022", "3023", "3024", "3025", "3026", "3027", "3028", "3029", "3030", "3031", "3032", "3033", "3034", "3035", "3036", "3037", "3038", "3200", "3201", "3202", "3203", "3204", "3206", "3207", "3208", "3209", "3210", "3211", "3212", "3213", "3214", "3215", "3216", "3217", "3218", "3219", "3220", "3221", "3222", "3300", "3400", "3401", "3402", "3403", "3404", "3405", "3406", "3407", "3408", "3409", "3410", "3411", "3412", "3413", "3414", "3500", "3600", "3702", "3703", "3705", "3706", "3707", "3708", "3709", "3710", "3800", "3801", "3802", "3803", "3804", "3805", "3806", "3807", "3900", "3901", "3902", "3903", "3904", "3905", "3906", "3907", "3908", "3910", "3911", "4000", "4001", "4002", "4003", "4004", "4005", "4006", "4007", "4008", "4009" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Success" }, { "numericValue": "2", "identifier": "TransportException" }, { "numericValue": "3", "identifier": "UnhandledException" }, { "numericValue": "4", "identifier": "NotImplemented" }, { "numericValue": "5", "identifier": "SystemDisabled" }, { "numericValue": "6", "identifier": "FailedToLoadAvailableLocalesConfiguration" }, { "numericValue": "7", "identifier": "ParameterParseFailure" }, { "numericValue": "8", "identifier": "ParameterInvalidRange" }, { "numericValue": "9", "identifier": "BadRequest" }, { "numericValue": "10", "identifier": "AuthenticationInvalid" }, { "numericValue": "11", "identifier": "DataNotFound" }, { "numericValue": "12", "identifier": "InsufficientPrivileges" }, { "numericValue": "13", "identifier": "Duplicate" }, { "numericValue": "14", "identifier": "UnknownSqlResult" }, { "numericValue": "15", "identifier": "ValidationError" }, { "numericValue": "16", "identifier": "ValidationMissingFieldError" }, { "numericValue": "17", "identifier": "ValidationInvalidInputError" }, { "numericValue": "18", "identifier": "InvalidParameters" }, { "numericValue": "19", "identifier": "ParameterNotFound" }, { "numericValue": "20", "identifier": "UnhandledHttpException" }, { "numericValue": "21", "identifier": "NotFound" }, { "numericValue": "22", "identifier": "WebAuthModuleAsyncFailed" }, { "numericValue": "23", "identifier": "InvalidReturnValue" }, { "numericValue": "24", "identifier": "UserBanned" }, { "numericValue": "25", "identifier": "InvalidPostBody" }, { "numericValue": "26", "identifier": "MissingPostBody" }, { "numericValue": "27", "identifier": "ExternalServiceTimeout" }, { "numericValue": "28", "identifier": "ValidationLengthError" }, { "numericValue": "29", "identifier": "ValidationRangeError" }, { "numericValue": "30", "identifier": "JsonDeserializationError" }, { "numericValue": "31", "identifier": "ThrottleLimitExceeded" }, { "numericValue": "32", "identifier": "ValidationTagError" }, { "numericValue": "33", "identifier": "ValidationProfanityError" }, { "numericValue": "34", "identifier": "ValidationUrlFormatError" }, { "numericValue": "35", "identifier": "ThrottleLimitExceededMinutes" }, { "numericValue": "36", "identifier": "ThrottleLimitExceededMomentarily" }, { "numericValue": "37", "identifier": "ThrottleLimitExceededSeconds" }, { "numericValue": "38", "identifier": "ExternalServiceUnknown" }, { "numericValue": "39", "identifier": "ValidationWordLengthError" }, { "numericValue": "40", "identifier": "ValidationInvisibleUnicode" }, { "numericValue": "41", "identifier": "ValidationBadNames" }, { "numericValue": "42", "identifier": "ExternalServiceFailed" }, { "numericValue": "43", "identifier": "ServiceRetired" }, { "numericValue": "44", "identifier": "UnknownSqlException" }, { "numericValue": "45", "identifier": "UnsupportedLocale" }, { "numericValue": "46", "identifier": "InvalidPageNumber" }, { "numericValue": "47", "identifier": "MaximumPageSizeExceeded" }, { "numericValue": "48", "identifier": "ServiceUnsupported" }, { "numericValue": "49", "identifier": "ValidationMaximumUnicodeCombiningCharacters" }, { "numericValue": "50", "identifier": "ValidationMaximumSequentialCarriageReturns" }, { "numericValue": "51", "identifier": "PerEndpointRequestThrottleExceeded" }, { "numericValue": "52", "identifier": "AuthContextCacheAssertion" }, { "numericValue": "53", "identifier": "ExPlatformStringValidationError" }, { "numericValue": "54", "identifier": "PerApplicationThrottleExceeded" }, { "numericValue": "55", "identifier": "PerApplicationAnonymousThrottleExceeded" }, { "numericValue": "56", "identifier": "PerApplicationAuthenticatedThrottleExceeded" }, { "numericValue": "57", "identifier": "PerUserThrottleExceeded" }, { "numericValue": "58", "identifier": "PayloadSignatureVerificationFailure" }, { "numericValue": "59", "identifier": "InvalidServiceAuthContext" }, { "numericValue": "89", "identifier": "ObsoleteCredentialType" }, { "numericValue": "90", "identifier": "UnableToUnPairMobileApp" }, { "numericValue": "91", "identifier": "UnableToPairMobileApp" }, { "numericValue": "92", "identifier": "CannotUseMobileAuthWithNonMobileProvider" }, { "numericValue": "93", "identifier": "MissingDeviceCookie" }, { "numericValue": "94", "identifier": "FacebookTokenExpired" }, { "numericValue": "95", "identifier": "AuthTicketRequired" }, { "numericValue": "96", "identifier": "CookieContextRequired" }, { "numericValue": "97", "identifier": "UnknownAuthenticationError" }, { "numericValue": "98", "identifier": "BungieNetAccountCreationRequired" }, { "numericValue": "99", "identifier": "WebAuthRequired" }, { "numericValue": "100", "identifier": "ContentUnknownSqlResult" }, { "numericValue": "101", "identifier": "ContentNeedUniquePath" }, { "numericValue": "102", "identifier": "ContentSqlException" }, { "numericValue": "103", "identifier": "ContentNotFound" }, { "numericValue": "104", "identifier": "ContentSuccessWithTagAddFail" }, { "numericValue": "105", "identifier": "ContentSearchMissingParameters" }, { "numericValue": "106", "identifier": "ContentInvalidId" }, { "numericValue": "107", "identifier": "ContentPhysicalFileDeletionError" }, { "numericValue": "108", "identifier": "ContentPhysicalFileCreationError" }, { "numericValue": "109", "identifier": "ContentPerforceSubmissionError" }, { "numericValue": "110", "identifier": "ContentPerforceInitializationError" }, { "numericValue": "111", "identifier": "ContentDeploymentPackageNotReadyError" }, { "numericValue": "112", "identifier": "ContentUploadFailed" }, { "numericValue": "113", "identifier": "ContentTooManyResults" }, { "numericValue": "115", "identifier": "ContentInvalidState" }, { "numericValue": "116", "identifier": "ContentNavigationParentNotFound" }, { "numericValue": "117", "identifier": "ContentNavigationParentUpdateError" }, { "numericValue": "118", "identifier": "DeploymentPackageNotEditable" }, { "numericValue": "119", "identifier": "ContentValidationError" }, { "numericValue": "120", "identifier": "ContentPropertiesValidationError" }, { "numericValue": "121", "identifier": "ContentTypeNotFound" }, { "numericValue": "122", "identifier": "DeploymentPackageNotFound" }, { "numericValue": "123", "identifier": "ContentSearchInvalidParameters" }, { "numericValue": "124", "identifier": "ContentItemPropertyAggregationError" }, { "numericValue": "125", "identifier": "DeploymentPackageFileNotFound" }, { "numericValue": "126", "identifier": "ContentPerforceFileHistoryNotFound" }, { "numericValue": "127", "identifier": "ContentAssetZipCreationFailure" }, { "numericValue": "128", "identifier": "ContentAssetZipCreationBusy" }, { "numericValue": "129", "identifier": "ContentProjectNotFound" }, { "numericValue": "130", "identifier": "ContentFolderNotFound" }, { "numericValue": "131", "identifier": "ContentPackagesInconsistent" }, { "numericValue": "132", "identifier": "ContentPackagesInvalidState" }, { "numericValue": "133", "identifier": "ContentPackagesInconsistentType" }, { "numericValue": "134", "identifier": "ContentCannotDeletePackage" }, { "numericValue": "135", "identifier": "ContentLockedForChanges" }, { "numericValue": "136", "identifier": "ContentFileUploadFailed" }, { "numericValue": "137", "identifier": "ContentNotReviewed" }, { "numericValue": "138", "identifier": "ContentPermissionDenied" }, { "numericValue": "139", "identifier": "ContentInvalidExternalUrl" }, { "numericValue": "140", "identifier": "ContentExternalFileCannotBeImportedLocally" }, { "numericValue": "141", "identifier": "ContentTagSaveFailure" }, { "numericValue": "142", "identifier": "ContentPerforceUnmatchedFileError" }, { "numericValue": "143", "identifier": "ContentPerforceChangelistResultNotFound" }, { "numericValue": "144", "identifier": "ContentPerforceChangelistFileItemsNotFound" }, { "numericValue": "145", "identifier": "ContentPerforceInvalidRevisionError" }, { "numericValue": "146", "identifier": "ContentUnloadedSaveResult" }, { "numericValue": "147", "identifier": "ContentPropertyInvalidNumber" }, { "numericValue": "148", "identifier": "ContentPropertyInvalidUrl" }, { "numericValue": "149", "identifier": "ContentPropertyInvalidDate" }, { "numericValue": "150", "identifier": "ContentPropertyInvalidSet" }, { "numericValue": "151", "identifier": "ContentPropertyCannotDeserialize" }, { "numericValue": "152", "identifier": "ContentRegexValidationFailOnProperty" }, { "numericValue": "153", "identifier": "ContentMaxLengthFailOnProperty" }, { "numericValue": "154", "identifier": "ContentPropertyUnexpectedDeserializationError" }, { "numericValue": "155", "identifier": "ContentPropertyRequired" }, { "numericValue": "156", "identifier": "ContentCannotCreateFile" }, { "numericValue": "157", "identifier": "ContentInvalidMigrationFile" }, { "numericValue": "158", "identifier": "ContentMigrationAlteringProcessedItem" }, { "numericValue": "159", "identifier": "ContentPropertyDefinitionNotFound" }, { "numericValue": "160", "identifier": "ContentReviewDataChanged" }, { "numericValue": "161", "identifier": "ContentRollbackRevisionNotInPackage" }, { "numericValue": "162", "identifier": "ContentItemNotBasedOnLatestRevision" }, { "numericValue": "163", "identifier": "ContentUnauthorized" }, { "numericValue": "164", "identifier": "ContentCannotCreateDeploymentPackage" }, { "numericValue": "165", "identifier": "ContentUserNotFound" }, { "numericValue": "166", "identifier": "ContentLocalePermissionDenied" }, { "numericValue": "167", "identifier": "ContentInvalidLinkToInternalEnvironment" }, { "numericValue": "168", "identifier": "ContentInvalidBlacklistedContent" }, { "numericValue": "169", "identifier": "ContentMacroMalformedNoContentId" }, { "numericValue": "170", "identifier": "ContentMacroMalformedNoTemplateType" }, { "numericValue": "171", "identifier": "ContentIllegalBNetMembershipId" }, { "numericValue": "172", "identifier": "ContentLocaleDidNotMatchExpected" }, { "numericValue": "173", "identifier": "ContentBabelCallFailed" }, { "numericValue": "174", "identifier": "ContentEnglishPostLiveForbidden" }, { "numericValue": "175", "identifier": "ContentLocaleEditPermissionDenied" }, { "numericValue": "176", "identifier": "ContentStackUnknownError" }, { "numericValue": "177", "identifier": "ContentStackNotFound" }, { "numericValue": "178", "identifier": "ContentStackRateLimited" }, { "numericValue": "179", "identifier": "ContentStackTimeout" }, { "numericValue": "180", "identifier": "ContentStackServiceError" }, { "numericValue": "181", "identifier": "ContentStackDeserializationFailure" }, { "numericValue": "200", "identifier": "UserNonUniqueName" }, { "numericValue": "201", "identifier": "UserManualLinkingStepRequired" }, { "numericValue": "202", "identifier": "UserCreateUnknownSqlResult" }, { "numericValue": "203", "identifier": "UserCreateUnknownSqlException" }, { "numericValue": "204", "identifier": "UserMalformedMembershipId" }, { "numericValue": "205", "identifier": "UserCannotFindRequestedUser" }, { "numericValue": "206", "identifier": "UserCannotLoadAccountCredentialLinkInfo" }, { "numericValue": "207", "identifier": "UserInvalidMobileAppType" }, { "numericValue": "208", "identifier": "UserMissingMobilePairingInfo" }, { "numericValue": "209", "identifier": "UserCannotGenerateMobileKeyWhileUsingMobileCredential" }, { "numericValue": "210", "identifier": "UserGenerateMobileKeyExistingSlotCollision" }, { "numericValue": "211", "identifier": "UserDisplayNameMissingOrInvalid" }, { "numericValue": "212", "identifier": "UserCannotLoadAccountProfileData" }, { "numericValue": "213", "identifier": "UserCannotSaveUserProfileData" }, { "numericValue": "214", "identifier": "UserEmailMissingOrInvalid" }, { "numericValue": "215", "identifier": "UserTermsOfUseRequired" }, { "numericValue": "216", "identifier": "UserCannotCreateNewAccountWhileLoggedIn" }, { "numericValue": "217", "identifier": "UserCannotResolveCentralAccount" }, { "numericValue": "218", "identifier": "UserInvalidAvatar" }, { "numericValue": "219", "identifier": "UserMissingCreatedUserResult" }, { "numericValue": "220", "identifier": "UserCannotChangeUniqueNameYet" }, { "numericValue": "221", "identifier": "UserCannotChangeDisplayNameYet" }, { "numericValue": "222", "identifier": "UserCannotChangeEmail" }, { "numericValue": "223", "identifier": "UserUniqueNameMustStartWithLetter" }, { "numericValue": "224", "identifier": "UserNoLinkedAccountsSupportFriendListings" }, { "numericValue": "225", "identifier": "UserAcknowledgmentTableFull" }, { "numericValue": "226", "identifier": "UserCreationDestinyMembershipRequired" }, { "numericValue": "227", "identifier": "UserFriendsTokenNeedsRefresh" }, { "numericValue": "228", "identifier": "UserEmailValidationUnknown" }, { "numericValue": "229", "identifier": "UserEmailValidationLimit" }, { "numericValue": "230", "identifier": "TransactionEmailSendFailure" }, { "numericValue": "231", "identifier": "MailHookPermissionFailure" }, { "numericValue": "232", "identifier": "MailServiceRateLimit" }, { "numericValue": "233", "identifier": "UserEmailMustBeVerified" }, { "numericValue": "234", "identifier": "UserMustAllowCustomerServiceEmails" }, { "numericValue": "235", "identifier": "NonTransactionalEmailSendFailure" }, { "numericValue": "236", "identifier": "UnknownErrorSettingGlobalDisplayName" }, { "numericValue": "237", "identifier": "DuplicateGlobalDisplayName" }, { "numericValue": "238", "identifier": "ErrorRunningNameValidationChecks" }, { "numericValue": "239", "identifier": "ErrorDatabaseGlobalName" }, { "numericValue": "240", "identifier": "ErrorNoAvailableNameChanges" }, { "numericValue": "241", "identifier": "ErrorNameAlreadySetToInput" }, { "numericValue": "242", "identifier": "UserDisplayNameLessThanMinLength" }, { "numericValue": "243", "identifier": "UserDisplayNameGreaterThanMaxLength" }, { "numericValue": "244", "identifier": "UserDisplayNameContainsUnacceptableOrInvalidContent" }, { "numericValue": "300", "identifier": "MessagingUnknownError" }, { "numericValue": "301", "identifier": "MessagingSelfError" }, { "numericValue": "302", "identifier": "MessagingSendThrottle" }, { "numericValue": "303", "identifier": "MessagingNoBody" }, { "numericValue": "304", "identifier": "MessagingTooManyUsers" }, { "numericValue": "305", "identifier": "MessagingCanNotLeaveConversation" }, { "numericValue": "306", "identifier": "MessagingUnableToSend" }, { "numericValue": "307", "identifier": "MessagingDeletedUserForbidden" }, { "numericValue": "308", "identifier": "MessagingCannotDeleteExternalConversation" }, { "numericValue": "309", "identifier": "MessagingGroupChatDisabled" }, { "numericValue": "310", "identifier": "MessagingMustIncludeSelfInPrivateMessage" }, { "numericValue": "311", "identifier": "MessagingSenderIsBanned" }, { "numericValue": "312", "identifier": "MessagingGroupOptionalChatExceededMaximum" }, { "numericValue": "313", "identifier": "PrivateMessagingRequiresDestinyMembership" }, { "numericValue": "400", "identifier": "AddSurveyAnswersUnknownSqlException" }, { "numericValue": "500", "identifier": "ForumBodyCannotBeEmpty" }, { "numericValue": "501", "identifier": "ForumSubjectCannotBeEmptyOnTopicPost" }, { "numericValue": "502", "identifier": "ForumCannotLocateParentPost" }, { "numericValue": "503", "identifier": "ForumThreadLockedForReplies" }, { "numericValue": "504", "identifier": "ForumUnknownSqlResultDuringCreatePost" }, { "numericValue": "505", "identifier": "ForumUnknownTagCreationError" }, { "numericValue": "506", "identifier": "ForumUnknownSqlResultDuringTagItem" }, { "numericValue": "507", "identifier": "ForumUnknownExceptionCreatePost" }, { "numericValue": "508", "identifier": "ForumQuestionMustBeTopicPost" }, { "numericValue": "509", "identifier": "ForumExceptionDuringTagSearch" }, { "numericValue": "510", "identifier": "ForumExceptionDuringTopicRetrieval" }, { "numericValue": "511", "identifier": "ForumAliasedTagError" }, { "numericValue": "512", "identifier": "ForumCannotLocateThread" }, { "numericValue": "513", "identifier": "ForumUnknownExceptionEditPost" }, { "numericValue": "514", "identifier": "ForumCannotLocatePost" }, { "numericValue": "515", "identifier": "ForumUnknownExceptionGetOrCreateTags" }, { "numericValue": "516", "identifier": "ForumEditPermissionDenied" }, { "numericValue": "517", "identifier": "ForumUnknownSqlResultDuringTagIdRetrieval" }, { "numericValue": "518", "identifier": "ForumCannotGetRating" }, { "numericValue": "519", "identifier": "ForumUnknownExceptionGetRating" }, { "numericValue": "520", "identifier": "ForumRatingsAccessError" }, { "numericValue": "521", "identifier": "ForumRelatedPostAccessError" }, { "numericValue": "522", "identifier": "ForumLatestReplyAccessError" }, { "numericValue": "523", "identifier": "ForumUserStatusAccessError" }, { "numericValue": "524", "identifier": "ForumAuthorAccessError" }, { "numericValue": "525", "identifier": "ForumGroupAccessError" }, { "numericValue": "526", "identifier": "ForumUrlExpectedButMissing" }, { "numericValue": "527", "identifier": "ForumRepliesCannotBeEmpty" }, { "numericValue": "528", "identifier": "ForumRepliesCannotBeInDifferentGroups" }, { "numericValue": "529", "identifier": "ForumSubTopicCannotBeCreatedAtThisThreadLevel" }, { "numericValue": "530", "identifier": "ForumCannotCreateContentTopic" }, { "numericValue": "531", "identifier": "ForumTopicDoesNotExist" }, { "numericValue": "532", "identifier": "ForumContentCommentsNotAllowed" }, { "numericValue": "533", "identifier": "ForumUnknownSqlResultDuringEditPost" }, { "numericValue": "534", "identifier": "ForumUnknownSqlResultDuringGetPost" }, { "numericValue": "535", "identifier": "ForumPostValidationBadUrl" }, { "numericValue": "536", "identifier": "ForumBodyTooLong" }, { "numericValue": "537", "identifier": "ForumSubjectTooLong" }, { "numericValue": "538", "identifier": "ForumAnnouncementNotAllowed" }, { "numericValue": "539", "identifier": "ForumCannotShareOwnPost" }, { "numericValue": "540", "identifier": "ForumEditNoOp" }, { "numericValue": "541", "identifier": "ForumUnknownDatabaseErrorDuringGetPost" }, { "numericValue": "542", "identifier": "ForumExceeedMaximumRowLimit" }, { "numericValue": "543", "identifier": "ForumCannotSharePrivatePost" }, { "numericValue": "544", "identifier": "ForumCannotCrossPostBetweenGroups" }, { "numericValue": "555", "identifier": "ForumIncompatibleCategories" }, { "numericValue": "556", "identifier": "ForumCannotUseTheseCategoriesOnNonTopicPost" }, { "numericValue": "557", "identifier": "ForumCanOnlyDeleteTopics" }, { "numericValue": "558", "identifier": "ForumDeleteSqlException" }, { "numericValue": "559", "identifier": "ForumDeleteSqlUnknownResult" }, { "numericValue": "560", "identifier": "ForumTooManyTags" }, { "numericValue": "561", "identifier": "ForumCanOnlyRateTopics" }, { "numericValue": "562", "identifier": "ForumBannedPostsCannotBeEdited" }, { "numericValue": "563", "identifier": "ForumThreadRootIsBanned" }, { "numericValue": "564", "identifier": "ForumCannotUseOfficialTagCategoryAsTag" }, { "numericValue": "565", "identifier": "ForumAnswerCannotBeMadeOnCreatePost" }, { "numericValue": "566", "identifier": "ForumAnswerCannotBeMadeOnEditPost" }, { "numericValue": "567", "identifier": "ForumAnswerPostIdIsNotADirectReplyOfQuestion" }, { "numericValue": "568", "identifier": "ForumAnswerTopicIdIsNotAQuestion" }, { "numericValue": "569", "identifier": "ForumUnknownExceptionDuringMarkAnswer" }, { "numericValue": "570", "identifier": "ForumUnknownSqlResultDuringMarkAnswer" }, { "numericValue": "571", "identifier": "ForumCannotRateYourOwnPosts" }, { "numericValue": "572", "identifier": "ForumPollsMustBeTheFirstPostInTopic" }, { "numericValue": "573", "identifier": "ForumInvalidPollInput" }, { "numericValue": "574", "identifier": "ForumGroupAdminEditNonMember" }, { "numericValue": "575", "identifier": "ForumCannotEditModeratorEditedPost" }, { "numericValue": "576", "identifier": "ForumRequiresDestinyMembership" }, { "numericValue": "577", "identifier": "ForumUnexpectedError" }, { "numericValue": "578", "identifier": "ForumAgeLock" }, { "numericValue": "579", "identifier": "ForumMaxPages" }, { "numericValue": "580", "identifier": "ForumMaxPagesOldestFirst" }, { "numericValue": "581", "identifier": "ForumCannotApplyForumIdWithoutTags" }, { "numericValue": "582", "identifier": "ForumCannotApplyForumIdToNonTopics" }, { "numericValue": "583", "identifier": "ForumCannotDownvoteCommunityCreations" }, { "numericValue": "584", "identifier": "ForumTopicsMustHaveOfficialCategory" }, { "numericValue": "585", "identifier": "ForumRecruitmentTopicMalformed" }, { "numericValue": "586", "identifier": "ForumRecruitmentTopicNotFound" }, { "numericValue": "587", "identifier": "ForumRecruitmentTopicNoSlotsRemaining" }, { "numericValue": "588", "identifier": "ForumRecruitmentTopicKickBan" }, { "numericValue": "589", "identifier": "ForumRecruitmentTopicRequirementsNotMet" }, { "numericValue": "590", "identifier": "ForumRecruitmentTopicNoPlayers" }, { "numericValue": "591", "identifier": "ForumRecruitmentApproveFailMessageBan" }, { "numericValue": "592", "identifier": "ForumRecruitmentGlobalBan" }, { "numericValue": "593", "identifier": "ForumUserBannedFromThisTopic" }, { "numericValue": "594", "identifier": "ForumRecruitmentFireteamMembersOnly" }, { "numericValue": "595", "identifier": "ForumRequiresDestiny2Progress" }, { "numericValue": "596", "identifier": "ForumRequiresDestiny2EntitlementPurchase" }, { "numericValue": "601", "identifier": "GroupMembershipApplicationAlreadyResolved" }, { "numericValue": "602", "identifier": "GroupMembershipAlreadyApplied" }, { "numericValue": "603", "identifier": "GroupMembershipInsufficientPrivileges" }, { "numericValue": "604", "identifier": "GroupIdNotReturnedFromCreation" }, { "numericValue": "605", "identifier": "GroupSearchInvalidParameters" }, { "numericValue": "606", "identifier": "GroupMembershipPendingApplicationNotFound" }, { "numericValue": "607", "identifier": "GroupInvalidId" }, { "numericValue": "608", "identifier": "GroupInvalidMembershipId" }, { "numericValue": "609", "identifier": "GroupInvalidMembershipType" }, { "numericValue": "610", "identifier": "GroupMissingTags" }, { "numericValue": "611", "identifier": "GroupMembershipNotFound" }, { "numericValue": "612", "identifier": "GroupInvalidRating" }, { "numericValue": "613", "identifier": "GroupUserFollowingAccessError" }, { "numericValue": "614", "identifier": "GroupUserMembershipAccessError" }, { "numericValue": "615", "identifier": "GroupCreatorAccessError" }, { "numericValue": "616", "identifier": "GroupAdminAccessError" }, { "numericValue": "617", "identifier": "GroupPrivatePostNotViewable" }, { "numericValue": "618", "identifier": "GroupMembershipNotLoggedIn" }, { "numericValue": "619", "identifier": "GroupNotDeleted" }, { "numericValue": "620", "identifier": "GroupUnknownErrorUndeletingGroup" }, { "numericValue": "621", "identifier": "GroupDeleted" }, { "numericValue": "622", "identifier": "GroupNotFound" }, { "numericValue": "623", "identifier": "GroupMemberBanned" }, { "numericValue": "624", "identifier": "GroupMembershipClosed" }, { "numericValue": "625", "identifier": "GroupPrivatePostOverrideError" }, { "numericValue": "626", "identifier": "GroupNameTaken" }, { "numericValue": "627", "identifier": "GroupDeletionGracePeriodExpired" }, { "numericValue": "628", "identifier": "GroupCannotCheckBanStatus" }, { "numericValue": "629", "identifier": "GroupMaximumMembershipCountReached" }, { "numericValue": "630", "identifier": "NoDestinyAccountForClanPlatform" }, { "numericValue": "631", "identifier": "AlreadyRequestingMembershipForClanPlatform" }, { "numericValue": "632", "identifier": "AlreadyClanMemberOnPlatform" }, { "numericValue": "633", "identifier": "GroupJoinedCannotSetClanName" }, { "numericValue": "634", "identifier": "GroupLeftCannotClearClanName" }, { "numericValue": "635", "identifier": "GroupRelationshipRequestPending" }, { "numericValue": "636", "identifier": "GroupRelationshipRequestBlocked" }, { "numericValue": "637", "identifier": "GroupRelationshipRequestNotFound" }, { "numericValue": "638", "identifier": "GroupRelationshipBlockNotFound" }, { "numericValue": "639", "identifier": "GroupRelationshipNotFound" }, { "numericValue": "641", "identifier": "GroupAlreadyAllied" }, { "numericValue": "642", "identifier": "GroupAlreadyMember" }, { "numericValue": "643", "identifier": "GroupRelationshipAlreadyExists" }, { "numericValue": "644", "identifier": "InvalidGroupTypesForRelationshipRequest" }, { "numericValue": "646", "identifier": "GroupAtMaximumAlliances" }, { "numericValue": "647", "identifier": "GroupCannotSetClanOnlySettings" }, { "numericValue": "648", "identifier": "ClanCannotSetTwoDefaultPostTypes" }, { "numericValue": "649", "identifier": "GroupMemberInvalidMemberType" }, { "numericValue": "650", "identifier": "GroupInvalidPlatformType" }, { "numericValue": "651", "identifier": "GroupMemberInvalidSort" }, { "numericValue": "652", "identifier": "GroupInvalidResolveState" }, { "numericValue": "653", "identifier": "ClanAlreadyEnabledForPlatform" }, { "numericValue": "654", "identifier": "ClanNotEnabledForPlatform" }, { "numericValue": "655", "identifier": "ClanEnabledButCouldNotJoinNoAccount" }, { "numericValue": "656", "identifier": "ClanEnabledButCouldNotJoinAlreadyMember" }, { "numericValue": "657", "identifier": "ClanCannotJoinNoCredential" }, { "numericValue": "658", "identifier": "NoClanMembershipForPlatform" }, { "numericValue": "659", "identifier": "GroupToGroupFollowLimitReached" }, { "numericValue": "660", "identifier": "ChildGroupAlreadyInAlliance" }, { "numericValue": "661", "identifier": "OwnerGroupAlreadyInAlliance" }, { "numericValue": "662", "identifier": "AllianceOwnerCannotJoinAlliance" }, { "numericValue": "663", "identifier": "GroupNotInAlliance" }, { "numericValue": "664", "identifier": "ChildGroupCannotInviteToAlliance" }, { "numericValue": "665", "identifier": "GroupToGroupAlreadyFollowed" }, { "numericValue": "666", "identifier": "GroupToGroupNotFollowing" }, { "numericValue": "667", "identifier": "ClanMaximumMembershipReached" }, { "numericValue": "668", "identifier": "ClanNameNotValid" }, { "numericValue": "669", "identifier": "ClanNameNotValidError" }, { "numericValue": "670", "identifier": "AllianceOwnerNotDefined" }, { "numericValue": "671", "identifier": "AllianceChildNotDefined" }, { "numericValue": "672", "identifier": "ClanCultureIllegalCharacters" }, { "numericValue": "673", "identifier": "ClanTagIllegalCharacters" }, { "numericValue": "674", "identifier": "ClanRequiresInvitation" }, { "numericValue": "675", "identifier": "ClanMembershipClosed" }, { "numericValue": "676", "identifier": "ClanInviteAlreadyMember" }, { "numericValue": "677", "identifier": "GroupInviteAlreadyMember" }, { "numericValue": "678", "identifier": "GroupJoinApprovalRequired" }, { "numericValue": "679", "identifier": "ClanTagRequired" }, { "numericValue": "680", "identifier": "GroupNameCannotStartOrEndWithWhiteSpace" }, { "numericValue": "681", "identifier": "ClanCallsignCannotStartOrEndWithWhiteSpace" }, { "numericValue": "682", "identifier": "ClanMigrationFailed" }, { "numericValue": "683", "identifier": "ClanNotEnabledAlreadyMemberOfAnotherClan" }, { "numericValue": "684", "identifier": "GroupModerationNotPermittedOnNonMembers" }, { "numericValue": "685", "identifier": "ClanCreationInWorldServerFailed" }, { "numericValue": "686", "identifier": "ClanNotFound" }, { "numericValue": "687", "identifier": "ClanMembershipLevelDoesNotPermitThatAction" }, { "numericValue": "688", "identifier": "ClanMemberNotFound" }, { "numericValue": "689", "identifier": "ClanMissingMembershipApprovers" }, { "numericValue": "690", "identifier": "ClanInWrongStateForRequestedAction" }, { "numericValue": "691", "identifier": "ClanNameAlreadyUsed" }, { "numericValue": "692", "identifier": "ClanTooFewMembers" }, { "numericValue": "693", "identifier": "ClanInfoCannotBeWhitespace" }, { "numericValue": "694", "identifier": "GroupCultureThrottle" }, { "numericValue": "695", "identifier": "ClanTargetDisallowsInvites" }, { "numericValue": "696", "identifier": "ClanInvalidOperation" }, { "numericValue": "697", "identifier": "ClanFounderCannotLeaveWithoutAbdication" }, { "numericValue": "698", "identifier": "ClanNameReserved" }, { "numericValue": "699", "identifier": "ClanApplicantInClanSoNowInvited" }, { "numericValue": "701", "identifier": "ActivitiesUnknownException" }, { "numericValue": "702", "identifier": "ActivitiesParameterNull" }, { "numericValue": "703", "identifier": "ActivityCountsDiabled" }, { "numericValue": "704", "identifier": "ActivitySearchInvalidParameters" }, { "numericValue": "705", "identifier": "ActivityPermissionDenied" }, { "numericValue": "706", "identifier": "ShareAlreadyShared" }, { "numericValue": "707", "identifier": "ActivityLoggingDisabled" }, { "numericValue": "750", "identifier": "ClanRequiresExistingDestinyAccount" }, { "numericValue": "751", "identifier": "ClanNameRestricted" }, { "numericValue": "752", "identifier": "ClanCreationBan" }, { "numericValue": "753", "identifier": "ClanCreationTenureRequirementsNotMet" }, { "numericValue": "754", "identifier": "ClanFieldContainsReservedTerms" }, { "numericValue": "755", "identifier": "ClanFieldContainsInappropriateContent" }, { "numericValue": "801", "identifier": "ItemAlreadyFollowed" }, { "numericValue": "802", "identifier": "ItemNotFollowed" }, { "numericValue": "803", "identifier": "CannotFollowSelf" }, { "numericValue": "804", "identifier": "GroupFollowLimitExceeded" }, { "numericValue": "805", "identifier": "TagFollowLimitExceeded" }, { "numericValue": "806", "identifier": "UserFollowLimitExceeded" }, { "numericValue": "807", "identifier": "FollowUnsupportedEntityType" }, { "numericValue": "900", "identifier": "NoValidTagsInList" }, { "numericValue": "901", "identifier": "BelowMinimumSuggestionLength" }, { "numericValue": "902", "identifier": "CannotGetSuggestionsOnMultipleTagsSimultaneously" }, { "numericValue": "903", "identifier": "NotAValidPartialTag" }, { "numericValue": "904", "identifier": "TagSuggestionsUnknownSqlResult" }, { "numericValue": "905", "identifier": "TagsUnableToLoadPopularTagsFromDatabase" }, { "numericValue": "906", "identifier": "TagInvalid" }, { "numericValue": "907", "identifier": "TagNotFound" }, { "numericValue": "908", "identifier": "SingleTagExpected" }, { "numericValue": "909", "identifier": "TagsExceededMaximumPerItem" }, { "numericValue": "1000", "identifier": "IgnoreInvalidParameters" }, { "numericValue": "1001", "identifier": "IgnoreSqlException" }, { "numericValue": "1002", "identifier": "IgnoreErrorRetrievingGroupPermissions" }, { "numericValue": "1003", "identifier": "IgnoreErrorInsufficientPermission" }, { "numericValue": "1004", "identifier": "IgnoreErrorRetrievingItem" }, { "numericValue": "1005", "identifier": "IgnoreCannotIgnoreSelf" }, { "numericValue": "1006", "identifier": "IgnoreIllegalType" }, { "numericValue": "1007", "identifier": "IgnoreNotFound" }, { "numericValue": "1008", "identifier": "IgnoreUserGloballyIgnored" }, { "numericValue": "1009", "identifier": "IgnoreUserIgnored" }, { "numericValue": "1010", "identifier": "TargetUserIgnored" }, { "numericValue": "1100", "identifier": "NotificationSettingInvalid" }, { "numericValue": "1204", "identifier": "PsnApiExpiredAccessToken" }, { "numericValue": "1205", "identifier": "PSNExForbidden" }, { "numericValue": "1218", "identifier": "PSNExSystemDisabled" }, { "numericValue": "1223", "identifier": "PsnApiErrorCodeUnknown" }, { "numericValue": "1224", "identifier": "PsnApiErrorWebException" }, { "numericValue": "1225", "identifier": "PsnApiBadRequest" }, { "numericValue": "1226", "identifier": "PsnApiAccessTokenRequired" }, { "numericValue": "1227", "identifier": "PsnApiInvalidAccessToken" }, { "numericValue": "1229", "identifier": "PsnApiBannedUser" }, { "numericValue": "1230", "identifier": "PsnApiAccountUpgradeRequired" }, { "numericValue": "1231", "identifier": "PsnApiServiceTemporarilyUnavailable" }, { "numericValue": "1232", "identifier": "PsnApiServerBusy" }, { "numericValue": "1233", "identifier": "PsnApiUnderMaintenance" }, { "numericValue": "1234", "identifier": "PsnApiProfileUserNotFound" }, { "numericValue": "1235", "identifier": "PsnApiProfilePrivacyRestriction" }, { "numericValue": "1236", "identifier": "PsnApiProfileUnderMaintenance" }, { "numericValue": "1237", "identifier": "PsnApiAccountAttributeMissing" }, { "numericValue": "1238", "identifier": "PsnApiNoPermission" }, { "numericValue": "1239", "identifier": "PsnApiTargetUserBlocked" }, { "numericValue": "1240", "identifier": "PsnApiJwksMissing" }, { "numericValue": "1241", "identifier": "PsnApiJwtMalformedHeader" }, { "numericValue": "1242", "identifier": "PsnApiJwtMalformedPayload" }, { "numericValue": "1300", "identifier": "XblExSystemDisabled" }, { "numericValue": "1301", "identifier": "XblExUnknownError" }, { "numericValue": "1302", "identifier": "XblApiErrorWebException" }, { "numericValue": "1303", "identifier": "XblStsTokenInvalid" }, { "numericValue": "1304", "identifier": "XblStsMissingToken" }, { "numericValue": "1305", "identifier": "XblStsExpiredToken" }, { "numericValue": "1306", "identifier": "XblAccessToTheSandboxDenied" }, { "numericValue": "1307", "identifier": "XblMsaResponseMissing" }, { "numericValue": "1308", "identifier": "XblMsaAccessTokenExpired" }, { "numericValue": "1309", "identifier": "XblMsaInvalidRequest" }, { "numericValue": "1310", "identifier": "XblMsaFriendsRequireSignIn" }, { "numericValue": "1311", "identifier": "XblUserActionRequired" }, { "numericValue": "1312", "identifier": "XblParentalControls" }, { "numericValue": "1313", "identifier": "XblDeveloperAccount" }, { "numericValue": "1314", "identifier": "XblUserTokenExpired" }, { "numericValue": "1315", "identifier": "XblUserTokenInvalid" }, { "numericValue": "1316", "identifier": "XblOffline" }, { "numericValue": "1317", "identifier": "XblUnknownErrorCode" }, { "numericValue": "1318", "identifier": "XblMsaInvalidGrant" }, { "numericValue": "1400", "identifier": "ReportNotYetResolved" }, { "numericValue": "1401", "identifier": "ReportOverturnDoesNotChangeDecision" }, { "numericValue": "1402", "identifier": "ReportNotFound" }, { "numericValue": "1403", "identifier": "ReportAlreadyReported" }, { "numericValue": "1404", "identifier": "ReportInvalidResolution" }, { "numericValue": "1405", "identifier": "ReportNotAssignedToYou" }, { "numericValue": "1500", "identifier": "LegacyGameStatsSystemDisabled" }, { "numericValue": "1501", "identifier": "LegacyGameStatsUnknownError" }, { "numericValue": "1502", "identifier": "LegacyGameStatsMalformedSneakerNetCode" }, { "numericValue": "1600", "identifier": "DestinyAccountAcquisitionFailure" }, { "numericValue": "1601", "identifier": "DestinyAccountNotFound" }, { "numericValue": "1602", "identifier": "DestinyBuildStatsDatabaseError" }, { "numericValue": "1603", "identifier": "DestinyCharacterStatsDatabaseError" }, { "numericValue": "1604", "identifier": "DestinyPvPStatsDatabaseError" }, { "numericValue": "1605", "identifier": "DestinyPvEStatsDatabaseError" }, { "numericValue": "1606", "identifier": "DestinyGrimoireStatsDatabaseError" }, { "numericValue": "1607", "identifier": "DestinyStatsParameterMembershipTypeParseError" }, { "numericValue": "1608", "identifier": "DestinyStatsParameterMembershipIdParseError" }, { "numericValue": "1609", "identifier": "DestinyStatsParameterRangeParseError" }, { "numericValue": "1610", "identifier": "DestinyStringItemHashNotFound" }, { "numericValue": "1611", "identifier": "DestinyStringSetNotFound" }, { "numericValue": "1612", "identifier": "DestinyContentLookupNotFoundForKey" }, { "numericValue": "1613", "identifier": "DestinyContentItemNotFound" }, { "numericValue": "1614", "identifier": "DestinyContentSectionNotFound" }, { "numericValue": "1615", "identifier": "DestinyContentPropertyNotFound" }, { "numericValue": "1616", "identifier": "DestinyContentConfigNotFound" }, { "numericValue": "1617", "identifier": "DestinyContentPropertyBucketValueNotFound" }, { "numericValue": "1618", "identifier": "DestinyUnexpectedError" }, { "numericValue": "1619", "identifier": "DestinyInvalidAction" }, { "numericValue": "1620", "identifier": "DestinyCharacterNotFound" }, { "numericValue": "1621", "identifier": "DestinyInvalidFlag" }, { "numericValue": "1622", "identifier": "DestinyInvalidRequest" }, { "numericValue": "1623", "identifier": "DestinyItemNotFound" }, { "numericValue": "1624", "identifier": "DestinyInvalidCustomizationChoices" }, { "numericValue": "1625", "identifier": "DestinyVendorItemNotFound" }, { "numericValue": "1626", "identifier": "DestinyInternalError" }, { "numericValue": "1627", "identifier": "DestinyVendorNotFound" }, { "numericValue": "1628", "identifier": "DestinyRecentActivitiesDatabaseError" }, { "numericValue": "1629", "identifier": "DestinyItemBucketNotFound" }, { "numericValue": "1630", "identifier": "DestinyInvalidMembershipType" }, { "numericValue": "1631", "identifier": "DestinyVersionIncompatibility" }, { "numericValue": "1632", "identifier": "DestinyItemAlreadyInInventory" }, { "numericValue": "1633", "identifier": "DestinyBucketNotFound" }, { "numericValue": "1634", "identifier": "DestinyCharacterNotInTower", "description": "Note: This is one of those holdovers from Destiny 1. We didn't change the enum because I am lazy, but in Destiny 2 this would read \"DestinyCharacterNotInSocialSpace\"" }, { "numericValue": "1635", "identifier": "DestinyCharacterNotLoggedIn" }, { "numericValue": "1636", "identifier": "DestinyDefinitionsNotLoaded" }, { "numericValue": "1637", "identifier": "DestinyInventoryFull" }, { "numericValue": "1638", "identifier": "DestinyItemFailedLevelCheck" }, { "numericValue": "1639", "identifier": "DestinyItemFailedUnlockCheck" }, { "numericValue": "1640", "identifier": "DestinyItemUnequippable" }, { "numericValue": "1641", "identifier": "DestinyItemUniqueEquipRestricted" }, { "numericValue": "1642", "identifier": "DestinyNoRoomInDestination" }, { "numericValue": "1643", "identifier": "DestinyServiceFailure" }, { "numericValue": "1644", "identifier": "DestinyServiceRetired" }, { "numericValue": "1645", "identifier": "DestinyTransferFailed" }, { "numericValue": "1646", "identifier": "DestinyTransferNotFoundForSourceBucket" }, { "numericValue": "1647", "identifier": "DestinyUnexpectedResultInVendorTransferCheck" }, { "numericValue": "1648", "identifier": "DestinyUniquenessViolation" }, { "numericValue": "1649", "identifier": "DestinyErrorDeserializationFailure" }, { "numericValue": "1650", "identifier": "DestinyValidAccountTicketRequired" }, { "numericValue": "1651", "identifier": "DestinyShardRelayClientTimeout" }, { "numericValue": "1652", "identifier": "DestinyShardRelayProxyTimeout" }, { "numericValue": "1653", "identifier": "DestinyPGCRNotFound" }, { "numericValue": "1654", "identifier": "DestinyAccountMustBeOffline" }, { "numericValue": "1655", "identifier": "DestinyCanOnlyEquipInGame" }, { "numericValue": "1656", "identifier": "DestinyCannotPerformActionOnEquippedItem" }, { "numericValue": "1657", "identifier": "DestinyQuestAlreadyCompleted" }, { "numericValue": "1658", "identifier": "DestinyQuestAlreadyTracked" }, { "numericValue": "1659", "identifier": "DestinyTrackableQuestsFull" }, { "numericValue": "1660", "identifier": "DestinyItemNotTransferrable" }, { "numericValue": "1661", "identifier": "DestinyVendorPurchaseNotAllowed" }, { "numericValue": "1662", "identifier": "DestinyContentVersionMismatch" }, { "numericValue": "1663", "identifier": "DestinyItemActionForbidden" }, { "numericValue": "1664", "identifier": "DestinyRefundInvalid" }, { "numericValue": "1665", "identifier": "DestinyPrivacyRestriction" }, { "numericValue": "1666", "identifier": "DestinyActionInsufficientPrivileges" }, { "numericValue": "1667", "identifier": "DestinyInvalidClaimException" }, { "numericValue": "1668", "identifier": "DestinyLegacyPlatformRestricted" }, { "numericValue": "1669", "identifier": "DestinyLegacyPlatformInUse" }, { "numericValue": "1670", "identifier": "DestinyLegacyPlatformInaccessible" }, { "numericValue": "1671", "identifier": "DestinyCannotPerformActionAtThisLocation" }, { "numericValue": "1672", "identifier": "DestinyThrottledByGameServer" }, { "numericValue": "1673", "identifier": "DestinyItemNotTransferrableHasSideEffects" }, { "numericValue": "1674", "identifier": "DestinyItemLocked" }, { "numericValue": "1675", "identifier": "DestinyCannotAffordMaterialRequirements" }, { "numericValue": "1676", "identifier": "DestinyFailedPlugInsertionRules" }, { "numericValue": "1677", "identifier": "DestinySocketNotFound" }, { "numericValue": "1678", "identifier": "DestinySocketActionNotAllowed" }, { "numericValue": "1679", "identifier": "DestinySocketAlreadyHasPlug" }, { "numericValue": "1680", "identifier": "DestinyPlugItemNotAvailable" }, { "numericValue": "1681", "identifier": "DestinyCharacterLoggedInNotAllowed" }, { "numericValue": "1682", "identifier": "DestinyPublicAccountNotAccessible" }, { "numericValue": "1683", "identifier": "DestinyClaimsItemAlreadyClaimed" }, { "numericValue": "1684", "identifier": "DestinyClaimsNoInventorySpace" }, { "numericValue": "1685", "identifier": "DestinyClaimsRequiredLevelNotMet" }, { "numericValue": "1686", "identifier": "DestinyClaimsInvalidState" }, { "numericValue": "1687", "identifier": "DestinyNotEnoughRoomForMultipleRewards" }, { "numericValue": "1688", "identifier": "DestinyDirectBabelClientTimeout" }, { "numericValue": "1800", "identifier": "FbInvalidRequest" }, { "numericValue": "1801", "identifier": "FbRedirectMismatch" }, { "numericValue": "1802", "identifier": "FbAccessDenied" }, { "numericValue": "1803", "identifier": "FbUnsupportedResponseType" }, { "numericValue": "1804", "identifier": "FbInvalidScope" }, { "numericValue": "1805", "identifier": "FbUnsupportedGrantType" }, { "numericValue": "1806", "identifier": "FbInvalidGrant" }, { "numericValue": "1900", "identifier": "InvitationExpired" }, { "numericValue": "1901", "identifier": "InvitationUnknownType" }, { "numericValue": "1902", "identifier": "InvitationInvalidResponseStatus" }, { "numericValue": "1903", "identifier": "InvitationInvalidType" }, { "numericValue": "1904", "identifier": "InvitationAlreadyPending" }, { "numericValue": "1905", "identifier": "InvitationInsufficientPermission" }, { "numericValue": "1906", "identifier": "InvitationInvalidCode" }, { "numericValue": "1907", "identifier": "InvitationInvalidTargetState" }, { "numericValue": "1908", "identifier": "InvitationCannotBeReactivated" }, { "numericValue": "1910", "identifier": "InvitationNoRecipients" }, { "numericValue": "1911", "identifier": "InvitationGroupCannotSendToSelf" }, { "numericValue": "1912", "identifier": "InvitationTooManyRecipients" }, { "numericValue": "1913", "identifier": "InvitationInvalid" }, { "numericValue": "1914", "identifier": "InvitationNotFound" }, { "numericValue": "2000", "identifier": "TokenInvalid" }, { "numericValue": "2001", "identifier": "TokenBadFormat" }, { "numericValue": "2002", "identifier": "TokenAlreadyClaimed" }, { "numericValue": "2003", "identifier": "TokenAlreadyClaimedSelf" }, { "numericValue": "2004", "identifier": "TokenThrottling" }, { "numericValue": "2005", "identifier": "TokenUnknownRedemptionFailure" }, { "numericValue": "2006", "identifier": "TokenPurchaseClaimFailedAfterTokenClaimed" }, { "numericValue": "2007", "identifier": "TokenUserAlreadyOwnsOffer" }, { "numericValue": "2008", "identifier": "TokenInvalidOfferKey" }, { "numericValue": "2009", "identifier": "TokenEmailNotValidated" }, { "numericValue": "2010", "identifier": "TokenProvisioningBadVendorOrOffer" }, { "numericValue": "2011", "identifier": "TokenPurchaseHistoryUnknownError" }, { "numericValue": "2012", "identifier": "TokenThrottleStateUnknownError" }, { "numericValue": "2013", "identifier": "TokenUserAgeNotVerified" }, { "numericValue": "2014", "identifier": "TokenExceededOfferMaximum" }, { "numericValue": "2015", "identifier": "TokenNoAvailableUnlocks" }, { "numericValue": "2016", "identifier": "TokenMarketplaceInvalidPlatform" }, { "numericValue": "2017", "identifier": "TokenNoMarketplaceCodesFound" }, { "numericValue": "2018", "identifier": "TokenOfferNotAvailableForRedemption" }, { "numericValue": "2019", "identifier": "TokenUnlockPartialFailure" }, { "numericValue": "2020", "identifier": "TokenMarketplaceInvalidRegion" }, { "numericValue": "2021", "identifier": "TokenOfferExpired" }, { "numericValue": "2022", "identifier": "RAFExceededMaximumReferrals" }, { "numericValue": "2023", "identifier": "RAFDuplicateBond" }, { "numericValue": "2024", "identifier": "RAFNoValidVeteranDestinyMembershipsFound" }, { "numericValue": "2025", "identifier": "RAFNotAValidVeteranUser" }, { "numericValue": "2026", "identifier": "RAFCodeAlreadyClaimedOrNotFound" }, { "numericValue": "2027", "identifier": "RAFMismatchedDestinyMembershipType" }, { "numericValue": "2028", "identifier": "RAFUnableToAccessPurchaseHistory" }, { "numericValue": "2029", "identifier": "RAFUnableToCreateBond" }, { "numericValue": "2030", "identifier": "RAFUnableToFindBond" }, { "numericValue": "2031", "identifier": "RAFUnableToRemoveBond" }, { "numericValue": "2032", "identifier": "RAFCannotBondToSelf" }, { "numericValue": "2033", "identifier": "RAFInvalidPlatform" }, { "numericValue": "2034", "identifier": "RAFGenerateThrottled" }, { "numericValue": "2035", "identifier": "RAFUnableToCreateBondVersionMismatch" }, { "numericValue": "2036", "identifier": "RAFUnableToRemoveBondVersionMismatch" }, { "numericValue": "2037", "identifier": "RAFRedeemThrottled" }, { "numericValue": "2038", "identifier": "NoAvailableDiscountCode" }, { "numericValue": "2039", "identifier": "DiscountAlreadyClaimed" }, { "numericValue": "2040", "identifier": "DiscountClaimFailure" }, { "numericValue": "2041", "identifier": "DiscountConfigurationFailure" }, { "numericValue": "2042", "identifier": "DiscountGenerationFailure" }, { "numericValue": "2043", "identifier": "DiscountAlreadyExists" }, { "numericValue": "2044", "identifier": "TokenRequiresCredentialXuid" }, { "numericValue": "2045", "identifier": "TokenRequiresCredentialPsnid" }, { "numericValue": "2046", "identifier": "OfferRequired" }, { "numericValue": "2047", "identifier": "UnknownEververseHistoryError" }, { "numericValue": "2048", "identifier": "MissingEververseHistoryError" }, { "numericValue": "2049", "identifier": "BungieRewardEmailStateInvalid" }, { "numericValue": "2050", "identifier": "BungieRewardNotYetClaimable" }, { "numericValue": "2051", "identifier": "MissingOfferConfig" }, { "numericValue": "2052", "identifier": "RAFQuestEntitlementRequiresBnet" }, { "numericValue": "2053", "identifier": "RAFQuestEntitlementTransportFailure" }, { "numericValue": "2054", "identifier": "RAFQuestEntitlementUnknownFailure" }, { "numericValue": "2055", "identifier": "RAFVeteranRewardUnknownFailure" }, { "numericValue": "2056", "identifier": "RAFTooEarlyToCancelBond" }, { "numericValue": "2057", "identifier": "LoyaltyRewardAlreadyRedeemed" }, { "numericValue": "2058", "identifier": "UnclaimedLoyaltyRewardEntryNotFound" }, { "numericValue": "2059", "identifier": "PartnerOfferPartialFailure" }, { "numericValue": "2060", "identifier": "PartnerOfferAlreadyClaimed" }, { "numericValue": "2061", "identifier": "PartnerOfferSkuNotFound" }, { "numericValue": "2062", "identifier": "PartnerOfferSkuExpired" }, { "numericValue": "2063", "identifier": "PartnerOfferPermissionFailure" }, { "numericValue": "2064", "identifier": "PartnerOfferNoDestinyAccount" }, { "numericValue": "2065", "identifier": "PartnerOfferApplyDataNotFound" }, { "numericValue": "2100", "identifier": "ApiExceededMaxKeys" }, { "numericValue": "2101", "identifier": "ApiInvalidOrExpiredKey" }, { "numericValue": "2102", "identifier": "ApiKeyMissingFromRequest" }, { "numericValue": "2103", "identifier": "ApplicationDisabled" }, { "numericValue": "2104", "identifier": "ApplicationExceededMax" }, { "numericValue": "2105", "identifier": "ApplicationDisallowedByScope" }, { "numericValue": "2106", "identifier": "AuthorizationCodeInvalid" }, { "numericValue": "2107", "identifier": "OriginHeaderDoesNotMatchKey" }, { "numericValue": "2108", "identifier": "AccessNotPermittedByApplicationScope" }, { "numericValue": "2109", "identifier": "ApplicationNameIsTaken" }, { "numericValue": "2110", "identifier": "RefreshTokenNotYetValid" }, { "numericValue": "2111", "identifier": "AccessTokenHasExpired" }, { "numericValue": "2112", "identifier": "ApplicationTokenFormatNotValid" }, { "numericValue": "2113", "identifier": "ApplicationNotConfiguredForBungieAuth" }, { "numericValue": "2114", "identifier": "ApplicationNotConfiguredForOAuth" }, { "numericValue": "2115", "identifier": "OAuthAccessTokenExpired" }, { "numericValue": "2116", "identifier": "ApplicationTokenKeyIdDoesNotExist" }, { "numericValue": "2117", "identifier": "ProvidedTokenNotValidRefreshToken" }, { "numericValue": "2118", "identifier": "RefreshTokenExpired" }, { "numericValue": "2119", "identifier": "AuthorizationRecordInvalid" }, { "numericValue": "2120", "identifier": "TokenPreviouslyRevoked" }, { "numericValue": "2121", "identifier": "TokenInvalidMembership" }, { "numericValue": "2122", "identifier": "AuthorizationCodeStale" }, { "numericValue": "2123", "identifier": "AuthorizationRecordExpired" }, { "numericValue": "2124", "identifier": "AuthorizationRecordRevoked" }, { "numericValue": "2125", "identifier": "AuthorizationRecordInactiveApiKey" }, { "numericValue": "2126", "identifier": "AuthorizationRecordApiKeyMatching" }, { "numericValue": "2200", "identifier": "PartnershipInvalidType" }, { "numericValue": "2201", "identifier": "PartnershipValidationError" }, { "numericValue": "2202", "identifier": "PartnershipValidationTimeout" }, { "numericValue": "2203", "identifier": "PartnershipAccessFailure" }, { "numericValue": "2204", "identifier": "PartnershipAccountInvalid" }, { "numericValue": "2205", "identifier": "PartnershipGetAccountInfoFailure" }, { "numericValue": "2206", "identifier": "PartnershipDisabled" }, { "numericValue": "2207", "identifier": "PartnershipAlreadyExists" }, { "numericValue": "2300", "identifier": "CommunityStreamingUnavailable" }, { "numericValue": "2500", "identifier": "TwitchNotLinked" }, { "numericValue": "2501", "identifier": "TwitchAccountNotFound" }, { "numericValue": "2502", "identifier": "TwitchCouldNotLoadDestinyInfo" }, { "numericValue": "2503", "identifier": "TwitchCouldNotRegisterUser" }, { "numericValue": "2504", "identifier": "TwitchCouldNotUnregisterUser" }, { "numericValue": "2505", "identifier": "TwitchRequiresRelinking" }, { "numericValue": "2506", "identifier": "TwitchNoPlatformChosen" }, { "numericValue": "2507", "identifier": "TwitchDropHistoryPermissionFailure" }, { "numericValue": "2508", "identifier": "TwitchDropsRepairPartialFailure" }, { "numericValue": "2509", "identifier": "TwitchNotAuthorized" }, { "numericValue": "2510", "identifier": "TwitchUnknownAuthorizationFailure" }, { "numericValue": "2600", "identifier": "TrendingCategoryNotFound" }, { "numericValue": "2601", "identifier": "TrendingEntryTypeNotSupported" }, { "numericValue": "2700", "identifier": "ReportOffenderNotInPgcr" }, { "numericValue": "2701", "identifier": "ReportRequestorNotInPgcr" }, { "numericValue": "2702", "identifier": "ReportSubmissionFailed" }, { "numericValue": "2703", "identifier": "ReportCannotReportSelf" }, { "numericValue": "2800", "identifier": "AwaTypeDisabled" }, { "numericValue": "2801", "identifier": "AwaTooManyPendingRequests" }, { "numericValue": "2802", "identifier": "AwaTheFeatureRequiresARegisteredDevice" }, { "numericValue": "2803", "identifier": "AwaRequestWasUnansweredForTooLong" }, { "numericValue": "2804", "identifier": "AwaWriteRequestMissingOrInvalidToken" }, { "numericValue": "2805", "identifier": "AwaWriteRequestTokenExpired" }, { "numericValue": "2806", "identifier": "AwaWriteRequestTokenUsageLimitReached" }, { "numericValue": "2900", "identifier": "SteamWebApiError" }, { "numericValue": "2901", "identifier": "SteamWebNullResponseError" }, { "numericValue": "2902", "identifier": "SteamAccountRequired" }, { "numericValue": "2903", "identifier": "SteamNotAuthorized" }, { "numericValue": "3000", "identifier": "ClanFireteamNotFound" }, { "numericValue": "3001", "identifier": "ClanFireteamAddNoAlternatesForImmediate" }, { "numericValue": "3002", "identifier": "ClanFireteamFull" }, { "numericValue": "3003", "identifier": "ClanFireteamAltFull" }, { "numericValue": "3004", "identifier": "ClanFireteamBlocked" }, { "numericValue": "3005", "identifier": "ClanFireteamPlayerEntryNotFound" }, { "numericValue": "3006", "identifier": "ClanFireteamPermissions" }, { "numericValue": "3007", "identifier": "ClanFireteamInvalidPlatform" }, { "numericValue": "3008", "identifier": "ClanFireteamCannotAdjustSlotCount" }, { "numericValue": "3009", "identifier": "ClanFireteamInvalidPlayerPlatform" }, { "numericValue": "3010", "identifier": "ClanFireteamNotReadyForInvitesNotEnoughPlayers" }, { "numericValue": "3011", "identifier": "ClanFireteamGameInvitesNotSupportForPlatform" }, { "numericValue": "3012", "identifier": "ClanFireteamPlatformInvitePreqFailure" }, { "numericValue": "3013", "identifier": "ClanFireteamInvalidAuthContext" }, { "numericValue": "3014", "identifier": "ClanFireteamInvalidAuthProviderPsn" }, { "numericValue": "3015", "identifier": "ClanFireteamPs4SessionFull" }, { "numericValue": "3016", "identifier": "ClanFireteamInvalidAuthToken" }, { "numericValue": "3017", "identifier": "ClanFireteamScheduledFireteamsDisabled" }, { "numericValue": "3018", "identifier": "ClanFireteamNotReadyForInvitesNotScheduledYet" }, { "numericValue": "3019", "identifier": "ClanFireteamNotReadyForInvitesClosed" }, { "numericValue": "3020", "identifier": "ClanFireteamScheduledFireteamsRequireAdminPermissions" }, { "numericValue": "3021", "identifier": "ClanFireteamNonPublicMustHaveClan" }, { "numericValue": "3022", "identifier": "ClanFireteamPublicCreationRestriction" }, { "numericValue": "3023", "identifier": "ClanFireteamAlreadyJoined" }, { "numericValue": "3024", "identifier": "ClanFireteamScheduledFireteamsRange" }, { "numericValue": "3025", "identifier": "ClanFireteamPublicCreationRestrictionExtended" }, { "numericValue": "3026", "identifier": "ClanFireteamExpired" }, { "numericValue": "3027", "identifier": "ClanFireteamInvalidAuthProvider" }, { "numericValue": "3028", "identifier": "ClanFireteamInvalidAuthProviderXuid" }, { "numericValue": "3029", "identifier": "ClanFireteamThrottle" }, { "numericValue": "3030", "identifier": "ClanFireteamTooManyOpenScheduledFireteams" }, { "numericValue": "3031", "identifier": "ClanFireteamCannotReopenScheduledFireteams" }, { "numericValue": "3032", "identifier": "ClanFireteamJoinNoAccountSpecified" }, { "numericValue": "3033", "identifier": "ClanFireteamMinDestiny2ProgressForCreation" }, { "numericValue": "3034", "identifier": "ClanFireteamMinDestiny2ProgressForJoin" }, { "numericValue": "3035", "identifier": "ClanFireteamSMSOrPurchaseRequiredCreate" }, { "numericValue": "3036", "identifier": "ClanFireteamPurchaseRequiredCreate" }, { "numericValue": "3037", "identifier": "ClanFireteamSMSOrPurchaseRequiredJoin" }, { "numericValue": "3038", "identifier": "ClanFireteamPurchaseRequiredJoin" }, { "numericValue": "3200", "identifier": "CrossSaveOverriddenAccountNotFound" }, { "numericValue": "3201", "identifier": "CrossSaveTooManyOverriddenPlatforms" }, { "numericValue": "3202", "identifier": "CrossSaveNoOverriddenPlatforms" }, { "numericValue": "3203", "identifier": "CrossSavePrimaryAccountNotFound" }, { "numericValue": "3204", "identifier": "CrossSaveRequestInvalid" }, { "numericValue": "3206", "identifier": "CrossSaveBungieAccountValidationFailure" }, { "numericValue": "3207", "identifier": "CrossSaveOverriddenPlatformNotAllowed" }, { "numericValue": "3208", "identifier": "CrossSaveThresholdExceeded" }, { "numericValue": "3209", "identifier": "CrossSaveIncompatibleMembershipType" }, { "numericValue": "3210", "identifier": "CrossSaveCouldNotFindLinkedAccountForMembershipType" }, { "numericValue": "3211", "identifier": "CrossSaveCouldNotCreateDestinyProfileForMembershipType" }, { "numericValue": "3212", "identifier": "CrossSaveErrorCreatingDestinyProfileForMembershipType" }, { "numericValue": "3213", "identifier": "CrossSaveCannotOverrideSelf" }, { "numericValue": "3214", "identifier": "CrossSaveRecentSilverPurchase" }, { "numericValue": "3215", "identifier": "CrossSaveSilverBalanceNegative" }, { "numericValue": "3216", "identifier": "CrossSaveAccountNotAuthenticated" }, { "numericValue": "3217", "identifier": "ErrorOneAccountAlreadyActive" }, { "numericValue": "3218", "identifier": "ErrorOneAccountDestinyRestriction" }, { "numericValue": "3219", "identifier": "CrossSaveMustMigrateToSteam" }, { "numericValue": "3220", "identifier": "CrossSaveSteamAlreadyPaired" }, { "numericValue": "3221", "identifier": "CrossSaveCannotPairJustSteamAndBlizzard" }, { "numericValue": "3222", "identifier": "CrossSaveCannotPairSteamAloneBeforeShadowkeep" }, { "numericValue": "3300", "identifier": "AuthVerificationNotLinkedToAccount" }, { "numericValue": "3400", "identifier": "PCMigrationMissingBlizzard" }, { "numericValue": "3401", "identifier": "PCMigrationMissingSteam" }, { "numericValue": "3402", "identifier": "PCMigrationInvalidBlizzard" }, { "numericValue": "3403", "identifier": "PCMigrationInvalidSteam" }, { "numericValue": "3404", "identifier": "PCMigrationUnknownFailure" }, { "numericValue": "3405", "identifier": "PCMigrationUnknownException" }, { "numericValue": "3406", "identifier": "PCMigrationNotLinked" }, { "numericValue": "3407", "identifier": "PCMigrationAccountsAlreadyUsed" }, { "numericValue": "3408", "identifier": "PCMigrationStepFailed" }, { "numericValue": "3409", "identifier": "PCMigrationInvalidBlizzardCrossSaveState" }, { "numericValue": "3410", "identifier": "PCMigrationDestinationBanned" }, { "numericValue": "3411", "identifier": "PCMigrationDestinyFailure" }, { "numericValue": "3412", "identifier": "PCMigrationSilverTransferFailed" }, { "numericValue": "3413", "identifier": "PCMigrationEntitlementTransferFailed" }, { "numericValue": "3414", "identifier": "PCMigrationCannotStompClanFounder" }, { "numericValue": "3500", "identifier": "UnsupportedBrowser" }, { "numericValue": "3600", "identifier": "StadiaAccountRequired" }, { "numericValue": "3702", "identifier": "ErrorPhoneValidationTooManyUses" }, { "numericValue": "3703", "identifier": "ErrorPhoneValidationNoAssociatedPhone" }, { "numericValue": "3705", "identifier": "ErrorPhoneValidationCodeInvalid" }, { "numericValue": "3706", "identifier": "ErrorPhoneValidationBanned" }, { "numericValue": "3707", "identifier": "ErrorPhoneValidationCodeTooRecentlySent" }, { "numericValue": "3708", "identifier": "ErrorPhoneValidationCodeExpired" }, { "numericValue": "3709", "identifier": "ErrorPhoneValidationInvalidNumberType" }, { "numericValue": "3710", "identifier": "ErrorPhoneValidationCodeTooRecentlyChecked" }, { "numericValue": "3800", "identifier": "ApplePushErrorUnknown" }, { "numericValue": "3801", "identifier": "ApplePushErrorNull" }, { "numericValue": "3802", "identifier": "ApplePushErrorTimeout" }, { "numericValue": "3803", "identifier": "ApplePushBadRequest" }, { "numericValue": "3804", "identifier": "ApplePushFailedAuth" }, { "numericValue": "3805", "identifier": "ApplePushThrottled" }, { "numericValue": "3806", "identifier": "ApplePushServiceUnavailable" }, { "numericValue": "3807", "identifier": "NotAnImageOrVideo" }, { "numericValue": "3900", "identifier": "ErrorBungieFriendsBlockFailed" }, { "numericValue": "3901", "identifier": "ErrorBungieFriendsAutoReject" }, { "numericValue": "3902", "identifier": "ErrorBungieFriendsNoRequestFound" }, { "numericValue": "3903", "identifier": "ErrorBungieFriendsAlreadyFriends" }, { "numericValue": "3904", "identifier": "ErrorBungieFriendsUnableToRemoveRequest" }, { "numericValue": "3905", "identifier": "ErrorBungieFriendsUnableToRemove" }, { "numericValue": "3906", "identifier": "ErrorBungieFriendsIdenticalSourceTarget" }, { "numericValue": "3907", "identifier": "ErrorBungieFriendsSelf" }, { "numericValue": "3908", "identifier": "ErrorBungieBlockSelf" }, { "numericValue": "3910", "identifier": "ErrorBungieFriendsListFull" }, { "numericValue": "3911", "identifier": "ErrorBungieBlockListFull" }, { "numericValue": "4000", "identifier": "ErrorEgsUnknown" }, { "numericValue": "4001", "identifier": "ErrorEgsBadRequest" }, { "numericValue": "4002", "identifier": "ErrorEgsNotAuthorized" }, { "numericValue": "4003", "identifier": "ErrorEgsForbidden" }, { "numericValue": "4004", "identifier": "ErrorEgsAccountNotFound" }, { "numericValue": "4005", "identifier": "ErrorEgsWebException" }, { "numericValue": "4006", "identifier": "ErrorEgsUnavailable" }, { "numericValue": "4007", "identifier": "ErrorEgsJwksMissing" }, { "numericValue": "4008", "identifier": "ErrorEgsJwtMalformedHeader" }, { "numericValue": "4009", "identifier": "ErrorEgsJwtMalformedPayload" } ] }, "GroupsV2.GroupApplicationRequest": { "type": "object", "properties": { "message": { "type": "string" } } }, "GroupsV2.GroupApplicationListRequest": { "type": "object", "properties": { "memberships": { "type": "array", "items": { "$ref": "#/definitions/User.UserMembership" } }, "message": { "type": "string" } } }, "GroupsV2.GroupsForMemberFilter": { "format": "int32", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "All" }, { "numericValue": "1", "identifier": "Founded" }, { "numericValue": "2", "identifier": "NonFounded" } ] }, "GroupsV2.GroupMembershipBase": { "type": "object", "properties": { "group": { "$ref": "#/definitions/GroupsV2.GroupV2" } } }, "GroupsV2.GroupMembership": { "type": "object", "properties": { "member": { "$ref": "#/definitions/GroupsV2.GroupMember" }, "group": { "$ref": "#/definitions/GroupsV2.GroupV2" } } }, "SearchResultOfGroupMembership": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/definitions/GroupsV2.GroupMembership" } }, "totalResults": { "format": "int32", "type": "integer" }, "hasMore": { "type": "boolean" }, "query": { "$ref": "#/definitions/Queries.PagedQuery" }, "replacementContinuationToken": { "type": "string" }, "useTotalResults": { "description": "If useTotalResults is true, then totalResults represents an accurate count.\r\nIf False, it does not, and may be estimated/only the size of the current page.\r\nEither way, you should probably always only trust hasMore.\r\nThis 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.", "type": "boolean" } } }, "GroupsV2.GroupMembershipSearchResponse": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/definitions/GroupsV2.GroupMembership" } }, "totalResults": { "format": "int32", "type": "integer" }, "hasMore": { "type": "boolean" }, "query": { "$ref": "#/definitions/Queries.PagedQuery" }, "replacementContinuationToken": { "type": "string" }, "useTotalResults": { "description": "If useTotalResults is true, then totalResults represents an accurate count.\r\nIf False, it does not, and may be estimated/only the size of the current page.\r\nEither way, you should probably always only trust hasMore.\r\nThis 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.", "type": "boolean" } } }, "GroupsV2.GetGroupsForMemberResponse": { "type": "object", "properties": { "areAllMembershipsInactive": { "description": "A convenience property that indicates if every membership this user has that is a part of this group are part of an account that is considered inactive - for example, overridden accounts in Cross Save.\r\n The key is the Group ID for the group being checked, and the value is true if the users' memberships for that group are all inactive.", "type": "object", "additionalProperties": { "type": "boolean" } }, "results": { "type": "array", "items": { "$ref": "#/definitions/GroupsV2.GroupMembership" } }, "totalResults": { "format": "int32", "type": "integer" }, "hasMore": { "type": "boolean" }, "query": { "$ref": "#/definitions/Queries.PagedQuery" }, "replacementContinuationToken": { "type": "string" }, "useTotalResults": { "description": "If useTotalResults is true, then totalResults represents an accurate count.\r\nIf False, it does not, and may be estimated/only the size of the current page.\r\nEither way, you should probably always only trust hasMore.\r\nThis 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.", "type": "boolean" } } }, "GroupsV2.GroupPotentialMembership": { "type": "object", "properties": { "member": { "$ref": "#/definitions/GroupsV2.GroupPotentialMember" }, "group": { "$ref": "#/definitions/GroupsV2.GroupV2" } } }, "SearchResultOfGroupPotentialMembership": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/definitions/GroupsV2.GroupPotentialMembership" } }, "totalResults": { "format": "int32", "type": "integer" }, "hasMore": { "type": "boolean" }, "query": { "$ref": "#/definitions/Queries.PagedQuery" }, "replacementContinuationToken": { "type": "string" }, "useTotalResults": { "description": "If useTotalResults is true, then totalResults represents an accurate count.\r\nIf False, it does not, and may be estimated/only the size of the current page.\r\nEither way, you should probably always only trust hasMore.\r\nThis 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.", "type": "boolean" } } }, "GroupsV2.GroupPotentialMembershipSearchResponse": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/definitions/GroupsV2.GroupPotentialMembership" } }, "totalResults": { "format": "int32", "type": "integer" }, "hasMore": { "type": "boolean" }, "query": { "$ref": "#/definitions/Queries.PagedQuery" }, "replacementContinuationToken": { "type": "string" }, "useTotalResults": { "description": "If useTotalResults is true, then totalResults represents an accurate count.\r\nIf False, it does not, and may be estimated/only the size of the current page.\r\nEither way, you should probably always only trust hasMore.\r\nThis 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.", "type": "boolean" } } }, "GroupsV2.GroupApplicationResponse": { "type": "object", "properties": { "resolution": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GroupsV2.GroupApplicationResolveState" } } } }, "Tokens.PartnerOfferClaimRequest": { "type": "object", "properties": { "PartnerOfferId": { "type": "string" }, "BungieNetMembershipId": { "format": "int64", "type": "integer" }, "TransactionId": { "type": "string" } } }, "Tokens.PartnerOfferSkuHistoryResponse": { "type": "object", "properties": { "SkuIdentifier": { "type": "string" }, "LocalizedName": { "type": "string" }, "LocalizedDescription": { "type": "string" }, "ClaimDate": { "format": "date-time", "type": "string" }, "AllOffersApplied": { "type": "boolean" }, "TransactionId": { "type": "string" }, "SkuOffers": { "type": "array", "items": { "$ref": "#/definitions/Tokens.PartnerOfferHistoryResponse" } } } }, "Tokens.PartnerOfferHistoryResponse": { "type": "object", "properties": { "PartnerOfferKey": { "type": "string" }, "MembershipId": { "format": "int64", "type": "integer" }, "MembershipType": { "format": "int32", "enum": [ "0", "1", "2", "3", "4", "5", "6", "10", "254", "-1" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "TigerXbox" }, { "numericValue": "2", "identifier": "TigerPsn" }, { "numericValue": "3", "identifier": "TigerSteam" }, { "numericValue": "4", "identifier": "TigerBlizzard" }, { "numericValue": "5", "identifier": "TigerStadia" }, { "numericValue": "6", "identifier": "TigerEgs" }, { "numericValue": "10", "identifier": "TigerDemon" }, { "numericValue": "254", "identifier": "BungieNext" }, { "numericValue": "-1", "identifier": "All", "description": "\"All\" is only valid for searching capabilities: you need to pass the actual matching BungieMembershipType for any query where you pass a known membershipId." } ] }, "LocalizedName": { "type": "string" }, "LocalizedDescription": { "type": "string" }, "IsConsumable": { "type": "boolean" }, "QuantityApplied": { "format": "int32", "type": "integer" }, "ApplyDate": { "format": "date-time", "type": "string" } } }, "Tokens.PartnerRewardHistoryResponse": { "type": "object", "properties": { "PartnerOffers": { "type": "array", "items": { "$ref": "#/definitions/Tokens.PartnerOfferSkuHistoryResponse" } }, "TwitchDrops": { "type": "array", "items": { "$ref": "#/definitions/Tokens.TwitchDropHistoryResponse" } } } }, "Tokens.TwitchDropHistoryResponse": { "type": "object", "properties": { "Title": { "type": "string" }, "Description": { "type": "string" }, "CreatedAt": { "format": "date-time", "type": "string" }, "ClaimState": { "format": "byte", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Claimed" }, { "numericValue": "1", "identifier": "Applied" }, { "numericValue": "2", "identifier": "Fulfilled" } ] } } }, "Streaming.DropStateEnum": { "format": "byte", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Claimed" }, { "numericValue": "1", "identifier": "Applied" }, { "numericValue": "2", "identifier": "Fulfilled" } ] }, "Tokens.BungieRewardDisplay": { "type": "object", "properties": { "UserRewardAvailabilityModel": { "$ref": "#/definitions/Tokens.UserRewardAvailabilityModel" }, "ObjectiveDisplayProperties": { "$ref": "#/definitions/Tokens.RewardDisplayProperties" }, "RewardDisplayProperties": { "$ref": "#/definitions/Tokens.RewardDisplayProperties" } } }, "Tokens.UserRewardAvailabilityModel": { "type": "object", "properties": { "AvailabilityModel": { "$ref": "#/definitions/Tokens.RewardAvailabilityModel" }, "IsAvailableForUser": { "type": "boolean" }, "IsUnlockedForUser": { "type": "boolean" } } }, "Tokens.RewardAvailabilityModel": { "type": "object", "properties": { "HasExistingCode": { "type": "boolean" }, "RecordDefinitions": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Records.DestinyRecordDefinition" } }, "CollectibleDefinitions": { "type": "array", "items": { "$ref": "#/definitions/Tokens.CollectibleDefinitions" } }, "IsOffer": { "type": "boolean" }, "HasOffer": { "type": "boolean" }, "OfferApplied": { "type": "boolean" }, "DecryptedToken": { "type": "string" }, "IsLoyaltyReward": { "type": "boolean" }, "ShopifyEndDate": { "format": "date-time", "type": "string" }, "GameEarnByDate": { "format": "date-time", "type": "string" }, "RedemptionEndDate": { "format": "date-time", "type": "string" } } }, "Tokens.CollectibleDefinitions": { "type": "object", "properties": { "CollectibleDefinition": { "$ref": "#/definitions/Destiny.Definitions.Collectibles.DestinyCollectibleDefinition" }, "DestinyInventoryItemDefinition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } } }, "Tokens.RewardDisplayProperties": { "type": "object", "properties": { "Name": { "type": "string" }, "Description": { "type": "string" }, "ImagePath": { "type": "string" } } }, "Destiny.Config.DestinyManifest": { "description": "DestinyManifest is the external-facing contract for just the properties needed by those calling the Destiny Platform.", "type": "object", "properties": { "version": { "type": "string" }, "mobileAssetContentPath": { "type": "string" }, "mobileGearAssetDataBases": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Config.GearAssetDataBaseDefinition" } }, "mobileWorldContentPaths": { "type": "object", "additionalProperties": { "type": "string" } }, "jsonWorldContentPaths": { "description": "This points to the generated JSON that contains all the Definitions. Each key is a locale. The value is a path to the aggregated world definitions (warning: large file!)", "type": "object", "additionalProperties": { "type": "string" } }, "jsonWorldComponentContentPaths": { "description": "This points to the generated JSON that contains all the Definitions. Each key is a locale. The value is a dictionary, where the key is a definition type by name, and the value is the path to the file for that definition. WARNING: This is unsafe and subject to change - do not depend on data in these files staying around long-term.", "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "string" } } }, "mobileClanBannerDatabasePath": { "type": "string" }, "mobileGearCDN": { "type": "object", "additionalProperties": { "type": "string" } }, "iconImagePyramidInfo": { "description": "Information about the \"Image Pyramid\" for Destiny icons. Where possible, we create smaller versions of Destiny icons. These are found as subfolders under the location of the \"original/full size\" Destiny images, with the same file name and extension as the original image itself. (this lets us avoid sending largely redundant path info with every entity, at the expense of the smaller versions of the image being less discoverable)", "type": "array", "items": { "$ref": "#/definitions/Destiny.Config.ImagePyramidEntry" } } } }, "Destiny.Config.GearAssetDataBaseDefinition": { "type": "object", "properties": { "version": { "format": "int32", "type": "integer" }, "path": { "type": "string" } } }, "Destiny.Config.ImagePyramidEntry": { "type": "object", "properties": { "name": { "description": "The name of the subfolder where these images are located.", "type": "string" }, "factor": { "format": "float", "description": "The factor by which the original image size has been reduced.", "type": "number" } } }, "User.ExactSearchRequest": { "type": "object", "properties": { "displayName": { "type": "string" }, "displayNameCode": { "format": "int16", "type": "integer" } } }, "Destiny.Responses.DestinyLinkedProfilesResponse": { "description": "I know what you seek. You seek linked accounts. Found them, you have.\r\nThis contract returns a minimal amount of data about Destiny Accounts that are linked through your Bungie.Net account. We will not return accounts in this response whose", "type": "object", "properties": { "profiles": { "description": "Any Destiny account for whom we could successfully pull characters will be returned here, as the Platform-level summary of user data. (no character data, no Destiny account data other than the Membership ID and Type so you can make further queries)", "type": "array", "items": { "$ref": "#/definitions/Destiny.Responses.DestinyProfileUserInfoCard" } }, "bnetMembership": { "description": "If the requested membership had a linked Bungie.Net membership ID, this is the basic information about that BNet account.\r\nI know, Tetron; I know this is mixing UserServices concerns with DestinyServices concerns. But it's so damn convenient! https://www.youtube.com/watch?v=X5R-bB-gKVI", "type": "object", "allOf": [ { "$ref": "#/definitions/User.UserInfoCard" } ] }, "profilesWithErrors": { "description": "This is brief summary info for profiles that we believe have valid Destiny info, but who failed to return data for some other reason and thus we know that subsequent calls for their info will also fail.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Responses.DestinyErrorProfile" } } } }, "Destiny.Responses.DestinyProfileUserInfoCard": { "type": "object", "properties": { "dateLastPlayed": { "format": "date-time", "type": "string" }, "isOverridden": { "description": "If this profile is being overridden/obscured by Cross Save, this will be set to true. We will still return the profile for display purposes where users need to know the info: it is up to any given area of the app/site to determine if this profile should still be shown.", "type": "boolean" }, "isCrossSavePrimary": { "description": "If true, this account is hooked up as the \"Primary\" cross save account for one or more platforms.", "type": "boolean" }, "platformSilver": { "description": "This is the silver available on this Profile across any platforms on which they have purchased silver.\r\n This is only available if you are requesting yourself.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Components.Inventory.DestinyPlatformSilverComponent" } ] }, "unpairedGameVersions": { "format": "int32", "description": "If this profile is not in a cross save pairing, this will return the game versions that we believe this profile has access to.\r\n For the time being, we will not return this information for any membership that is in a cross save pairing. The gist is that, once the pairing occurs, we do not currently have a consistent way to get that information for the profile's original Platform, and thus gameVersions would be too inconsistent (based on the last platform they happened to play on) for the info to be useful.\r\n If we ever can get this data, this field will be deprecated and replaced with data on the DestinyLinkedProfileResponse itself, with game versions per linked Platform. But since we can't get that, we have this as a stop-gap measure for getting the data in the only situation that we currently need it.", "enum": [ "0", "1", "2", "4", "8", "16", "32", "64", "128", "256", "512" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Destiny2" }, { "numericValue": "2", "identifier": "DLC1" }, { "numericValue": "4", "identifier": "DLC2" }, { "numericValue": "8", "identifier": "Forsaken" }, { "numericValue": "16", "identifier": "YearTwoAnnualPass" }, { "numericValue": "32", "identifier": "Shadowkeep" }, { "numericValue": "64", "identifier": "BeyondLight" }, { "numericValue": "128", "identifier": "Anniversary30th" }, { "numericValue": "256", "identifier": "TheWitchQueen" }, { "numericValue": "512", "identifier": "Lightfall" } ] }, "supplementalDisplayName": { "description": "A platform specific additional display name - ex: psn Real Name, bnet Unique Name, etc.", "type": "string" }, "iconPath": { "description": "URL the Icon if available.", "type": "string" }, "crossSaveOverride": { "format": "int32", "description": "If there is a cross save override in effect, this value will tell you the type that is overridding this one.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } }, "applicableMembershipTypes": { "description": "The list of Membership Types indicating the platforms on which this Membership can be used.\r\n Not in Cross Save = its original membership type. Cross Save Primary = Any membership types it is overridding, and its original membership type Cross Save Overridden = Empty list", "type": "array", "items": { "format": "int32", "description": "The types of membership the Accounts system supports. This is the external facing enum used in place of the internal-only Bungie.SharedDefinitions.MembershipType.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } } }, "isPublic": { "description": "If True, this is a public user membership.", "type": "boolean" }, "membershipType": { "format": "int32", "description": "Type of the membership. Not necessarily the native type.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } }, "membershipId": { "format": "int64", "description": "Membership ID as they user is known in the Accounts service", "type": "integer" }, "displayName": { "description": "Display Name the player has chosen for themselves. The display name is optional when the data type is used as input to a platform API.", "type": "string" }, "bungieGlobalDisplayName": { "description": "The bungie global display name, if set.", "type": "string" }, "bungieGlobalDisplayNameCode": { "format": "int16", "description": "The bungie global display name code, if set.", "type": "integer" } } }, "Destiny.Components.Inventory.DestinyPlatformSilverComponent": { "type": "object", "properties": { "platformSilver": { "description": "If a Profile is played on multiple platforms, this is the silver they have for each platform, keyed by Membership Type.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemComponent" } } }, "x-destiny-component-type-dependency": "PlatformSilver" }, "Destiny.Entities.Items.DestinyItemComponent": { "description": "The base item component, filled with properties that are generally useful to know in any item request or that don't feel worthwhile to put in their own component.", "type": "object", "properties": { "itemHash": { "format": "uint32", "description": "The identifier for the item's definition, which is where most of the useful static information for the item can be found.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "itemInstanceId": { "format": "int64", "description": "If the item is instanced, it will have an instance ID. Lack of an instance ID implies that the item has no distinct local qualities aside from stack size.", "type": "integer" }, "quantity": { "format": "int32", "description": "The quantity of the item in this stack. Note that Instanced items cannot stack. If an instanced item, this value will always be 1 (as the stack has exactly one item in it)", "type": "integer" }, "bindStatus": { "format": "int32", "description": "If the item is bound to a location, it will be specified in this enum.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.ItemBindStatus" } }, "location": { "format": "int32", "description": "An easy reference for where the item is located. Redundant if you got the item from an Inventory, but useful when making detail calls on specific items.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.ItemLocation" } }, "bucketHash": { "format": "uint32", "description": "The hash identifier for the specific inventory bucket in which the item is located.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryBucketDefinition" } }, "transferStatus": { "format": "int32", "description": "If there is a known error state that would cause this item to not be transferable, this Flags enum will indicate all of those error states. Otherwise, it will be 0 (CanTransfer).", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.TransferStatuses" } }, "lockable": { "description": "If the item can be locked, this will indicate that state.", "type": "boolean" }, "state": { "format": "int32", "description": "A flags enumeration indicating the transient/custom states of the item that affect how it is rendered: whether it's tracked or locked for example, or whether it has a masterwork plug inserted.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.ItemState" } }, "overrideStyleItemHash": { "format": "uint32", "description": "If populated, this is the hash of the item whose icon (and other secondary styles, but *not* the human readable strings) should override whatever icons/styles are on the item being sold.\r\nIf you don't do this, certain items whose styles are being overridden by socketed items - such as the \"Recycle Shader\" item - would show whatever their default icon/style is, and it wouldn't be pretty or look accurate.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "expirationDate": { "format": "date-time", "description": "If the item can expire, this is the date at which it will/did expire.", "type": "string" }, "isWrapper": { "description": "If this is true, the object is actually a \"wrapper\" of the object it's representing. This means that it's not the actual item itself, but rather an item that must be \"opened\" in game before you have and can use the item.\r\n Wrappers are an evolution of \"bundles\", which give an easy way to let you preview the contents of what you purchased while still letting you get a refund before you \"open\" it.", "type": "boolean" }, "tooltipNotificationIndexes": { "description": "If this is populated, it is a list of indexes into DestinyInventoryItemDefinition.tooltipNotifications for any special tooltip messages that need to be shown for this item.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "metricHash": { "format": "uint32", "description": "The identifier for the currently-selected metric definition, to be displayed on the emblem nameplate.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Metrics.DestinyMetricDefinition" } }, "metricObjective": { "description": "The objective progress for the currently-selected metric definition, to be displayed on the emblem nameplate.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Quests.DestinyObjectiveProgress" } ] }, "versionNumber": { "format": "int32", "description": "The version of this item, used to index into the versions list in the item definition quality block.", "type": "integer" }, "itemValueVisibility": { "description": "If available, a list that describes which item values (rewards) should be shown (true) or hidden (false).", "type": "array", "items": { "type": "boolean" } } } }, "Destiny.ItemBindStatus": { "format": "int32", "enum": [ "0", "1", "2", "3" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "NotBound" }, { "numericValue": "1", "identifier": "BoundToCharacter" }, { "numericValue": "2", "identifier": "BoundToAccount" }, { "numericValue": "3", "identifier": "BoundToGuild" } ] }, "Destiny.TransferStatuses": { "format": "int32", "description": "Whether you can transfer an item, and why not if you can't.", "enum": [ "0", "1", "2", "4" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "CanTransfer", "description": "The item can be transferred." }, { "numericValue": "1", "identifier": "ItemIsEquipped", "description": "You can't transfer the item because it is equipped on a character." }, { "numericValue": "2", "identifier": "NotTransferrable", "description": "The item is defined as not transferrable in its DestinyInventoryItemDefinition.nonTransferrable property." }, { "numericValue": "4", "identifier": "NoRoomInDestination", "description": "You could transfer the item, but the place you're trying to put it has run out of room! Check your remaining Vault and/or character space." } ] }, "Destiny.ItemState": { "format": "int32", "description": "A flags enumeration/bitmask where each bit represents a different possible state that the item can be in that may effect how the item is displayed to the user and what actions can be performed against it.", "enum": [ "0", "1", "2", "4", "8", "16" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Locked", "description": "If this bit is set, the item has been \"locked\" by the user and cannot be deleted. You may want to represent this visually with a \"lock\" icon." }, { "numericValue": "2", "identifier": "Tracked", "description": "If this bit is set, the item is a quest that's being tracked by the user. You may want a visual indicator to show that this is a tracked quest." }, { "numericValue": "4", "identifier": "Masterwork", "description": "If this bit is set, the item has a Masterwork plug inserted. This usually coincides with having a special \"glowing\" effect applied to the item's icon." }, { "numericValue": "8", "identifier": "Crafted", "description": "If this bit is set, the item has been 'crafted' by the player. You may want to represent this visually with a \"crafted\" icon overlay." }, { "numericValue": "16", "identifier": "HighlightedObjective", "description": "If this bit is set, the item has a 'highlighted' objective. You may want to represent this with an orange-red icon border color." } ] }, "Destiny.Quests.DestinyObjectiveProgress": { "description": "Returns data about a character's status with a given Objective. Combine with DestinyObjectiveDefinition static data for display purposes.", "type": "object", "properties": { "objectiveHash": { "format": "uint32", "description": "The unique identifier of the Objective being referred to. Use to look up the DestinyObjectiveDefinition in static data.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyObjectiveDefinition" } }, "destinationHash": { "format": "uint32", "description": "If the Objective has a Destination associated with it, this is the unique identifier of the Destination being referred to. Use to look up the DestinyDestinationDefinition in static data. This will give localized data about *where* in the universe the objective should be achieved.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyDestinationDefinition" } }, "activityHash": { "format": "uint32", "description": "If the Objective has an Activity associated with it, this is the unique identifier of the Activity being referred to. Use to look up the DestinyActivityDefinition in static data. This will give localized data about *what* you should be playing for the objective to be achieved.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "progress": { "format": "int32", "description": "If progress has been made, and the progress can be measured numerically, this will be the value of that progress. You can compare it to the DestinyObjectiveDefinition.completionValue property for current vs. upper bounds, and use DestinyObjectiveDefinition.inProgressValueStyle or completedValueStyle to determine how this should be rendered. Note that progress, in Destiny 2, need not be a literal numeric progression. It could be one of a number of possible values, even a Timestamp. Always examine DestinyObjectiveDefinition.inProgressValueStyle or completedValueStyle before rendering progress.", "type": "integer" }, "completionValue": { "format": "int32", "description": "As of Forsaken, objectives' completion value is determined dynamically at runtime.\r\nThis value represents the threshold of progress you need to surpass in order for this objective to be considered \"complete\".\r\nIf you were using objective data, switch from using the DestinyObjectiveDefinition's \"completionValue\" to this value.", "type": "integer" }, "complete": { "description": "Whether or not the Objective is completed.", "type": "boolean" }, "visible": { "description": "If this is true, the objective is visible in-game. Otherwise, it's not yet visible to the player. Up to you if you want to honor this property.", "type": "boolean" } } }, "Destiny.DestinyGameVersions": { "format": "int32", "description": "A flags enumeration/bitmask indicating the versions of the game that a given user has purchased.", "enum": [ "0", "1", "2", "4", "8", "16", "32", "64", "128", "256", "512" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Destiny2" }, { "numericValue": "2", "identifier": "DLC1" }, { "numericValue": "4", "identifier": "DLC2" }, { "numericValue": "8", "identifier": "Forsaken" }, { "numericValue": "16", "identifier": "YearTwoAnnualPass" }, { "numericValue": "32", "identifier": "Shadowkeep" }, { "numericValue": "64", "identifier": "BeyondLight" }, { "numericValue": "128", "identifier": "Anniversary30th" }, { "numericValue": "256", "identifier": "TheWitchQueen" }, { "numericValue": "512", "identifier": "Lightfall" } ] }, "Destiny.Responses.DestinyErrorProfile": { "description": "If a Destiny Profile can't be returned, but we're pretty certain it's a valid Destiny account, this will contain as much info as we can get about the profile for your use.\r\nAssume that the most you'll get is the Error Code, the Membership Type and the Membership ID.", "type": "object", "properties": { "errorCode": { "format": "int32", "description": "The error that we encountered. You should be able to look up localized text to show to the user for these failures.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } }, "infoCard": { "description": "Basic info about the account that failed. Don't expect anything other than membership ID, Membership Type, and displayName to be populated.", "type": "object", "allOf": [ { "$ref": "#/definitions/User.UserInfoCard" } ] } } }, "Destiny.DestinyComponentType": { "format": "int32", "description": "Represents the possible components that can be returned from Destiny \"Get\" calls such as GetProfile, GetCharacter, GetVendor etc...\r\nWhen making one of these requests, you will pass one or more of these components as a comma separated list in the \"?components=\" querystring parameter. For instance, if you want baseline Profile data, Character Data, and character progressions, you would pass \"?components=Profiles,Characters,CharacterProgressions\" You may use either the numerical or string values.", "enum": [ "0", "100", "101", "102", "103", "104", "105", "200", "201", "202", "203", "204", "205", "206", "300", "301", "302", "303", "304", "305", "306", "307", "308", "309", "310", "400", "401", "402", "500", "600", "700", "800", "900", "1000", "1100", "1200", "1300", "1400" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "100", "identifier": "Profiles", "description": "Profiles is the most basic component, only relevant when calling GetProfile. This returns basic information about the profile, which is almost nothing: a list of characterIds, some information about the last time you logged in, and that most sobering statistic: how long you've played." }, { "numericValue": "101", "identifier": "VendorReceipts", "description": "Only applicable for GetProfile, this will return information about receipts for refundable vendor items." }, { "numericValue": "102", "identifier": "ProfileInventories", "description": "Asking for this will get you the profile-level inventories, such as your Vault buckets (yeah, the Vault is really inventory buckets located on your Profile)" }, { "numericValue": "103", "identifier": "ProfileCurrencies", "description": "This will get you a summary of items on your Profile that we consider to be \"currencies\", such as Glimmer. I mean, if there's Glimmer in Destiny 2. I didn't say there was Glimmer." }, { "numericValue": "104", "identifier": "ProfileProgression", "description": "This will get you any progression-related information that exists on a Profile-wide level, across all characters." }, { "numericValue": "105", "identifier": "PlatformSilver", "description": "This will get you information about the silver that this profile has on every platform on which it plays.\r\n You may only request this component for the logged in user's Profile, and will not recieve it if you request it for another Profile." }, { "numericValue": "200", "identifier": "Characters", "description": "This will get you summary info about each of the characters in the profile." }, { "numericValue": "201", "identifier": "CharacterInventories", "description": "This will get you information about any non-equipped items on the character or character(s) in question, if you're allowed to see it. You have to either be authenticated as that user, or that user must allow anonymous viewing of their non-equipped items in Bungie.Net settings to actually get results." }, { "numericValue": "202", "identifier": "CharacterProgressions", "description": "This will get you information about the progression (faction, experience, etc... \"levels\") relevant to each character, if you are the currently authenticated user or the user has elected to allow anonymous viewing of its progression info." }, { "numericValue": "203", "identifier": "CharacterRenderData", "description": "This will get you just enough information to be able to render the character in 3D if you have written a 3D rendering library for Destiny Characters, or \"borrowed\" ours. It's okay, I won't tell anyone if you're using it. I'm no snitch. (actually, we don't care if you use it - go to town)" }, { "numericValue": "204", "identifier": "CharacterActivities", "description": "This will return info about activities that a user can see and gating on it, if you are the currently authenticated user or the user has elected to allow anonymous viewing of its progression info. Note that the data returned by this can be unfortunately problematic and relatively unreliable in some cases. We'll eventually work on making it more consistently reliable." }, { "numericValue": "205", "identifier": "CharacterEquipment", "description": "This will return info about the equipped items on the character(s). Everyone can see this." }, { "numericValue": "206", "identifier": "CharacterLoadouts", "description": "This will return info about the loadouts of the character(s)." }, { "numericValue": "300", "identifier": "ItemInstances", "description": "This will return basic info about instanced items - whether they can be equipped, their tracked status, and some info commonly needed in many places (current damage type, primary stat value, etc)" }, { "numericValue": "301", "identifier": "ItemObjectives", "description": "Items can have Objectives (DestinyObjectiveDefinition) bound to them. If they do, this will return info for items that have such bound objectives." }, { "numericValue": "302", "identifier": "ItemPerks", "description": "Items can have perks (DestinyPerkDefinition). If they do, this will return info for what perks are active on items." }, { "numericValue": "303", "identifier": "ItemRenderData", "description": "If you just want to render the weapon, this is just enough info to do that rendering." }, { "numericValue": "304", "identifier": "ItemStats", "description": "Items can have stats, like rate of fire. Asking for this component will return requested item's stats if they have stats." }, { "numericValue": "305", "identifier": "ItemSockets", "description": "Items can have sockets, where plugs can be inserted. Asking for this component will return all info relevant to the sockets on items that have them." }, { "numericValue": "306", "identifier": "ItemTalentGrids", "description": "Items can have talent grids, though that matters a lot less frequently than it used to. Asking for this component will return all relevant info about activated Nodes and Steps on this talent grid, like the good ol' days." }, { "numericValue": "307", "identifier": "ItemCommonData", "description": "Items that *aren't* instanced still have important information you need to know: how much of it you have, the itemHash so you can look up their DestinyInventoryItemDefinition, whether they're locked, etc... Both instanced and non-instanced items will have these properties. You will get this automatically with Inventory components - you only need to pass this when calling GetItem on a specific item." }, { "numericValue": "308", "identifier": "ItemPlugStates", "description": "Items that are \"Plugs\" can be inserted into sockets. This returns statuses about those plugs and why they can/can't be inserted. I hear you giggling, there's nothing funny about inserting plugs. Get your head out of the gutter and pay attention!" }, { "numericValue": "309", "identifier": "ItemPlugObjectives", "description": "Sometimes, plugs have objectives on them. This data can get really large, so we split it into its own component. Please, don't grab it unless you need it." }, { "numericValue": "310", "identifier": "ItemReusablePlugs", "description": "Sometimes, designers create thousands of reusable plugs and suddenly your response sizes are almost 3MB, and something has to give.\r\n Reusable Plugs were split off as their own component, away from ItemSockets, as a result of the Plug changes in Shadowkeep that made plug data infeasibly large for the most common use cases.\r\n Request this component if and only if you need to know what plugs *could* be inserted into a socket, and need to know it before \"drilling\" into the details of an item in your application (for instance, if you're doing some sort of interesting sorting or aggregation based on available plugs.\r\n When you get this, you will also need to combine it with \"Plug Sets\" data if you want a full picture of all of the available plugs: this component will only return plugs that have state data that is per-item. See Plug Sets for available plugs that have Character, Profile, or no state-specific restrictions." }, { "numericValue": "400", "identifier": "Vendors", "description": "When obtaining vendor information, this will return summary information about the Vendor or Vendors being returned." }, { "numericValue": "401", "identifier": "VendorCategories", "description": "When obtaining vendor information, this will return information about the categories of items provided by the Vendor." }, { "numericValue": "402", "identifier": "VendorSales", "description": "When obtaining vendor information, this will return the information about items being sold by the Vendor." }, { "numericValue": "500", "identifier": "Kiosks", "description": "Asking for this component will return you the account's Kiosk statuses: that is, what items have been filled out/acquired. But only if you are the currently authenticated user or the user has elected to allow anonymous viewing of its progression info." }, { "numericValue": "600", "identifier": "CurrencyLookups", "description": "A \"shortcut\" component that will give you all of the item hashes/quantities of items that the requested character can use to determine if an action (purchasing, socket insertion) has the required currency. (recall that all currencies are just items, and that some vendor purchases require items that you might not traditionally consider to be a \"currency\", like plugs/mods!)" }, { "numericValue": "700", "identifier": "PresentationNodes", "description": "Returns summary status information about all \"Presentation Nodes\". See DestinyPresentationNodeDefinition for more details, but the gist is that these are entities used by the game UI to bucket Collectibles and Records into a hierarchy of categories. You may ask for and use this data if you want to perform similar bucketing in your own UI: or you can skip it and roll your own." }, { "numericValue": "800", "identifier": "Collectibles", "description": "Returns summary status information about all \"Collectibles\". These are records of what items you've discovered while playing Destiny, and some other basic information. For detailed information, you will have to call a separate endpoint devoted to the purpose." }, { "numericValue": "900", "identifier": "Records", "description": "Returns summary status information about all \"Records\" (also known in the game as \"Triumphs\". I know, it's confusing because there's also \"Moments of Triumph\" that will themselves be represented as \"Triumphs.\")" }, { "numericValue": "1000", "identifier": "Transitory", "description": "Returns information that Bungie considers to be \"Transitory\": data that may change too frequently or come from a non-authoritative source such that we don't consider the data to be fully trustworthy, but that might prove useful for some limited use cases. We can provide no guarantee of timeliness nor consistency for this data: buyer beware with the Transitory component." }, { "numericValue": "1100", "identifier": "Metrics", "description": "Returns summary status information about all \"Metrics\" (also known in the game as \"Stat Trackers\")." }, { "numericValue": "1200", "identifier": "StringVariables", "description": "Returns a mapping of localized string variable hashes to values, on a per-account or per-character basis." }, { "numericValue": "1300", "identifier": "Craftables", "description": "Returns summary status information about all \"Craftables\" aka crafting recipe items." }, { "numericValue": "1400", "identifier": "SocialCommendations", "description": "Returns score values for all commendations and commendation nodes." } ] }, "Destiny.Responses.DestinyProfileResponse": { "description": "The response for GetDestinyProfile, with components for character and item-level data.", "type": "object", "properties": { "responseMintedTimestamp": { "format": "date-time", "description": "Records the timestamp of when most components were last generated from the world server source. Unless the component type is specified in the documentation for secondaryComponentsMintedTimestamp, this value is sufficient to do data freshness.", "type": "string" }, "secondaryComponentsMintedTimestamp": { "format": "date-time", "description": "Some secondary components are not tracked in the primary response timestamp and have their timestamp tracked here. If your component is any of the following, this field is where you will find your timestamp value:\r\n PresentationNodes, Records, Collectibles, Metrics, StringVariables, Craftables, Transitory\r\n All other component types may use the primary timestamp property.", "type": "string" }, "vendorReceipts": { "description": "Recent, refundable purchases you have made from vendors. When will you use it? Couldn't say...\r\nCOMPONENT TYPE: VendorReceipts", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyVendorReceiptsComponent" } ], "x-destiny-component-type-dependency": "VendorReceipts" }, "profileInventory": { "description": "The profile-level inventory of the Destiny Profile.\r\nCOMPONENT TYPE: ProfileInventories", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyInventoryComponent" } ], "x-destiny-component-type-dependency": "ProfileInventories" }, "profileCurrencies": { "description": "The profile-level currencies owned by the Destiny Profile.\r\nCOMPONENT TYPE: ProfileCurrencies", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyInventoryComponent" } ], "x-destiny-component-type-dependency": "ProfileCurrencies" }, "profile": { "description": "The basic information about the Destiny Profile (formerly \"Account\").\r\nCOMPONENT TYPE: Profiles", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyProfileComponent" } ], "x-destiny-component-type-dependency": "Profiles" }, "platformSilver": { "description": "Silver quantities for any platform on which this Profile plays destiny.\r\n COMPONENT TYPE: PlatformSilver", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyPlatformSilverComponent" } ], "x-destiny-component-type-dependency": "PlatformSilver" }, "profileKiosks": { "description": "Items available from Kiosks that are available Profile-wide (i.e. across all characters)\r\nThis component returns information about what Kiosk items are available to you on a *Profile* level. It is theoretically possible for Kiosks to have items gated by specific Character as well. If you ever have those, you will find them on the characterKiosks property.\r\nCOMPONENT TYPE: Kiosks", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyKiosksComponent" } ], "x-destiny-component-type-dependency": "Kiosks" }, "profilePlugSets": { "description": "When sockets refer to reusable Plug Sets (see DestinyPlugSetDefinition for more info), this is the set of plugs and their states that are profile-scoped.\r\nThis comes back with ItemSockets, as it is needed for a complete picture of the sockets on requested items.\r\nCOMPONENT TYPE: ItemSockets", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyPlugSetsComponent" } ], "x-destiny-component-type-dependency": "ItemSockets" }, "profileProgression": { "description": "When we have progression information - such as Checklists - that may apply profile-wide, it will be returned here rather than in the per-character progression data.\r\nCOMPONENT TYPE: ProfileProgression", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyProfileProgressionComponent" } ], "x-destiny-component-type-dependency": "ProfileProgression" }, "profilePresentationNodes": { "description": "COMPONENT TYPE: PresentationNodes", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyPresentationNodesComponent" } ], "x-destiny-component-type-dependency": "PresentationNodes" }, "profileRecords": { "description": "COMPONENT TYPE: Records", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyProfileRecordsComponent" } ], "x-destiny-component-type-dependency": "Records" }, "profileCollectibles": { "description": "COMPONENT TYPE: Collectibles", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyProfileCollectiblesComponent" } ], "x-destiny-component-type-dependency": "Collectibles" }, "profileTransitoryData": { "description": "COMPONENT TYPE: Transitory", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyProfileTransitoryComponent" } ], "x-destiny-component-type-dependency": "Transitory" }, "metrics": { "description": "COMPONENT TYPE: Metrics", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyMetricsComponent" } ], "x-destiny-component-type-dependency": "Metrics" }, "profileStringVariables": { "description": "COMPONENT TYPE: StringVariables", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyStringVariablesComponent" } ], "x-destiny-component-type-dependency": "StringVariables" }, "profileCommendations": { "description": "COMPONENT TYPE: SocialCommendations", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinySocialCommendationsComponent" } ], "x-destiny-component-type-dependency": "SocialCommendations" }, "characters": { "description": "Basic information about each character, keyed by the CharacterId.\r\nCOMPONENT TYPE: Characters", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyCharacterComponent" } ], "x-destiny-component-type-dependency": "Characters" }, "characterInventories": { "description": "The character-level non-equipped inventory items, keyed by the Character's Id.\r\nCOMPONENT TYPE: CharacterInventories", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyInventoryComponent" } ], "x-destiny-component-type-dependency": "CharacterInventories" }, "characterLoadouts": { "description": "The character loadouts, keyed by the Character's Id.\r\nCOMPONENT TYPE: CharacterLoadouts", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyLoadoutsComponent" } ], "x-destiny-component-type-dependency": "CharacterLoadouts" }, "characterProgressions": { "description": "Character-level progression data, keyed by the Character's Id.\r\nCOMPONENT TYPE: CharacterProgressions", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyCharacterProgressionComponent" } ], "x-destiny-component-type-dependency": "CharacterProgressions" }, "characterRenderData": { "description": "Character rendering data - a minimal set of info needed to render a character in 3D - keyed by the Character's Id.\r\nCOMPONENT TYPE: CharacterRenderData", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyCharacterRenderComponent" } ], "x-destiny-component-type-dependency": "CharacterRenderData" }, "characterActivities": { "description": "Character activity data - the activities available to this character and its status, keyed by the Character's Id.\r\nCOMPONENT TYPE: CharacterActivities", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyCharacterActivitiesComponent" } ], "x-destiny-component-type-dependency": "CharacterActivities" }, "characterEquipment": { "description": "The character's equipped items, keyed by the Character's Id.\r\nCOMPONENT TYPE: CharacterEquipment", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyInventoryComponent" } ], "x-destiny-component-type-dependency": "CharacterEquipment" }, "characterKiosks": { "description": "Items available from Kiosks that are available to a specific character as opposed to the account as a whole. It must be combined with data from the profileKiosks property to get a full picture of the character's available items to check out of a kiosk.\r\nThis component returns information about what Kiosk items are available to you on a *Character* level. Usually, kiosk items will be earned for the entire Profile (all characters) at once. To find those, look in the profileKiosks property.\r\nCOMPONENT TYPE: Kiosks", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyKiosksComponent" } ], "x-destiny-component-type-dependency": "Kiosks" }, "characterPlugSets": { "description": "When sockets refer to reusable Plug Sets (see DestinyPlugSetDefinition for more info), this is the set of plugs and their states, per character, that are character-scoped.\r\nThis comes back with ItemSockets, as it is needed for a complete picture of the sockets on requested items.\r\nCOMPONENT TYPE: ItemSockets", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyPlugSetsComponent" } ], "x-destiny-component-type-dependency": "ItemSockets" }, "characterUninstancedItemComponents": { "description": "Do you ever get the feeling that a system was designed *too* flexibly? That it can be used in so many different ways that you end up being unable to provide an easy to use abstraction for the mess that's happening under the surface?\r\nLet's talk about character-specific data that might be related to items without instances. These two statements are totally unrelated, I promise.\r\nAt some point during D2, it was decided that items - such as Bounties - could be given to characters and *not* have instance data, but that *could* display and even use relevant state information on your account and character.\r\nUp to now, any item that had meaningful dependencies on character or account state had to be instanced, and thus \"itemComponents\" was all that you needed: it was keyed by item's instance IDs and provided the stateful information you needed inside.\r\nUnfortunately, we don't live in such a magical world anymore. This is information held on a per-character basis about non-instanced items that the characters have in their inventory - or that reference character-specific state information even if it's in Account-level inventory - and the values related to that item's state in relation to the given character.\r\nTo give a concrete example, look at a Moments of Triumph bounty. They exist in a character's inventory, and show/care about a character's progression toward completing the bounty. But the bounty itself is a non-instanced item, like a mod or a currency. This returns that data for the characters who have the bounty in their inventory.\r\nI'm not crying, you're crying Okay we're both crying but it's going to be okay I promise Actually I shouldn't promise that, I don't know if it's going to be okay", "type": "object", "additionalProperties": { "$ref": "#/definitions/DestinyBaseItemComponentSetOfuint32" } }, "characterPresentationNodes": { "description": "COMPONENT TYPE: PresentationNodes", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyPresentationNodesComponent" } ], "x-destiny-component-type-dependency": "PresentationNodes" }, "characterRecords": { "description": "COMPONENT TYPE: Records", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyCharacterRecordsComponent" } ], "x-destiny-component-type-dependency": "Records" }, "characterCollectibles": { "description": "COMPONENT TYPE: Collectibles", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyCollectiblesComponent" } ], "x-destiny-component-type-dependency": "Collectibles" }, "characterStringVariables": { "description": "COMPONENT TYPE: StringVariables", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyStringVariablesComponent" } ], "x-destiny-component-type-dependency": "StringVariables" }, "characterCraftables": { "description": "COMPONENT TYPE: Craftables", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyCraftablesComponent" } ], "x-destiny-component-type-dependency": "Craftables" }, "itemComponents": { "description": "Information about instanced items across all returned characters, keyed by the item's instance ID.\r\nCOMPONENT TYPE: [See inside the DestinyItemComponentSet contract for component types.]", "type": "object", "allOf": [ { "$ref": "#/definitions/DestinyItemComponentSetOfint64" } ] }, "characterCurrencyLookups": { "description": "A \"lookup\" convenience component that can be used to quickly check if the character has access to items that can be used for purchasing.\r\nCOMPONENT TYPE: CurrencyLookups", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyCurrenciesComponent" } ], "x-destiny-component-type-dependency": "CurrencyLookups" } } }, "Destiny.Entities.Profiles.DestinyVendorReceiptsComponent": { "description": "For now, this isn't used for much: it's a record of the recent refundable purchases that the user has made. In the future, it could be used for providing refunds/buyback via the API. Wouldn't that be fun?", "type": "object", "properties": { "receipts": { "description": "The receipts for refundable purchases made at a vendor.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Vendors.DestinyVendorReceipt" } } }, "x-destiny-component-type-dependency": "VendorReceipts" }, "Destiny.Vendors.DestinyVendorReceipt": { "description": "If a character purchased an item that is refundable, a Vendor Receipt will be created on the user's Destiny Profile. These expire after a configurable period of time, but until then can be used to get refunds on items. BNet does not provide the ability to refund a purchase *yet*, but you know.", "type": "object", "properties": { "currencyPaid": { "description": "The amount paid for the item, in terms of items that were consumed in the purchase and their quantity.", "type": "array", "items": { "$ref": "#/definitions/Destiny.DestinyItemQuantity" } }, "itemReceived": { "description": "The item that was received, and its quantity.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.DestinyItemQuantity" } ] }, "licenseUnlockHash": { "format": "uint32", "description": "The unlock flag used to determine whether you still have the purchased item.", "type": "integer" }, "purchasedByCharacterId": { "format": "int64", "description": "The ID of the character who made the purchase.", "type": "integer" }, "refundPolicy": { "format": "int32", "description": "Whether you can get a refund, and what happens in order for the refund to be received. See the DestinyVendorItemRefundPolicy enum for details.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyVendorItemRefundPolicy" } }, "sequenceNumber": { "format": "int32", "description": "The identifier of this receipt.", "type": "integer" }, "timeToExpiration": { "format": "int64", "description": "The seconds since epoch at which this receipt is rendered invalid.", "type": "integer" }, "expiresOn": { "format": "date-time", "description": "The date at which this receipt is rendered invalid.", "type": "string" } } }, "Components.ComponentResponse": { "description": "The base class for any component-returning object that may need to indicate information about the state of the component being returned.", "type": "object", "properties": { "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Components.ComponentPrivacySetting": { "format": "int32", "description": "A set of flags for reason(s) why the component populated in the way that it did. Inspect the individual flags for the reasons.", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Public" }, { "numericValue": "2", "identifier": "Private" } ] }, "SingleComponentResponseOfDestinyVendorReceiptsComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Entities.Profiles.DestinyVendorReceiptsComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Entities.Inventory.DestinyInventoryComponent": { "description": "A list of minimal information for items in an inventory: be it a character's inventory, or a Profile's inventory. (Note that the Vault is a collection of inventory buckets in the Profile's inventory)\r\nInventory Items returned here are in a flat list, but importantly they have a bucketHash property that indicates the specific inventory bucket that is holding them. These buckets constitute things like the separate sections of the Vault, the user's inventory slots, etc. See DestinyInventoryBucketDefinition for more info.", "type": "object", "properties": { "items": { "description": "The items in this inventory. If you care to bucket them, use the item's bucketHash property to group them.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemComponent" } } } }, "SingleComponentResponseOfDestinyInventoryComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Entities.Inventory.DestinyInventoryComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Entities.Profiles.DestinyProfileComponent": { "description": "The most essential summary information about a Profile (in Destiny 1, we called these \"Accounts\").", "type": "object", "properties": { "userInfo": { "description": "If you need to render the Profile (their platform name, icon, etc...) somewhere, this property contains that information.", "type": "object", "allOf": [ { "$ref": "#/definitions/User.UserInfoCard" } ] }, "dateLastPlayed": { "format": "date-time", "description": "The last time the user played with any character on this Profile.", "type": "string" }, "versionsOwned": { "format": "int32", "description": "If you want to know what expansions they own, this will contain that data.\r\n IMPORTANT: This field may not return the data you're interested in for Cross-Saved users. It returns the last ownership data we saw for this account - which is to say, what they've purchased on the platform on which they last played, which now could be a different platform.\r\n If you don't care about per-platform ownership and only care about whatever platform it seems they are playing on most recently, then this should be \"good enough.\" Otherwise, this should be considered deprecated. We do not have a good alternative to provide at this time with platform specific ownership data for DLC.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyGameVersions" } }, "characterIds": { "description": "A list of the character IDs, for further querying on your part.", "type": "array", "items": { "format": "int64", "type": "integer" } }, "seasonHashes": { "description": "A list of seasons that this profile owns. Unlike versionsOwned, these stay with the profile across Platforms, and thus will be valid.\r\n It turns out that Stadia Pro subscriptions will give access to seasons but only while playing on Stadia and with an active subscription. So some users (users who have Stadia Pro but choose to play on some other platform) won't see these as available: it will be whatever seasons are available for the platform on which they last played.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Seasons.DestinySeasonDefinition" } }, "eventCardHashesOwned": { "description": "A list of hashes for event cards that a profile owns. Unlike most values in versionsOwned, these stay with the profile across all platforms.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Seasons.DestinyEventCardDefinition" } }, "currentSeasonHash": { "format": "uint32", "description": "If populated, this is a reference to the season that is currently active.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Seasons.DestinySeasonDefinition" } }, "currentSeasonRewardPowerCap": { "format": "int32", "description": "If populated, this is the reward power cap for the current season.", "type": "integer" }, "activeEventCardHash": { "format": "uint32", "description": "If populated, this is a reference to the event card that is currently active.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Seasons.DestinyEventCardDefinition" } }, "currentGuardianRank": { "format": "int32", "description": "The 'current' Guardian Rank value, which starts at rank 1.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.GuardianRanks.DestinyGuardianRankDefinition" } }, "lifetimeHighestGuardianRank": { "format": "int32", "description": "The 'lifetime highest' Guardian Rank value, which starts at rank 1.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.GuardianRanks.DestinyGuardianRankDefinition" } } }, "x-destiny-component-type-dependency": "Profiles" }, "Destiny.Definitions.Seasons.DestinyEventCardDefinition": { "description": "Defines the properties of an 'Event Card' in Destiny 2, to coincide with a seasonal event for additional challenges, premium rewards, a new seal, and a special title. For example: Solstice of Heroes 2022.", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "linkRedirectPath": { "type": "string" }, "color": { "$ref": "#/definitions/Destiny.Misc.DestinyColor" }, "images": { "$ref": "#/definitions/Destiny.Definitions.Seasons.DestinyEventCardImages" }, "triumphsPresentationNodeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "sealPresentationNodeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "ticketCurrencyItemHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "ticketVendorHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDefinition" } }, "ticketVendorCategoryHash": { "format": "uint32", "type": "integer" }, "endTime": { "format": "int64", "type": "integer" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "EventCards" }, "Destiny.Definitions.Seasons.DestinyEventCardImages": { "type": "object", "properties": { "unownedCardSleeveImagePath": { "type": "string" }, "unownedCardSleeveWrapImagePath": { "type": "string" }, "cardIncompleteImagePath": { "type": "string" }, "cardCompleteImagePath": { "type": "string" }, "cardCompleteWrapImagePath": { "type": "string" }, "progressIconImagePath": { "type": "string" }, "themeBackgroundImagePath": { "type": "string" } } }, "Destiny.Definitions.GuardianRanks.DestinyGuardianRankDefinition": { "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "rankNumber": { "format": "int32", "type": "integer" }, "presentationNodeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "foregroundImagePath": { "type": "string" }, "overlayImagePath": { "type": "string" }, "overlayMaskImagePath": { "type": "string" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "GuardianRanks" }, "SingleComponentResponseOfDestinyProfileComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Entities.Profiles.DestinyProfileComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "SingleComponentResponseOfDestinyPlatformSilverComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Components.Inventory.DestinyPlatformSilverComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Components.Kiosks.DestinyKiosksComponent": { "description": "A Kiosk is a Vendor (DestinyVendorDefinition) that sells items based on whether you have already acquired that item before.\r\nThis component returns information about what Kiosk items are available to you on a *Profile* level. It is theoretically possible for Kiosks to have items gated by specific Character as well. If you ever have those, you will find them on the individual character's DestinyCharacterKiosksComponent.\r\nNote that, because this component returns vendorItemIndexes (that is to say, indexes into the Kiosk Vendor's itemList property), these results are necessarily content version dependent. Make sure that you have the latest version of the content manifest databases before using this data.", "type": "object", "properties": { "kioskItems": { "description": "A dictionary keyed by the Kiosk Vendor's hash identifier (use it to look up the DestinyVendorDefinition for the relevant kiosk vendor), and whose value is a list of all the items that the user can \"see\" in the Kiosk, and any other interesting metadata.", "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Components.Kiosks.DestinyKioskItem" } }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDefinition" } } }, "x-destiny-component-type-dependency": "Kiosks" }, "Destiny.Components.Kiosks.DestinyKioskItem": { "type": "object", "properties": { "index": { "format": "int32", "description": "The index of the item in the related DestinyVendorDefintion's itemList property, representing the sale.", "type": "integer" }, "canAcquire": { "description": "If true, the user can not only see the item, but they can acquire it. It is possible that a user can see a kiosk item and not be able to acquire it.", "type": "boolean" }, "failureIndexes": { "description": "Indexes into failureStrings for the Vendor, indicating the reasons why it failed if any.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "flavorObjective": { "description": "I may regret naming it this way - but this represents when an item has an objective that doesn't serve a beneficial purpose, but rather is used for \"flavor\" or additional information. For instance, when Emblems track specific stats, those stats are represented as Objectives on the item.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Quests.DestinyObjectiveProgress" } ] } } }, "SingleComponentResponseOfDestinyKiosksComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Components.Kiosks.DestinyKiosksComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Components.PlugSets.DestinyPlugSetsComponent": { "description": "Sockets may refer to a \"Plug Set\": a set of reusable plugs that may be shared across multiple sockets (or even, in theory, multiple sockets over multiple items).\r\nThis is the set of those plugs that we came across in the users' inventory, along with the values for plugs in the set. Any given set in this component may be represented in Character and Profile-level, as some plugs may be Profile-level restricted, and some character-level restricted. (note that the ones that are even more specific will remain on the actual socket component itself, as they cannot be reused)", "type": "object", "properties": { "plugs": { "description": "The shared list of plugs for each relevant PlugSet, keyed by the hash identifier of the PlugSet (DestinyPlugSetDefinition).", "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Sockets.DestinyItemPlug" } }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Sockets.DestinyPlugSetDefinition" } } }, "x-destiny-component-type-dependency": "ItemSockets" }, "Destiny.Sockets.DestinyItemPlugBase": { "type": "object", "properties": { "plugItemHash": { "format": "uint32", "description": "The hash identifier of the DestinyInventoryItemDefinition that represents this plug.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "canInsert": { "description": "If true, this plug has met all of its insertion requirements. Big if true.", "type": "boolean" }, "enabled": { "description": "If true, this plug will provide its benefits while inserted.", "type": "boolean" }, "insertFailIndexes": { "description": "If the plug cannot be inserted for some reason, this will have the indexes into the plug item definition's plug.insertionRules property, so you can show the reasons why it can't be inserted.\r\nThis list will be empty if the plug can be inserted.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "enableFailIndexes": { "description": "If a plug is not enabled, this will be populated with indexes into the plug item definition's plug.enabledRules property, so that you can show the reasons why it is not enabled.\r\nThis list will be empty if the plug is enabled.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "Destiny.Sockets.DestinyItemPlug": { "type": "object", "properties": { "plugObjectives": { "description": "Sometimes, Plugs may have objectives: these are often used for flavor and display purposes, but they can be used for any arbitrary purpose (both fortunately and unfortunately). Recently (with Season 2) they were expanded in use to be used as the \"gating\" for whether the plug can be inserted at all. For instance, a Plug might be tracking the number of PVP kills you have made. It will use the parent item's data about that tracking status to determine what to show, and will generally show it using the DestinyObjectiveDefinition's progressDescription property. Refer to the plug's itemHash and objective property for more information if you would like to display even more data.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Quests.DestinyObjectiveProgress" } }, "plugItemHash": { "format": "uint32", "description": "The hash identifier of the DestinyInventoryItemDefinition that represents this plug.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "canInsert": { "description": "If true, this plug has met all of its insertion requirements. Big if true.", "type": "boolean" }, "enabled": { "description": "If true, this plug will provide its benefits while inserted.", "type": "boolean" }, "insertFailIndexes": { "description": "If the plug cannot be inserted for some reason, this will have the indexes into the plug item definition's plug.insertionRules property, so you can show the reasons why it can't be inserted.\r\nThis list will be empty if the plug can be inserted.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "enableFailIndexes": { "description": "If a plug is not enabled, this will be populated with indexes into the plug item definition's plug.enabledRules property, so that you can show the reasons why it is not enabled.\r\nThis list will be empty if the plug is enabled.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "SingleComponentResponseOfDestinyPlugSetsComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Components.PlugSets.DestinyPlugSetsComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Components.Profiles.DestinyProfileProgressionComponent": { "description": "The set of progression-related information that applies at a Profile-wide level for your Destiny experience. This differs from the Jimi Hendrix Experience because there's less guitars on fire. Yet. #spoileralert?\r\nThis will include information such as Checklist info.", "type": "object", "properties": { "checklists": { "description": "The set of checklists that can be examined on a profile-wide basis, keyed by the hash identifier of the Checklist (DestinyChecklistDefinition)\r\nFor each checklist returned, its value is itself a Dictionary keyed by the checklist's hash identifier with the value being a boolean indicating if it's been discovered yet.", "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "boolean" } }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Checklists.DestinyChecklistDefinition" } }, "seasonalArtifact": { "description": "Data related to your progress on the current season's artifact that is the same across characters.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Artifacts.DestinyArtifactProfileScoped" } ] } }, "x-destiny-component-type-dependency": "ProfileProgression" }, "Destiny.Artifacts.DestinyArtifactProfileScoped": { "description": "Represents a Seasonal Artifact and all data related to it for the requested Account.\r\nIt can be combined with Character-scoped data for a full picture of what a character has available/has chosen, or just these settings can be used for overview information.", "type": "object", "properties": { "artifactHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Artifacts.DestinyArtifactDefinition" } }, "pointProgression": { "$ref": "#/definitions/Destiny.DestinyProgression" }, "pointsAcquired": { "format": "int32", "type": "integer" }, "powerBonusProgression": { "$ref": "#/definitions/Destiny.DestinyProgression" }, "powerBonus": { "format": "int32", "type": "integer" } } }, "Destiny.Definitions.Checklists.DestinyChecklistDefinition": { "description": "By public demand, Checklists are loose sets of \"things to do/things you have done\" in Destiny that we were actually able to track. They include easter eggs you find in the world, unique chests you unlock, and other such data where the first time you do it is significant enough to be tracked, and you have the potential to \"get them all\".\r\nThese may be account-wide, or may be per character. The status of these will be returned in related \"Checklist\" data coming down from API requests such as GetProfile or GetCharacter.\r\nGenerally speaking, the items in a checklist can be completed in any order: we return an ordered list which only implies the way we are showing them in our own UI, and you can feel free to alter it as you wish.\r\nNote that, in the future, there will be something resembling the old D1 Record Books in at least some vague form. When that is created, it may be that it will supercede much or all of this Checklist data. It remains to be seen if that will be the case, so for now assume that the Checklists will still exist even after the release of D2: Forsaken.", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "viewActionString": { "description": "A localized string prompting you to view the checklist.", "type": "string" }, "scope": { "format": "int32", "description": "Indicates whether you will find this checklist on the Profile or Character components.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyScope" } }, "entries": { "description": "The individual checklist items. Gotta catch 'em all.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Checklists.DestinyChecklistEntryDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Checklists" }, "Destiny.Definitions.Checklists.DestinyChecklistEntryDefinition": { "description": "The properties of an individual checklist item. Note that almost everything is optional: it is *highly* variable what kind of data we'll actually be able to return: at times we may have no other relationships to entities at all.\r\nWhatever UI you build, do it with the knowledge that any given entry might not actually be able to be associated with some other Destiny entity.", "type": "object", "properties": { "hash": { "format": "uint32", "description": "The identifier for this Checklist entry. Guaranteed unique only within this Checklist Definition, and not globally/for all checklists.", "type": "integer" }, "displayProperties": { "description": "Even if no other associations exist, we will give you *something* for display properties. In cases where we have no associated entities, it may be as simple as a numerical identifier.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "destinationHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyDestinationDefinition" } }, "locationHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyLocationDefinition" } }, "bubbleHash": { "format": "uint32", "description": "Note that a Bubble's hash doesn't uniquely identify a \"top level\" entity in Destiny. Only the combination of location and bubble can uniquely identify a place in the world of Destiny: so if bubbleHash is populated, locationHash must too be populated for it to have any meaning.\r\nYou can use this property if it is populated to look up the DestinyLocationDefinition's associated .locationReleases[].activityBubbleName property.", "type": "integer" }, "activityHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "itemHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "vendorHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDefinition" } }, "vendorInteractionIndex": { "format": "int32", "type": "integer" }, "scope": { "format": "int32", "description": "The scope at which this specific entry can be computed.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyScope" } } } }, "SingleComponentResponseOfDestinyProfileProgressionComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Components.Profiles.DestinyProfileProgressionComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Components.Presentation.DestinyPresentationNodesComponent": { "type": "object", "properties": { "nodes": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Components.Presentation.DestinyPresentationNodeComponent" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } } }, "x-destiny-component-type-dependency": "PresentationNodes" }, "Destiny.Components.Presentation.DestinyPresentationNodeComponent": { "type": "object", "properties": { "state": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyPresentationNodeState" } }, "objective": { "description": "An optional property: presentation nodes MAY have objectives, which can be used to infer more human readable data about the progress. However, progressValue and completionValue ought to be considered the canonical values for progress on Progression Nodes.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Quests.DestinyObjectiveProgress" } ] }, "progressValue": { "format": "int32", "description": "How much of the presentation node is considered to be completed so far by the given character/profile.", "type": "integer" }, "completionValue": { "format": "int32", "description": "The value at which the presentation node is considered to be completed.", "type": "integer" }, "recordCategoryScore": { "format": "int32", "description": "If available, this is the current score for the record category that this node represents.", "type": "integer" } } }, "Destiny.DestinyPresentationNodeState": { "format": "int32", "description": "I know this doesn't look like a Flags Enumeration/bitmask right now, but I assure you it is. This is the possible states that a Presentation Node can be in, and it is almost certain that its potential states will increase in the future. So don't treat it like a straight up enumeration.", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Invisible", "description": "If this is set, the game recommends that you not show this node. But you know your life, do what you've got to do." }, { "numericValue": "2", "identifier": "Obscured", "description": "Turns out Presentation Nodes can also be obscured. If they are, this is set." } ] }, "SingleComponentResponseOfDestinyPresentationNodesComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Components.Presentation.DestinyPresentationNodesComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Components.Records.DestinyRecordsComponent": { "type": "object", "properties": { "records": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Components.Records.DestinyRecordComponent" } }, "recordCategoriesRootNodeHash": { "format": "uint32", "description": "The hash for the root presentation node definition of Triumph categories.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "recordSealsRootNodeHash": { "format": "uint32", "description": "The hash for the root presentation node definition of Triumph Seals.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } } }, "x-destiny-component-type-dependency": "Records" }, "Destiny.Components.Records.DestinyRecordComponent": { "type": "object", "properties": { "state": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyRecordState" } }, "objectives": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Quests.DestinyObjectiveProgress" } }, "intervalObjectives": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Quests.DestinyObjectiveProgress" } }, "intervalsRedeemedCount": { "format": "int32", "type": "integer" }, "completedCount": { "format": "int32", "description": "If available, this is the number of times this record has been completed. For example, the number of times a seal title has been gilded.", "type": "integer" }, "rewardVisibilty": { "description": "If available, a list that describes which reward rewards should be shown (true) or hidden (false). This property is for regular record rewards, and not for interval objective rewards.", "type": "array", "items": { "type": "boolean" } } } }, "Destiny.DestinyRecordState": { "format": "int32", "description": "A Flags enumeration/bitmask where each bit represents a possible state that a Record/Triumph can be in.", "enum": [ "0", "1", "2", "4", "8", "16", "32", "64" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None", "description": "If there are no flags set, the record is in a state where it *could* be redeemed, but it has not been yet." }, { "numericValue": "1", "identifier": "RecordRedeemed", "description": "If this is set, the completed record has been redeemed." }, { "numericValue": "2", "identifier": "RewardUnavailable", "description": "If this is set, there's a reward available from this Record but it's unavailable for redemption." }, { "numericValue": "4", "identifier": "ObjectiveNotCompleted", "description": "If this is set, the objective for this Record has not yet been completed." }, { "numericValue": "8", "identifier": "Obscured", "description": "If this is set, the game recommends that you replace the display text of this Record with DestinyRecordDefinition.stateInfo.obscuredString." }, { "numericValue": "16", "identifier": "Invisible", "description": "If this is set, the game recommends that you not show this record. Do what you will with this recommendation." }, { "numericValue": "32", "identifier": "EntitlementUnowned", "description": "If this is set, you can't complete this record because you lack some permission that's required to complete it." }, { "numericValue": "64", "identifier": "CanEquipTitle", "description": "If this is set, the record has a title (check DestinyRecordDefinition for title info) and you can equip it." } ] }, "Destiny.Components.Records.DestinyProfileRecordsComponent": { "type": "object", "properties": { "score": { "format": "int32", "description": "Your 'active' Triumphs score, maintained for backwards compatibility.", "type": "integer" }, "activeScore": { "format": "int32", "description": "Your 'active' Triumphs score.", "type": "integer" }, "legacyScore": { "format": "int32", "description": "Your 'legacy' Triumphs score.", "type": "integer" }, "lifetimeScore": { "format": "int32", "description": "Your 'lifetime' Triumphs score.", "type": "integer" }, "trackedRecordHash": { "format": "uint32", "description": "If this profile is tracking a record, this is the hash identifier of the record it is tracking.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Records.DestinyRecordDefinition" } }, "records": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Components.Records.DestinyRecordComponent" } }, "recordCategoriesRootNodeHash": { "format": "uint32", "description": "The hash for the root presentation node definition of Triumph categories.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "recordSealsRootNodeHash": { "format": "uint32", "description": "The hash for the root presentation node definition of Triumph Seals.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } } }, "x-destiny-component-type-dependency": "Records" }, "SingleComponentResponseOfDestinyProfileRecordsComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Components.Records.DestinyProfileRecordsComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Components.Collectibles.DestinyCollectiblesComponent": { "type": "object", "properties": { "collectibles": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Components.Collectibles.DestinyCollectibleComponent" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Collectibles.DestinyCollectibleDefinition" } }, "collectionCategoriesRootNodeHash": { "format": "uint32", "description": "The hash for the root presentation node definition of Collection categories.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "collectionBadgesRootNodeHash": { "format": "uint32", "description": "The hash for the root presentation node definition of Collection Badges.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } } }, "x-destiny-component-type-dependency": "Collectibles" }, "Destiny.Components.Collectibles.DestinyCollectibleComponent": { "type": "object", "properties": { "state": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyCollectibleState" } } } }, "Destiny.DestinyCollectibleState": { "format": "int32", "description": "A Flags Enumeration/bitmask where each bit represents a different state that the Collectible can be in. A collectible can be in any number of these states, and you can choose to use or ignore any or all of them when making your own UI that shows Collectible info. Our displays are going to honor them, but we're also the kind of people who only pretend to inhale before quickly passing it to the left. So, you know, do what you got to do.\r\n(All joking aside, please note the caveat I mention around the Invisible flag: there are cases where it is in the best interest of your users to honor these flags even if you're a \"show all the data\" person. Collector-oriented compulsion is a very unfortunate and real thing, and I would hate to instill that compulsion in others through showing them items that they cannot earn. Please consider this when you are making your own apps/sites.)", "enum": [ "0", "1", "2", "4", "8", "16", "32", "64" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "NotAcquired", "description": "If this flag is set, you have not yet obtained this collectible." }, { "numericValue": "2", "identifier": "Obscured", "description": "If this flag is set, the item is \"obscured\" to you: you can/should use the alternate item hash found in DestinyCollectibleDefinition.stateInfo.obscuredOverrideItemHash when displaying this collectible instead of the default display info." }, { "numericValue": "4", "identifier": "Invisible", "description": "If this flag is set, the collectible should not be shown to the user.\r\nPlease do consider honoring this flag. It is used - for example - to hide items that a person didn't get from the Eververse. I can't prevent these from being returned in definitions, because some people may have acquired them and thus they should show up: but I would hate for people to start feeling some variant of a Collector's Remorse about these items, and thus increasing their purchasing based on that compulsion. That would be a very unfortunate outcome, and one that I wouldn't like to see happen. So please, whether or not I'm your mom, consider honoring this flag and don't show people invisible collectibles." }, { "numericValue": "8", "identifier": "CannotAffordMaterialRequirements", "description": "If this flag is set, the collectible requires payment for creating an instance of the item, and you are lacking in currency. Bring the benjamins next time. Or spinmetal. Whatever." }, { "numericValue": "16", "identifier": "InventorySpaceUnavailable", "description": "If this flag is set, you can't pull this item out of your collection because there's no room left in your inventory." }, { "numericValue": "32", "identifier": "UniquenessViolation", "description": "If this flag is set, you already have one of these items and can't have a second one." }, { "numericValue": "64", "identifier": "PurchaseDisabled", "description": "If this flag is set, the ability to pull this item out of your collection has been disabled." } ] }, "Destiny.Components.Collectibles.DestinyProfileCollectiblesComponent": { "type": "object", "properties": { "recentCollectibleHashes": { "description": "The list of collectibles determined by the game as having been \"recently\" acquired.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Collectibles.DestinyCollectibleDefinition" } }, "newnessFlaggedCollectibleHashes": { "description": "The list of collectibles determined by the game as having been \"recently\" acquired.\r\nThe game client itself actually controls this data, so I personally question whether anyone will get much use out of this: because we can't edit this value through the API. But in case anyone finds it useful, here it is.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Collectibles.DestinyCollectibleDefinition" } }, "collectibles": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Components.Collectibles.DestinyCollectibleComponent" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Collectibles.DestinyCollectibleDefinition" } }, "collectionCategoriesRootNodeHash": { "format": "uint32", "description": "The hash for the root presentation node definition of Collection categories.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "collectionBadgesRootNodeHash": { "format": "uint32", "description": "The hash for the root presentation node definition of Collection Badges.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } } }, "x-destiny-component-type-dependency": "Collectibles" }, "SingleComponentResponseOfDestinyProfileCollectiblesComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Components.Collectibles.DestinyProfileCollectiblesComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Components.Profiles.DestinyProfileTransitoryComponent": { "description": "This is an experimental set of data that Bungie considers to be \"transitory\" - information that may be useful for API users, but that is coming from a non-authoritative data source about information that could potentially change at a more frequent pace than Bungie.net will receive updates about it.\r\nThis information is provided exclusively for convenience should any of it be useful to users: we provide no guarantees to the accuracy or timeliness of data that comes from this source. Know that this data can potentially be out-of-date or even wrong entirely if the user disconnected from the game or suddenly changed their status before we can receive refreshed data.", "type": "object", "properties": { "partyMembers": { "description": "If you have any members currently in your party, this is some (very) bare-bones information about those members.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Components.Profiles.DestinyProfileTransitoryPartyMember" } }, "currentActivity": { "description": "If you are in an activity, this is some transitory info about the activity currently being played.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Components.Profiles.DestinyProfileTransitoryCurrentActivity" } ] }, "joinability": { "description": "Information about whether and what might prevent you from joining this person on a fireteam.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Components.Profiles.DestinyProfileTransitoryJoinability" } ] }, "tracking": { "description": "Information about tracked entities.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Components.Profiles.DestinyProfileTransitoryTrackingEntry" } }, "lastOrbitedDestinationHash": { "format": "uint32", "description": "The hash identifier for the DestinyDestinationDefinition of the last location you were orbiting when in orbit.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyDestinationDefinition" } } }, "x-destiny-component-type-dependency": "Transitory" }, "Destiny.Components.Profiles.DestinyProfileTransitoryPartyMember": { "description": "This is some bare minimum information about a party member in a Fireteam. Unfortunately, without great computational expense on our side we can only get at the data contained here. I'd like to give you a character ID for example, but we don't have it. But we do have these three pieces of information. May they help you on your quest to show meaningful data about current Fireteams.\r\nNotably, we don't and can't feasibly return info on characters. If you can, try to use just the data below for your UI and purposes. Only hit us with further queries if you absolutely must know the character ID of the currently playing character. Pretty please with sugar on top.", "type": "object", "properties": { "membershipId": { "format": "int64", "description": "The Membership ID that matches the party member.", "type": "integer" }, "emblemHash": { "format": "uint32", "description": "The identifier for the DestinyInventoryItemDefinition of the player's emblem.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "displayName": { "description": "The player's last known display name.", "type": "string" }, "status": { "format": "int32", "description": "A Flags Enumeration value indicating the states that the player is in relevant to being on a fireteam.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyPartyMemberStates" } } } }, "Destiny.DestinyPartyMemberStates": { "format": "int32", "description": "A flags enumeration that represents a Fireteam Member's status.", "enum": [ "0", "1", "2", "4", "8" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "FireteamMember", "description": "This one's pretty obvious - they're on your Fireteam." }, { "numericValue": "2", "identifier": "PosseMember", "description": "I don't know what it means to be in a 'Posse', but apparently this is it." }, { "numericValue": "4", "identifier": "GroupMember", "description": "Nor do I understand the difference between them being in a 'Group' vs. a 'Fireteam'.\r\nI'll update these docs once I get more info. If I get more info. If you're reading this, I never got more info. You're on your own, kid." }, { "numericValue": "8", "identifier": "PartyLeader", "description": "This person is the party leader." } ] }, "Destiny.Components.Profiles.DestinyProfileTransitoryCurrentActivity": { "description": "If you are playing in an activity, this is some information about it.\r\nNote that we cannot guarantee any of this resembles what ends up in the PGCR in any way. They are sourced by two entirely separate systems with their own logic, and the one we source this data from should be considered non-authoritative in comparison.", "type": "object", "properties": { "startTime": { "format": "date-time", "description": "When the activity started.", "type": "string" }, "endTime": { "format": "date-time", "description": "If you're still in it but it \"ended\" (like when folks are dancing around the loot after they beat a boss), this is when the activity ended.", "type": "string" }, "score": { "format": "float", "description": "This is what our non-authoritative source thought the score was.", "type": "number" }, "highestOpposingFactionScore": { "format": "float", "description": "If you have human opponents, this is the highest opposing team's score.", "type": "number" }, "numberOfOpponents": { "format": "int32", "description": "This is how many human or poorly crafted aimbot opponents you have.", "type": "integer" }, "numberOfPlayers": { "format": "int32", "description": "This is how many human or poorly crafted aimbots are on your team.", "type": "integer" } } }, "Destiny.Components.Profiles.DestinyProfileTransitoryJoinability": { "description": "Some basic information about whether you can be joined, how many slots are left etc. Note that this can change quickly, so it may not actually be useful. But perhaps it will be in some use cases?", "type": "object", "properties": { "openSlots": { "format": "int32", "description": "The number of slots still available on this person's fireteam.", "type": "integer" }, "privacySetting": { "format": "int32", "description": "Who the person is currently allowing invites from.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyGamePrivacySetting" } }, "closedReasons": { "format": "int32", "description": "Reasons why a person can't join this person's fireteam.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyJoinClosedReasons" } } } }, "Destiny.DestinyGamePrivacySetting": { "format": "int32", "description": "A player can choose to restrict requests to join their Fireteam to specific states. These are the possible states a user can choose.", "enum": [ "0", "1", "2", "3", "4" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Open" }, { "numericValue": "1", "identifier": "ClanAndFriendsOnly" }, { "numericValue": "2", "identifier": "FriendsOnly" }, { "numericValue": "3", "identifier": "InvitationOnly" }, { "numericValue": "4", "identifier": "Closed" } ] }, "Destiny.DestinyJoinClosedReasons": { "format": "int32", "description": "A Flags enumeration representing the reasons why a person can't join this user's fireteam.", "enum": [ "0", "1", "2", "4", "8", "16", "32768" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "InMatchmaking", "description": "The user is currently in matchmaking." }, { "numericValue": "2", "identifier": "Loading", "description": "The user is currently in a loading screen." }, { "numericValue": "4", "identifier": "SoloMode", "description": "The user is in an activity that requires solo play." }, { "numericValue": "8", "identifier": "InternalReasons", "description": "The user can't be joined for one of a variety of internal reasons. Basically, the game can't let you join at this time, but for reasons that aren't under the control of this user." }, { "numericValue": "16", "identifier": "DisallowedByGameState", "description": "The user's current activity/quest/other transitory game state is preventing joining." }, { "numericValue": "32768", "identifier": "Offline", "description": "The user appears to be offline." } ] }, "Destiny.Components.Profiles.DestinyProfileTransitoryTrackingEntry": { "description": "This represents a single \"thing\" being tracked by the player.\r\nThis can point to many types of entities, but only a subset of them will actually have a valid hash identifier for whatever it is being pointed to.\r\nIt's up to you to interpret what it means when various combinations of these entries have values being tracked.", "type": "object", "properties": { "locationHash": { "format": "uint32", "description": "OPTIONAL - If this is tracking a DestinyLocationDefinition, this is the identifier for that location.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyLocationDefinition" } }, "itemHash": { "format": "uint32", "description": "OPTIONAL - If this is tracking the status of a DestinyInventoryItemDefinition, this is the identifier for that item.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "objectiveHash": { "format": "uint32", "description": "OPTIONAL - If this is tracking the status of a DestinyObjectiveDefinition, this is the identifier for that objective.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyObjectiveDefinition" } }, "activityHash": { "format": "uint32", "description": "OPTIONAL - If this is tracking the status of a DestinyActivityDefinition, this is the identifier for that activity.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "questlineItemHash": { "format": "uint32", "description": "OPTIONAL - If this is tracking the status of a quest, this is the identifier for the DestinyInventoryItemDefinition that containst that questline data.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "trackedDate": { "format": "date-time", "description": "OPTIONAL - I've got to level with you, I don't really know what this is. Is it when you started tracking it? Is it only populated for tracked items that have time limits?\r\nI don't know, but we can get at it - when I get time to actually test what it is, I'll update this. In the meantime, bask in the mysterious data.", "type": "string" } } }, "SingleComponentResponseOfDestinyProfileTransitoryComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Components.Profiles.DestinyProfileTransitoryComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Components.Metrics.DestinyMetricsComponent": { "type": "object", "properties": { "metrics": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Components.Metrics.DestinyMetricComponent" } }, "metricsRootNodeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } } }, "x-destiny-component-type-dependency": "Metrics" }, "Destiny.Components.Metrics.DestinyMetricComponent": { "type": "object", "properties": { "invisible": { "type": "boolean" }, "objectiveProgress": { "$ref": "#/definitions/Destiny.Quests.DestinyObjectiveProgress" } } }, "SingleComponentResponseOfDestinyMetricsComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Components.Metrics.DestinyMetricsComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Components.StringVariables.DestinyStringVariablesComponent": { "type": "object", "properties": { "integerValuesByHash": { "type": "object", "additionalProperties": { "format": "int32", "type": "integer" } } }, "x-destiny-component-type-dependency": "StringVariables" }, "SingleComponentResponseOfDestinyStringVariablesComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Components.StringVariables.DestinyStringVariablesComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Components.Social.DestinySocialCommendationsComponent": { "type": "object", "properties": { "totalScore": { "format": "int32", "type": "integer" }, "scoreDetailValues": { "type": "array", "items": { "format": "int32", "type": "integer" } }, "commendationNodeScoresByHash": { "type": "object", "additionalProperties": { "format": "int32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Social.DestinySocialCommendationNodeDefinition" } }, "commendationScoresByHash": { "type": "object", "additionalProperties": { "format": "int32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Social.DestinySocialCommendationDefinition" } } }, "x-destiny-component-type-dependency": "SocialCommendations" }, "Destiny.Definitions.Social.DestinySocialCommendationNodeDefinition": { "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "color": { "description": "The color associated with this group of commendations.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Misc.DestinyColor" } ] }, "parentCommendationNodeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Social.DestinySocialCommendationNodeDefinition" } }, "childCommendationNodeHashes": { "description": "A list of hashes that map to child commendation nodes. Only the root commendations node is expected to have child nodes.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Social.DestinySocialCommendationNodeDefinition" } }, "childCommendationHashes": { "description": "A list of hashes that map to child commendations.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Social.DestinySocialCommendationDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "SocialCommendationNodes" }, "Destiny.Definitions.Social.DestinySocialCommendationDefinition": { "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "cardImagePath": { "type": "string" }, "color": { "$ref": "#/definitions/Destiny.Misc.DestinyColor" }, "displayPriority": { "format": "int32", "type": "integer" }, "activityGivingLimit": { "format": "int32", "type": "integer" }, "parentCommendationNodeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Social.DestinySocialCommendationNodeDefinition" } }, "displayActivities": { "description": "The display properties for the the activities that this commendation is available in.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "SocialCommendations" }, "SingleComponentResponseOfDestinySocialCommendationsComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Components.Social.DestinySocialCommendationsComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Entities.Characters.DestinyCharacterComponent": { "description": "This component contains base properties of the character. You'll probably want to always request this component, but hey you do you.", "type": "object", "properties": { "membershipId": { "format": "int64", "description": "Every Destiny Profile has a membershipId. This is provided on the character as well for convenience.", "type": "integer" }, "membershipType": { "format": "int32", "description": "membershipType tells you the platform on which the character plays. Examine the BungieMembershipType enumeration for possible values.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } }, "characterId": { "format": "int64", "description": "The unique identifier for the character.", "type": "integer" }, "dateLastPlayed": { "format": "date-time", "description": "The last date that the user played Destiny.", "type": "string" }, "minutesPlayedThisSession": { "format": "int64", "description": "If the user is currently playing, this is how long they've been playing.", "type": "integer" }, "minutesPlayedTotal": { "format": "int64", "description": "If this value is 525,600, then they played Destiny for a year. Or they're a very dedicated Rent fan. Note that this includes idle time, not just time spent actually in activities shooting things.", "type": "integer" }, "light": { "format": "int32", "description": "The user's calculated \"Light Level\". Light level is an indicator of your power that mostly matters in the end game, once you've reached the maximum character level: it's a level that's dependent on the average Attack/Defense power of your items.", "type": "integer" }, "stats": { "description": "Your character's stats, such as Agility, Resilience, etc... *not* historical stats.\r\nYou'll have to call a different endpoint for those.", "type": "object", "additionalProperties": { "format": "int32", "type": "integer" } }, "raceHash": { "format": "uint32", "description": "Use this hash to look up the character's DestinyRaceDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyRaceDefinition" } }, "genderHash": { "format": "uint32", "description": "Use this hash to look up the character's DestinyGenderDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyGenderDefinition" } }, "classHash": { "format": "uint32", "description": "Use this hash to look up the character's DestinyClassDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyClassDefinition" } }, "raceType": { "format": "int32", "description": "Mostly for historical purposes at this point, this is an enumeration for the character's race.\r\nIt'll be preferable in the general case to look up the related definition: but for some people this was too convenient to remove.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyRace" } }, "classType": { "format": "int32", "description": "Mostly for historical purposes at this point, this is an enumeration for the character's class.\r\nIt'll be preferable in the general case to look up the related definition: but for some people this was too convenient to remove.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyClass" } }, "genderType": { "format": "int32", "description": "Mostly for historical purposes at this point, this is an enumeration for the character's Gender.\r\nIt'll be preferable in the general case to look up the related definition: but for some people this was too convenient to remove. And yeah, it's an enumeration and not a boolean. Fight me.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyGender" } }, "emblemPath": { "description": "A shortcut path to the user's currently equipped emblem image. If you're just showing summary info for a user, this is more convenient than examining their equipped emblem and looking up the definition.", "type": "string" }, "emblemBackgroundPath": { "description": "A shortcut path to the user's currently equipped emblem background image. If you're just showing summary info for a user, this is more convenient than examining their equipped emblem and looking up the definition.", "type": "string" }, "emblemHash": { "format": "uint32", "description": "The hash of the currently equipped emblem for the user. Can be used to look up the DestinyInventoryItemDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "emblemColor": { "description": "A shortcut for getting the background color of the user's currently equipped emblem without having to do a DestinyInventoryItemDefinition lookup.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Misc.DestinyColor" } ] }, "levelProgression": { "description": "The progression that indicates your character's level. Not their light level, but their character level: you know, the thing you max out a couple hours in and then ignore for the sake of light level.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.DestinyProgression" } ] }, "baseCharacterLevel": { "format": "int32", "description": "The \"base\" level of your character, not accounting for any light level.", "type": "integer" }, "percentToNextLevel": { "format": "float", "description": "A number between 0 and 100, indicating the whole and fractional % remaining to get to the next character level.", "type": "number" }, "titleRecordHash": { "format": "uint32", "description": "If this Character has a title assigned to it, this is the identifier of the DestinyRecordDefinition that has that title information.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Records.DestinyRecordDefinition" } } }, "x-destiny-component-type-dependency": "Characters" }, "Destiny.DestinyRace": { "format": "int32", "enum": [ "0", "1", "2", "3" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Human" }, { "numericValue": "1", "identifier": "Awoken" }, { "numericValue": "2", "identifier": "Exo" }, { "numericValue": "3", "identifier": "Unknown" } ] }, "Destiny.Definitions.DestinyRaceDefinition": { "description": "In Destiny, \"Races\" are really more like \"Species\". Sort of. I mean, are the Awoken a separate species from humans? I'm not sure. But either way, they're defined here. You'll see Exo, Awoken, and Human as examples of these Species. Players will choose one for their character.", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "raceType": { "format": "int32", "description": "An enumeration defining the existing, known Races/Species for player characters. This value will be the enum value matching this definition.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyRace" } }, "genderedRaceNames": { "description": "A localized string referring to the singular form of the Race's name when referred to in gendered form. Keyed by the DestinyGender.", "type": "object", "additionalProperties": { "type": "string" } }, "genderedRaceNamesByGenderHash": { "type": "object", "additionalProperties": { "type": "string" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyGenderDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Races" }, "DictionaryComponentResponseOfint64AndDestinyCharacterComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "Characters", "$ref": "#/definitions/Destiny.Entities.Characters.DestinyCharacterComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfint64AndDestinyInventoryComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Entities.Inventory.DestinyInventoryComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Components.Loadouts.DestinyLoadoutsComponent": { "type": "object", "properties": { "loadouts": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Components.Loadouts.DestinyLoadoutComponent" } } }, "x-destiny-component-type-dependency": "CharacterLoadouts" }, "Destiny.Components.Loadouts.DestinyLoadoutComponent": { "type": "object", "properties": { "colorHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Loadouts.DestinyLoadoutColorDefinition" } }, "iconHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Loadouts.DestinyLoadoutIconDefinition" } }, "nameHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Loadouts.DestinyLoadoutNameDefinition" } }, "items": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Components.Loadouts.DestinyLoadoutItemComponent" } } } }, "Destiny.Components.Loadouts.DestinyLoadoutItemComponent": { "type": "object", "properties": { "itemInstanceId": { "format": "int64", "type": "integer" }, "plugItemHashes": { "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } } } }, "Destiny.Definitions.Loadouts.DestinyLoadoutColorDefinition": { "type": "object", "properties": { "colorImagePath": { "type": "string" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "LoadoutColors" }, "Destiny.Definitions.Loadouts.DestinyLoadoutIconDefinition": { "type": "object", "properties": { "iconImagePath": { "type": "string" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "LoadoutIcons" }, "Destiny.Definitions.Loadouts.DestinyLoadoutNameDefinition": { "type": "object", "properties": { "name": { "type": "string" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "LoadoutNames" }, "DictionaryComponentResponseOfint64AndDestinyLoadoutsComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "CharacterLoadouts", "$ref": "#/definitions/Destiny.Components.Loadouts.DestinyLoadoutsComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Entities.Characters.DestinyCharacterProgressionComponent": { "description": "This component returns anything that could be considered \"Progression\" on a user: data where the user is gaining levels, reputation, completions, rewards, etc...", "type": "object", "properties": { "progressions": { "description": "A Dictionary of all known progressions for the Character, keyed by the Progression's hash.\r\nNot all progressions have user-facing data, but those who do will have that data contained in the DestinyProgressionDefinition.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.DestinyProgression" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyProgressionDefinition" } }, "factions": { "description": "A dictionary of all known Factions, keyed by the Faction's hash. It contains data about this character's status with the faction.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Progression.DestinyFactionProgression" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyFactionDefinition" } }, "milestones": { "description": "Milestones are related to the simple progressions shown in the game, but return additional and hopefully helpful information for users about the specifics of the Milestone's status.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Milestones.DestinyMilestone" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Milestones.DestinyMilestoneDefinition" } }, "quests": { "description": "If the user has any active quests, the quests' statuses will be returned here.\r\n Note that quests have been largely supplanted by Milestones, but that doesn't mean that they won't make a comeback independent of milestones at some point.\r\n (Fun fact: quests came back as I feared they would, but we never looped back to populate this... I'm going to put that in the backlog.)", "type": "array", "items": { "$ref": "#/definitions/Destiny.Quests.DestinyQuestStatus" } }, "uninstancedItemObjectives": { "description": "Sometimes, you have items in your inventory that don't have instances, but still have Objective information. This provides you that objective information for uninstanced items. \r\nThis dictionary is keyed by the item's hash: which you can use to look up the name and description for the overall task(s) implied by the objective. The value is the list of objectives for this item, and their statuses.", "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Quests.DestinyObjectiveProgress" } }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "uninstancedItemPerks": { "description": "Sometimes, you have items in your inventory that don't have instances, but still have perks (for example: Trials passage cards). This gives you the perk information for uninstanced items.\r\nThis dictionary is keyed by item hash, which you can use to look up the corresponding item definition. The value is the list of perks states for the item.", "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemPerks", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemPerksComponent" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "checklists": { "description": "The set of checklists that can be examined for this specific character, keyed by the hash identifier of the Checklist (DestinyChecklistDefinition)\r\nFor each checklist returned, its value is itself a Dictionary keyed by the checklist's hash identifier with the value being a boolean indicating if it's been discovered yet.", "type": "object", "additionalProperties": { "type": "object", "additionalProperties": { "type": "boolean" } }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Checklists.DestinyChecklistDefinition" } }, "seasonalArtifact": { "description": "Data related to your progress on the current season's artifact that can vary per character.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Artifacts.DestinyArtifactCharacterScoped" } ] } }, "x-destiny-component-type-dependency": "CharacterProgressions" }, "Destiny.Progression.DestinyFactionProgression": { "description": "Mostly for historical purposes, we segregate Faction progressions from other progressions. This is just a DestinyProgression with a shortcut for finding the DestinyFactionDefinition of the faction related to the progression.", "type": "object", "properties": { "factionHash": { "format": "uint32", "description": "The hash identifier of the Faction related to this progression. Use it to look up the DestinyFactionDefinition for more rendering info.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyFactionDefinition" } }, "factionVendorIndex": { "format": "int32", "description": "The index of the Faction vendor that is currently available. Will be set to -1 if no vendors are available.", "type": "integer" }, "progressionHash": { "format": "uint32", "description": "The hash identifier of the Progression in question. Use it to look up the DestinyProgressionDefinition in static data.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyProgressionDefinition" } }, "dailyProgress": { "format": "int32", "description": "The amount of progress earned today for this progression.", "type": "integer" }, "dailyLimit": { "format": "int32", "description": "If this progression has a daily limit, this is that limit.", "type": "integer" }, "weeklyProgress": { "format": "int32", "description": "The amount of progress earned toward this progression in the current week.", "type": "integer" }, "weeklyLimit": { "format": "int32", "description": "If this progression has a weekly limit, this is that limit.", "type": "integer" }, "currentProgress": { "format": "int32", "description": "This is the total amount of progress obtained overall for this progression (for instance, the total amount of Character Level experience earned)", "type": "integer" }, "level": { "format": "int32", "description": "This is the level of the progression (for instance, the Character Level).", "type": "integer" }, "levelCap": { "format": "int32", "description": "This is the maximum possible level you can achieve for this progression (for example, the maximum character level obtainable)", "type": "integer" }, "stepIndex": { "format": "int32", "description": "Progressions define their levels in \"steps\". Since the last step may be repeatable, the user may be at a higher level than the actual Step achieved in the progression. Not necessarily useful, but potentially interesting for those cruising the API. Relate this to the \"steps\" property of the DestinyProgression to see which step the user is on, if you care about that. (Note that this is Content Version dependent since it refers to indexes.)", "type": "integer" }, "progressToNextLevel": { "format": "int32", "description": "The amount of progression (i.e. \"Experience\") needed to reach the next level of this Progression. Jeez, progression is such an overloaded word.", "type": "integer" }, "nextLevelAt": { "format": "int32", "description": "The total amount of progression (i.e. \"Experience\") needed in order to reach the next level.", "type": "integer" }, "currentResetCount": { "format": "int32", "description": "The number of resets of this progression you've executed this season, if applicable to this progression.", "type": "integer" }, "seasonResets": { "description": "Information about historical resets of this progression, if there is any data for it.", "type": "array", "items": { "$ref": "#/definitions/Destiny.DestinyProgressionResetEntry" } }, "rewardItemStates": { "description": "Information about historical rewards for this progression, if there is any data for it.", "type": "array", "items": { "format": "int32", "description": "Represents the different states a progression reward item can be in.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyProgressionRewardItemState" } } } } }, "Destiny.Milestones.DestinyMilestone": { "description": "Represents a runtime instance of a user's milestone status. Live Milestone data should be combined with DestinyMilestoneDefinition data to show the user a picture of what is available for them to do in the game, and their status in regards to said \"things to do.\" Consider it a big, wonky to-do list, or Advisors 3.0 for those who remember the Destiny 1 API.", "type": "object", "properties": { "milestoneHash": { "format": "uint32", "description": "The unique identifier for the Milestone. Use it to look up the DestinyMilestoneDefinition, so you can combine the other data in this contract with static definition data.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Milestones.DestinyMilestoneDefinition" } }, "availableQuests": { "description": "Indicates what quests are available for this Milestone. Usually this will be only a single Quest, but some quests have multiple available that you can choose from at any given time. All possible quests for a milestone can be found in the DestinyMilestoneDefinition, but they must be combined with this Live data to determine which one(s) are actually active right now. It is possible for Milestones to not have any quests.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Milestones.DestinyMilestoneQuest" } }, "activities": { "description": "The currently active Activities in this milestone, when the Milestone is driven by Challenges.\r\nNot all Milestones have Challenges, but when they do this will indicate the Activities and Challenges under those Activities related to this Milestone.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Milestones.DestinyMilestoneChallengeActivity" } }, "values": { "description": "Milestones may have arbitrary key/value pairs associated with them, for data that users will want to know about but that doesn't fit neatly into any of the common components such as Quests. A good example of this would be - if this existed in Destiny 1 - the number of wins you currently have on your Trials of Osiris ticket. Looking in the DestinyMilestoneDefinition, you can use the string identifier of this dictionary to look up more info about the value, including localized string content for displaying the value. The value in the dictionary is the floating point number. The definition will tell you how to format this number.", "type": "object", "additionalProperties": { "format": "float", "type": "number" } }, "vendorHashes": { "description": "A milestone may have one or more active vendors that are \"related\" to it (that provide rewards, or that are the initiators of the Milestone). I already regret this, even as I'm typing it. [I told you I'd regret this] You see, sometimes a milestone may be directly correlated with a set of vendors that provide varying tiers of rewards. The player may not be able to interact with one or more of those vendors. This will return the hashes of the Vendors that the player *can* interact with, allowing you to show their current inventory as rewards or related items to the Milestone or its activities.\r\nBefore we even use it, it's already deprecated! How much of a bummer is that? We need more data.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDefinition" } }, "vendors": { "description": "Replaces vendorHashes, which I knew was going to be trouble the day it walked in the door. This will return not only what Vendors are active and relevant to the activity (in an implied order that you can choose to ignore), but also other data - for example, if the Vendor is featuring a specific item relevant to this event that you should show with them.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Milestones.DestinyMilestoneVendor" } }, "rewards": { "description": "If the entity to which this component is attached has known active Rewards for the player, this will detail information about those rewards, keyed by the RewardEntry Hash. (See DestinyMilestoneDefinition for more information about Reward Entries) Note that these rewards are not for the Quests related to the Milestone. Think of these as \"overview/checklist\" rewards that may be provided for Milestones that may provide rewards for performing a variety of tasks that aren't under a specific Quest.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Milestones.DestinyMilestoneRewardCategory" } }, "startDate": { "format": "date-time", "description": "If known, this is the date when the event last began or refreshed. It will only be populated for events with fixed and repeating start and end dates.", "type": "string" }, "endDate": { "format": "date-time", "description": "If known, this is the date when the event will next end or repeat. It will only be populated for events with fixed and repeating start and end dates.", "type": "string" }, "order": { "format": "int32", "description": "Used for ordering milestones in a display to match how we order them in BNet. May pull from static data, or possibly in the future from dynamic information.", "type": "integer" } } }, "Destiny.Milestones.DestinyMilestoneQuest": { "description": "If a Milestone has one or more Quests, this will contain the live information for the character's status with one of those quests.", "type": "object", "properties": { "questItemHash": { "format": "uint32", "description": "Quests are defined as Items in content. As such, this is the hash identifier of the DestinyInventoryItemDefinition that represents this quest. It will have pointers to all of the steps in the quest, and display information for the quest (title, description, icon etc) Individual steps will be referred to in the Quest item's DestinyInventoryItemDefinition.setData property, and themselves are Items with their own renderable data.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "status": { "description": "The current status of the quest for the character making the request.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Quests.DestinyQuestStatus" } ] }, "activity": { "description": "*IF* the Milestone has an active Activity that can give you greater details about what you need to do, it will be returned here. Remember to associate this with the DestinyMilestoneDefinition's activities to get details about the activity, including what specific quest it is related to if you have multiple quests to choose from.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Milestones.DestinyMilestoneActivity" } ] }, "challenges": { "description": "The activities referred to by this quest can have many associated challenges. They are all contained here, with activityHashes so that you can associate them with the specific activity variants in which they can be found. In retrospect, I probably should have put these under the specific Activity Variants, but it's too late to change it now. Theoretically, a quest without Activities can still have Challenges, which is why this is on a higher level than activity/variants, but it probably should have been in both places. That may come as a later revision.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Challenges.DestinyChallengeStatus" } } } }, "Destiny.Quests.DestinyQuestStatus": { "description": "Data regarding the progress of a Quest for a specific character. Quests are composed of multiple steps, each with potentially multiple objectives: this QuestStatus will return Objective data for the *currently active* step in this quest.", "type": "object", "properties": { "questHash": { "format": "uint32", "description": "The hash identifier for the Quest Item. (Note: Quests are defined as Items, and thus you would use this to look up the quest's DestinyInventoryItemDefinition). For information on all steps in the quest, you can then examine its DestinyInventoryItemDefinition.setData property for Quest Steps (which are *also* items). You can use the Item Definition to display human readable data about the overall quest.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "stepHash": { "format": "uint32", "description": "The hash identifier of the current Quest Step, which is also a DestinyInventoryItemDefinition. You can use this to get human readable data about the current step and what to do in that step.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "stepObjectives": { "description": "A step can have multiple objectives. This will give you the progress for each objective in the current step, in the order in which they are rendered in-game.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Quests.DestinyObjectiveProgress" } }, "tracked": { "description": "Whether or not the quest is tracked", "type": "boolean" }, "itemInstanceId": { "format": "int64", "description": "The current Quest Step will be an instanced item in the player's inventory. If you care about that, this is the instance ID of that item.", "type": "integer" }, "completed": { "description": "Whether or not the whole quest has been completed, regardless of whether or not you have redeemed the rewards for the quest.", "type": "boolean" }, "redeemed": { "description": "Whether or not you have redeemed rewards for this quest.", "type": "boolean" }, "started": { "description": "Whether or not you have started this quest.", "type": "boolean" }, "vendorHash": { "format": "uint32", "description": "If the quest has a related Vendor that you should talk to in order to initiate the quest/earn rewards/continue the quest, this will be the hash identifier of that Vendor. Look it up its DestinyVendorDefinition.", "type": "integer" } } }, "Destiny.Milestones.DestinyMilestoneActivity": { "description": "Sometimes, we know the specific activity that the Milestone wants you to play. This entity provides additional information about that Activity and all of its variants. (sometimes there's only one variant, but I think you get the point)", "type": "object", "properties": { "activityHash": { "format": "uint32", "description": "The hash of an arbitrarily chosen variant of this activity. We'll go ahead and call that the \"canonical\" activity, because if you're using this value you should only use it for properties that are common across the variants: things like the name of the activity, it's location, etc... Use this hash to look up the DestinyActivityDefinition of this activity for rendering data.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "activityModeHash": { "format": "uint32", "description": "The hash identifier of the most specific Activity Mode under which this activity is played. This is useful for situations where the activity in question is - for instance - a PVP map, but it's not clear what mode the PVP map is being played under. If it's a playlist, this will be less specific: but hopefully useful in some way.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityModeDefinition" } }, "activityModeType": { "format": "int32", "description": "The enumeration equivalent of the most specific Activity Mode under which this activity is played.", "enum": [ "0", "2", "3", "4", "5", "6", "7", "9", "10", "11", "12", "13", "15", "16", "17", "18", "19", "20", "21", "22", "24", "25", "26", "27", "28", "29", "30", "31", "32", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "2", "identifier": "Story" }, { "numericValue": "3", "identifier": "Strike" }, { "numericValue": "4", "identifier": "Raid" }, { "numericValue": "5", "identifier": "AllPvP" }, { "numericValue": "6", "identifier": "Patrol" }, { "numericValue": "7", "identifier": "AllPvE" }, { "numericValue": "9", "identifier": "Reserved9" }, { "numericValue": "10", "identifier": "Control" }, { "numericValue": "11", "identifier": "Reserved11" }, { "numericValue": "12", "identifier": "Clash", "description": "Clash -> Destiny's name for Team Deathmatch. 4v4 combat, the team with the highest kills at the end of time wins." }, { "numericValue": "13", "identifier": "Reserved13" }, { "numericValue": "15", "identifier": "CrimsonDoubles" }, { "numericValue": "16", "identifier": "Nightfall" }, { "numericValue": "17", "identifier": "HeroicNightfall" }, { "numericValue": "18", "identifier": "AllStrikes" }, { "numericValue": "19", "identifier": "IronBanner" }, { "numericValue": "20", "identifier": "Reserved20" }, { "numericValue": "21", "identifier": "Reserved21" }, { "numericValue": "22", "identifier": "Reserved22" }, { "numericValue": "24", "identifier": "Reserved24" }, { "numericValue": "25", "identifier": "AllMayhem" }, { "numericValue": "26", "identifier": "Reserved26" }, { "numericValue": "27", "identifier": "Reserved27" }, { "numericValue": "28", "identifier": "Reserved28" }, { "numericValue": "29", "identifier": "Reserved29" }, { "numericValue": "30", "identifier": "Reserved30" }, { "numericValue": "31", "identifier": "Supremacy" }, { "numericValue": "32", "identifier": "PrivateMatchesAll" }, { "numericValue": "37", "identifier": "Survival" }, { "numericValue": "38", "identifier": "Countdown" }, { "numericValue": "39", "identifier": "TrialsOfTheNine" }, { "numericValue": "40", "identifier": "Social" }, { "numericValue": "41", "identifier": "TrialsCountdown" }, { "numericValue": "42", "identifier": "TrialsSurvival" }, { "numericValue": "43", "identifier": "IronBannerControl" }, { "numericValue": "44", "identifier": "IronBannerClash" }, { "numericValue": "45", "identifier": "IronBannerSupremacy" }, { "numericValue": "46", "identifier": "ScoredNightfall" }, { "numericValue": "47", "identifier": "ScoredHeroicNightfall" }, { "numericValue": "48", "identifier": "Rumble" }, { "numericValue": "49", "identifier": "AllDoubles" }, { "numericValue": "50", "identifier": "Doubles" }, { "numericValue": "51", "identifier": "PrivateMatchesClash" }, { "numericValue": "52", "identifier": "PrivateMatchesControl" }, { "numericValue": "53", "identifier": "PrivateMatchesSupremacy" }, { "numericValue": "54", "identifier": "PrivateMatchesCountdown" }, { "numericValue": "55", "identifier": "PrivateMatchesSurvival" }, { "numericValue": "56", "identifier": "PrivateMatchesMayhem" }, { "numericValue": "57", "identifier": "PrivateMatchesRumble" }, { "numericValue": "58", "identifier": "HeroicAdventure" }, { "numericValue": "59", "identifier": "Showdown" }, { "numericValue": "60", "identifier": "Lockdown" }, { "numericValue": "61", "identifier": "Scorched" }, { "numericValue": "62", "identifier": "ScorchedTeam" }, { "numericValue": "63", "identifier": "Gambit" }, { "numericValue": "64", "identifier": "AllPvECompetitive" }, { "numericValue": "65", "identifier": "Breakthrough" }, { "numericValue": "66", "identifier": "BlackArmoryRun" }, { "numericValue": "67", "identifier": "Salvage" }, { "numericValue": "68", "identifier": "IronBannerSalvage" }, { "numericValue": "69", "identifier": "PvPCompetitive" }, { "numericValue": "70", "identifier": "PvPQuickplay" }, { "numericValue": "71", "identifier": "ClashQuickplay" }, { "numericValue": "72", "identifier": "ClashCompetitive" }, { "numericValue": "73", "identifier": "ControlQuickplay" }, { "numericValue": "74", "identifier": "ControlCompetitive" }, { "numericValue": "75", "identifier": "GambitPrime" }, { "numericValue": "76", "identifier": "Reckoning" }, { "numericValue": "77", "identifier": "Menagerie" }, { "numericValue": "78", "identifier": "VexOffensive" }, { "numericValue": "79", "identifier": "NightmareHunt" }, { "numericValue": "80", "identifier": "Elimination" }, { "numericValue": "81", "identifier": "Momentum" }, { "numericValue": "82", "identifier": "Dungeon" }, { "numericValue": "83", "identifier": "Sundial" }, { "numericValue": "84", "identifier": "TrialsOfOsiris" }, { "numericValue": "85", "identifier": "Dares" }, { "numericValue": "86", "identifier": "Offensive" }, { "numericValue": "87", "identifier": "LostSector" }, { "numericValue": "88", "identifier": "Rift" }, { "numericValue": "89", "identifier": "ZoneControl" }, { "numericValue": "90", "identifier": "IronBannerRift" }, { "numericValue": "91", "identifier": "IronBannerZoneControl" } ] }, "modifierHashes": { "description": "If the activity has modifiers, this will be the list of modifiers that all variants have in common. Perform lookups against DestinyActivityModifierDefinition which defines the modifier being applied to get at the modifier data. Note that, in the DestiyActivityDefinition, you will see many more modifiers than this being referred to: those are all *possible* modifiers for the activity, not the active ones. Use only the active ones to match what's really live.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.ActivityModifiers.DestinyActivityModifierDefinition" } }, "variants": { "description": "If you want more than just name/location/etc... you're going to have to dig into and show the variants of the conceptual activity. These will differ in seemingly arbitrary ways, like difficulty level and modifiers applied. Show it in whatever way tickles your fancy.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Milestones.DestinyMilestoneActivityVariant" } } } }, "Destiny.Milestones.DestinyMilestoneActivityVariant": { "description": "Represents custom data that we know about an individual variant of an activity.", "type": "object", "properties": { "activityHash": { "format": "uint32", "description": "The hash for the specific variant of the activity related to this milestone. You can pull more detailed static info from the DestinyActivityDefinition, such as difficulty level.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "completionStatus": { "description": "An OPTIONAL component: if it makes sense to talk about this activity variant in terms of whether or not it has been completed or what progress you have made in it, this will be returned. Otherwise, this will be NULL.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Milestones.DestinyMilestoneActivityCompletionStatus" } ] }, "activityModeHash": { "format": "uint32", "description": "The hash identifier of the most specific Activity Mode under which this activity is played. This is useful for situations where the activity in question is - for instance - a PVP map, but it's not clear what mode the PVP map is being played under. If it's a playlist, this will be less specific: but hopefully useful in some way.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityModeDefinition" } }, "activityModeType": { "format": "int32", "description": "The enumeration equivalent of the most specific Activity Mode under which this activity is played.", "enum": [ "0", "2", "3", "4", "5", "6", "7", "9", "10", "11", "12", "13", "15", "16", "17", "18", "19", "20", "21", "22", "24", "25", "26", "27", "28", "29", "30", "31", "32", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "2", "identifier": "Story" }, { "numericValue": "3", "identifier": "Strike" }, { "numericValue": "4", "identifier": "Raid" }, { "numericValue": "5", "identifier": "AllPvP" }, { "numericValue": "6", "identifier": "Patrol" }, { "numericValue": "7", "identifier": "AllPvE" }, { "numericValue": "9", "identifier": "Reserved9" }, { "numericValue": "10", "identifier": "Control" }, { "numericValue": "11", "identifier": "Reserved11" }, { "numericValue": "12", "identifier": "Clash", "description": "Clash -> Destiny's name for Team Deathmatch. 4v4 combat, the team with the highest kills at the end of time wins." }, { "numericValue": "13", "identifier": "Reserved13" }, { "numericValue": "15", "identifier": "CrimsonDoubles" }, { "numericValue": "16", "identifier": "Nightfall" }, { "numericValue": "17", "identifier": "HeroicNightfall" }, { "numericValue": "18", "identifier": "AllStrikes" }, { "numericValue": "19", "identifier": "IronBanner" }, { "numericValue": "20", "identifier": "Reserved20" }, { "numericValue": "21", "identifier": "Reserved21" }, { "numericValue": "22", "identifier": "Reserved22" }, { "numericValue": "24", "identifier": "Reserved24" }, { "numericValue": "25", "identifier": "AllMayhem" }, { "numericValue": "26", "identifier": "Reserved26" }, { "numericValue": "27", "identifier": "Reserved27" }, { "numericValue": "28", "identifier": "Reserved28" }, { "numericValue": "29", "identifier": "Reserved29" }, { "numericValue": "30", "identifier": "Reserved30" }, { "numericValue": "31", "identifier": "Supremacy" }, { "numericValue": "32", "identifier": "PrivateMatchesAll" }, { "numericValue": "37", "identifier": "Survival" }, { "numericValue": "38", "identifier": "Countdown" }, { "numericValue": "39", "identifier": "TrialsOfTheNine" }, { "numericValue": "40", "identifier": "Social" }, { "numericValue": "41", "identifier": "TrialsCountdown" }, { "numericValue": "42", "identifier": "TrialsSurvival" }, { "numericValue": "43", "identifier": "IronBannerControl" }, { "numericValue": "44", "identifier": "IronBannerClash" }, { "numericValue": "45", "identifier": "IronBannerSupremacy" }, { "numericValue": "46", "identifier": "ScoredNightfall" }, { "numericValue": "47", "identifier": "ScoredHeroicNightfall" }, { "numericValue": "48", "identifier": "Rumble" }, { "numericValue": "49", "identifier": "AllDoubles" }, { "numericValue": "50", "identifier": "Doubles" }, { "numericValue": "51", "identifier": "PrivateMatchesClash" }, { "numericValue": "52", "identifier": "PrivateMatchesControl" }, { "numericValue": "53", "identifier": "PrivateMatchesSupremacy" }, { "numericValue": "54", "identifier": "PrivateMatchesCountdown" }, { "numericValue": "55", "identifier": "PrivateMatchesSurvival" }, { "numericValue": "56", "identifier": "PrivateMatchesMayhem" }, { "numericValue": "57", "identifier": "PrivateMatchesRumble" }, { "numericValue": "58", "identifier": "HeroicAdventure" }, { "numericValue": "59", "identifier": "Showdown" }, { "numericValue": "60", "identifier": "Lockdown" }, { "numericValue": "61", "identifier": "Scorched" }, { "numericValue": "62", "identifier": "ScorchedTeam" }, { "numericValue": "63", "identifier": "Gambit" }, { "numericValue": "64", "identifier": "AllPvECompetitive" }, { "numericValue": "65", "identifier": "Breakthrough" }, { "numericValue": "66", "identifier": "BlackArmoryRun" }, { "numericValue": "67", "identifier": "Salvage" }, { "numericValue": "68", "identifier": "IronBannerSalvage" }, { "numericValue": "69", "identifier": "PvPCompetitive" }, { "numericValue": "70", "identifier": "PvPQuickplay" }, { "numericValue": "71", "identifier": "ClashQuickplay" }, { "numericValue": "72", "identifier": "ClashCompetitive" }, { "numericValue": "73", "identifier": "ControlQuickplay" }, { "numericValue": "74", "identifier": "ControlCompetitive" }, { "numericValue": "75", "identifier": "GambitPrime" }, { "numericValue": "76", "identifier": "Reckoning" }, { "numericValue": "77", "identifier": "Menagerie" }, { "numericValue": "78", "identifier": "VexOffensive" }, { "numericValue": "79", "identifier": "NightmareHunt" }, { "numericValue": "80", "identifier": "Elimination" }, { "numericValue": "81", "identifier": "Momentum" }, { "numericValue": "82", "identifier": "Dungeon" }, { "numericValue": "83", "identifier": "Sundial" }, { "numericValue": "84", "identifier": "TrialsOfOsiris" }, { "numericValue": "85", "identifier": "Dares" }, { "numericValue": "86", "identifier": "Offensive" }, { "numericValue": "87", "identifier": "LostSector" }, { "numericValue": "88", "identifier": "Rift" }, { "numericValue": "89", "identifier": "ZoneControl" }, { "numericValue": "90", "identifier": "IronBannerRift" }, { "numericValue": "91", "identifier": "IronBannerZoneControl" } ] } } }, "Destiny.Milestones.DestinyMilestoneActivityCompletionStatus": { "description": "Represents this player's personal completion status for the Activity under a Milestone, if the activity has trackable completion and progress information. (most activities won't, or the concept won't apply. For instance, it makes sense to talk about a tier of a raid as being Completed or having progress, but it doesn't make sense to talk about a Crucible Playlist in those terms.", "type": "object", "properties": { "completed": { "description": "If the activity has been \"completed\", that information will be returned here.", "type": "boolean" }, "phases": { "description": "If the Activity has discrete \"phases\" that we can track, that info will be here. Otherwise, this value will be NULL. Note that this is a list and not a dictionary: the order implies the ascending order of phases or progression in this activity.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Milestones.DestinyMilestoneActivityPhase" } } } }, "Destiny.Milestones.DestinyMilestoneActivityPhase": { "description": "Represents whatever information we can return about an explicit phase in an activity. In the future, I hope we'll have more than just \"guh, you done gone and did something,\" but for the forseeable future that's all we've got. I'm making it more than just a list of booleans out of that overly-optimistic hope.", "type": "object", "properties": { "complete": { "description": "Indicates if the phase has been completed.", "type": "boolean" }, "phaseHash": { "format": "uint32", "description": "In DestinyActivityDefinition, if the activity has phases, there will be a set of phases defined in the \"insertionPoints\" property. This is the hash that maps to that phase.", "type": "integer" } } }, "Destiny.Challenges.DestinyChallengeStatus": { "description": "Represents the status and other related information for a challenge that is - or was - available to a player. \r\nA challenge is a bonus objective, generally tacked onto Quests or Activities, that provide additional variations on play.", "type": "object", "properties": { "objective": { "description": "The progress - including completion status - of the active challenge.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Quests.DestinyObjectiveProgress" } ] } } }, "Destiny.Milestones.DestinyMilestoneChallengeActivity": { "type": "object", "properties": { "activityHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "challenges": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Challenges.DestinyChallengeStatus" } }, "modifierHashes": { "description": "If the activity has modifiers, this will be the list of modifiers that all variants have in common. Perform lookups against DestinyActivityModifierDefinition which defines the modifier being applied to get at the modifier data.\r\nNote that, in the DestiyActivityDefinition, you will see many more modifiers than this being referred to: those are all *possible* modifiers for the activity, not the active ones. Use only the active ones to match what's really live.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.ActivityModifiers.DestinyActivityModifierDefinition" } }, "booleanActivityOptions": { "description": "The set of activity options for this activity, keyed by an identifier that's unique for this activity (not guaranteed to be unique between or across all activities, though should be unique for every *variant* of a given *conceptual* activity: for instance, the original D2 Raid has many variant DestinyActivityDefinitions. While other activities could potentially have the same option hashes, for any given D2 base Raid variant the hash will be unique).\r\nAs a concrete example of this data, the hashes you get for Raids will correspond to the currently active \"Challenge Mode\".\r\nWe don't have any human readable information for these, but saavy 3rd party app users could manually associate the key (a hash identifier for the \"option\" that is enabled/disabled) and the value (whether it's enabled or disabled presently)\r\nOn our side, we don't necessarily even know what these are used for (the game designers know, but we don't), and we have no human readable data for them. In order to use them, you will have to do some experimentation.", "type": "object", "additionalProperties": { "type": "boolean" } }, "loadoutRequirementIndex": { "format": "int32", "description": "If returned, this is the index into the DestinyActivityDefinition's \"loadouts\" property, indicating the currently active loadout requirements.", "type": "integer" }, "phases": { "description": "If the Activity has discrete \"phases\" that we can track, that info will be here. Otherwise, this value will be NULL. Note that this is a list and not a dictionary: the order implies the ascending order of phases or progression in this activity.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Milestones.DestinyMilestoneActivityPhase" } } } }, "Destiny.Milestones.DestinyMilestoneVendor": { "description": "If a Milestone has one or more Vendors that are relevant to it, this will contain information about that vendor that you can choose to show.", "type": "object", "properties": { "vendorHash": { "format": "uint32", "description": "The hash identifier of the Vendor related to this Milestone. You can show useful things from this, such as thier Faction icon or whatever you might care about.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDefinition" } }, "previewItemHash": { "format": "uint32", "description": "If this vendor is featuring a specific item for this event, this will be the hash identifier of that item. I'm taking bets now on how long we go before this needs to be a list or some other, more complex representation instead and I deprecate this too. I'm going to go with 5 months. Calling it now, 2017-09-14 at 9:46pm PST.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } } } }, "Destiny.Milestones.DestinyMilestoneRewardCategory": { "description": "Represents a category of \"summary\" rewards that can be earned for the Milestone regardless of specific quest rewards that can be earned.", "type": "object", "properties": { "rewardCategoryHash": { "format": "uint32", "description": "Look up the relevant DestinyMilestoneDefinition, and then use rewardCategoryHash to look up the category info in DestinyMilestoneDefinition.rewards.", "type": "integer" }, "entries": { "description": "The individual reward entries for this category, and their status.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Milestones.DestinyMilestoneRewardEntry" } } } }, "Destiny.Milestones.DestinyMilestoneRewardEntry": { "description": "The character-specific data for a milestone's reward entry. See DestinyMilestoneDefinition for more information about Reward Entries.", "type": "object", "properties": { "rewardEntryHash": { "format": "uint32", "description": "The identifier for the reward entry in question. It is important to look up the related DestinyMilestoneRewardEntryDefinition to get the static details about the reward, which you can do by looking up the milestone's DestinyMilestoneDefinition and examining the DestinyMilestoneDefinition.rewards[rewardCategoryHash].rewardEntries[rewardEntryHash] data.", "type": "integer" }, "earned": { "description": "If TRUE, the player has earned this reward.", "type": "boolean" }, "redeemed": { "description": "If TRUE, the player has redeemed/picked up/obtained this reward. Feel free to alias this to \"gotTheShinyBauble\" in your own codebase.", "type": "boolean" } } }, "Destiny.Definitions.Milestones.DestinyMilestoneDefinition": { "description": "Milestones are an in-game concept where they're attempting to tell you what you can do next in-game.\r\nIf that sounds a lot like Advisors in Destiny 1, it is! So we threw out Advisors in the Destiny 2 API and tacked all of the data we would have put on Advisors onto Milestones instead.\r\nEach Milestone represents something going on in the game right now:\r\n- A \"ritual activity\" you can perform, like nightfall\r\n- A \"special event\" that may have activities related to it, like Taco Tuesday (there's no Taco Tuesday in Destiny 2)\r\n- A checklist you can fulfill, like helping your Clan complete all of its weekly objectives\r\n- A tutorial quest you can play through, like the introduction to the Crucible.\r\nMost of these milestones appear in game as well. Some of them are BNet only, because we're so extra. You're welcome.\r\nThere are some important caveats to understand about how we currently render Milestones and their deficiencies. The game currently doesn't have any content that actually tells you oughtright *what* the Milestone is: that is to say, what you'll be doing. The best we get is either a description of the overall Milestone, or of the Quest that the Milestone is having you partake in: which is usually something that assumes you already know what it's talking about, like \"Complete 5 Challenges\". 5 Challenges for what? What's a challenge? These are not questions that the Milestone data will answer for you unfortunately.\r\nThis isn't great, and in the future I'd like to add some custom text to give you more contextual information to pass on to your users. But for now, you can do what we do to render what little display info we do have:\r\nStart by looking at the currently active quest (ideally, you've fetched DestinyMilestone or DestinyPublicMilestone data from the API, so you know the currently active quest for the Milestone in question). Look up the Quests property in the Milestone Definition, and check if it has display properties. If it does, show that as the description of the Milestone. If it doesn't, fall back on the Milestone's description.\r\nThis approach will let you avoid, whenever possible, the even less useful (and sometimes nonexistant) milestone-level names and descriptions.", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "displayPreference": { "format": "int32", "description": "A hint to the UI to indicate what to show as the display properties for this Milestone when showing \"Live\" milestone data. Feel free to show more than this if desired: this hint is meant to simplify our own UI, but it may prove useful to you as well.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.Definitions.Milestones.DestinyMilestoneDisplayPreference" } }, "image": { "description": "A custom image someone made just for the milestone. Isn't that special?", "type": "string" }, "milestoneType": { "format": "int32", "description": "An enumeration listing one of the possible types of milestones. Check out the DestinyMilestoneType enum for more info!", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.Definitions.Milestones.DestinyMilestoneType" } }, "recruitable": { "description": "If True, then the Milestone has been integrated with BNet's recruiting feature.", "type": "boolean" }, "friendlyName": { "description": "If the milestone has a friendly identifier for association with other features - such as Recruiting - that identifier can be found here. This is \"friendly\" in that it looks better in a URL than whatever the identifier for the Milestone actually is.", "type": "string" }, "showInExplorer": { "description": "If TRUE, this entry should be returned in the list of milestones for the \"Explore Destiny\" (i.e. new BNet homepage) features of Bungie.net (as long as the underlying event is active) Note that this is a property specifically used by BNet and the companion app for the \"Live Events\" feature of the front page/welcome view: it's not a reflection of what you see in-game.", "type": "boolean" }, "showInMilestones": { "description": "Determines whether we'll show this Milestone in the user's personal Milestones list.", "type": "boolean" }, "explorePrioritizesActivityImage": { "description": "If TRUE, \"Explore Destiny\" (the front page of BNet and the companion app) prioritize using the activity image over any overriding Quest or Milestone image provided. This unfortunate hack is brought to you by Trials of The Nine.", "type": "boolean" }, "hasPredictableDates": { "description": "A shortcut for clients - and the server - to understand whether we can predict the start and end dates for this event. In practice, there are multiple ways that an event could have predictable date ranges, but not all events will be able to be predicted via any mechanism (for instance, events that are manually triggered on and off)", "type": "boolean" }, "quests": { "description": "The full set of possible Quests that give the overview of the Milestone event/activity in question. Only one of these can be active at a time for a given Conceptual Milestone, but many of them may be \"available\" for the user to choose from. (for instance, with Milestones you can choose from the three available Quests, but only one can be active at a time) Keyed by the quest item.\r\nAs of Forsaken (~September 2018), Quest-style Milestones are being removed for many types of activities. There will likely be further revisions to the Milestone concept in the future.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Definitions.Milestones.DestinyMilestoneQuestDefinition" } }, "rewards": { "description": "If this milestone can provide rewards, this will define the categories into which the individual reward entries are placed.\r\nThis is keyed by the Category's hash, which is only guaranteed to be unique within a given Milestone.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Definitions.Milestones.DestinyMilestoneRewardCategoryDefinition" } }, "vendorsDisplayTitle": { "description": "If you're going to show Vendors for the Milestone, you can use this as a localized \"header\" for the section where you show that vendor data. It'll provide a more context-relevant clue about what the vendor's role is in the Milestone.", "type": "string" }, "vendors": { "description": "Sometimes, milestones will have rewards provided by Vendors. This definition gives the information needed to understand which vendors are relevant, the order in which they should be returned if order matters, and the conditions under which the Vendor is relevant to the user.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Milestones.DestinyMilestoneVendorDefinition" } }, "values": { "description": "Sometimes, milestones will have arbitrary values associated with them that are of interest to us or to third party developers. This is the collection of those values' definitions, keyed by the identifier of the value and providing useful definition information such as localizable names and descriptions for the value.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Definitions.Milestones.DestinyMilestoneValueDefinition" } }, "isInGameMilestone": { "description": "Some milestones are explicit objectives that you can see and interact with in the game. Some milestones are more conceptual, built by BNet to help advise you on activities and events that happen in-game but that aren't explicitly shown in game as Milestones. If this is TRUE, you can see this as a milestone in the game. If this is FALSE, it's an event or activity you can participate in, but you won't see it as a Milestone in the game's UI.", "type": "boolean" }, "activities": { "description": "A Milestone can now be represented by one or more activities directly (without a backing Quest), and that activity can have many challenges, modifiers, and related to it.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Milestones.DestinyMilestoneChallengeActivityDefinition" } }, "defaultOrder": { "format": "int32", "type": "integer" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Milestones" }, "Destiny.Definitions.Milestones.DestinyMilestoneDisplayPreference": { "format": "int32", "description": "A hint for the UI as to what display information ought to be shown. Defaults to showing the static MilestoneDefinition's display properties.\r\n If for some reason the indicated property is not populated, fall back to the MilestoneDefinition.displayProperties.", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "MilestoneDefinition", "description": "Indicates you should show DestinyMilestoneDefinition.displayProperties for this Milestone." }, { "numericValue": "1", "identifier": "CurrentQuestSteps", "description": "Indicates you should show the displayProperties for any currently active Quest Steps in DestinyMilestone.availableQuests." }, { "numericValue": "2", "identifier": "CurrentActivityChallenges", "description": "Indicates you should show the displayProperties for any currently active Activities and their Challenges in DestinyMilestone.activities." } ] }, "Destiny.Definitions.Milestones.DestinyMilestoneType": { "format": "int32", "description": "The type of milestone. Milestones can be Tutorials, one-time/triggered/non-repeating but not necessarily tutorials, or Repeating Milestones.", "enum": [ "0", "1", "2", "3", "4", "5" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Unknown" }, { "numericValue": "1", "identifier": "Tutorial", "description": "One-time milestones that are specifically oriented toward teaching players about new mechanics and gameplay modes." }, { "numericValue": "2", "identifier": "OneTime", "description": "Milestones that, once completed a single time, can never be repeated." }, { "numericValue": "3", "identifier": "Weekly", "description": "Milestones that repeat/reset on a weekly basis. They need not all reset on the same day or time, but do need to reset weekly to qualify for this type." }, { "numericValue": "4", "identifier": "Daily", "description": "Milestones that repeat or reset on a daily basis." }, { "numericValue": "5", "identifier": "Special", "description": "Special indicates that the event is not on a daily/weekly cadence, but does occur more than once. For instance, Iron Banner in Destiny 1 or the Dawning were examples of what could be termed \"Special\" events." } ] }, "Destiny.Definitions.Milestones.DestinyMilestoneQuestDefinition": { "description": "Any data we need to figure out whether this Quest Item is the currently active one for the conceptual Milestone. Even just typing this description, I already regret it.", "type": "object", "properties": { "questItemHash": { "format": "uint32", "description": "The item representing this Milestone quest. Use this hash to look up the DestinyInventoryItemDefinition for the quest to find its steps and human readable data.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "displayProperties": { "description": "The individual quests may have different definitions from the overall milestone: if there's a specific active quest, use these displayProperties instead of that of the overall DestinyMilestoneDefinition.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "overrideImage": { "description": "If populated, this image can be shown instead of the generic milestone's image when this quest is live, or it can be used to show a background image for the quest itself that differs from that of the Activity or the Milestone.", "type": "string" }, "questRewards": { "description": "The rewards you will get for completing this quest, as best as we could extract them from our data. Sometimes, it'll be a decent amount of data. Sometimes, it's going to be sucky. Sorry.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Milestones.DestinyMilestoneQuestRewardsDefinition" } ] }, "activities": { "description": "The full set of all possible \"conceptual activities\" that are related to this Milestone. Tiers or alternative modes of play within these conceptual activities will be defined as sub-entities. Keyed by the Conceptual Activity Hash. Use the key to look up DestinyActivityDefinition.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Definitions.Milestones.DestinyMilestoneActivityDefinition" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "destinationHash": { "format": "uint32", "description": "Sometimes, a Milestone's quest is related to an entire Destination rather than a specific activity. In that situation, this will be the hash of that Destination. Hotspots are currently the only Milestones that expose this data, but that does not preclude this data from being returned for other Milestones in the future.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyDestinationDefinition" } } } }, "Destiny.Definitions.Milestones.DestinyMilestoneQuestRewardsDefinition": { "description": "If rewards are given in a quest - as opposed to overall in the entire Milestone - there's way less to track. We're going to simplify this contract as a result. However, this also gives us the opportunity to potentially put more than just item information into the reward data if we're able to mine it out in the future. Remember this if you come back and ask \"why are quest reward items nested inside of their own class?\"", "type": "object", "properties": { "items": { "description": "The items that represent your reward for completing the quest.\r\nBe warned, these could be \"dummy\" items: items that are only used to render a good-looking in-game tooltip, but aren't the actual items themselves.\r\nFor instance, when experience is given there's often a dummy item representing \"experience\", with quantity being the amount of experience you got. We don't have a programmatic association between those and whatever Progression is actually getting that experience... yet.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Milestones.DestinyMilestoneQuestRewardItem" } } } }, "Destiny.Definitions.Milestones.DestinyMilestoneQuestRewardItem": { "description": "A subclass of DestinyItemQuantity, that provides not just the item and its quantity but also information that BNet can - at some point - use internally to provide more robust runtime information about the item's qualities.\r\nIf you want it, please ask! We're just out of time to wire it up right now. Or a clever person just may do it with our existing endpoints.", "type": "object", "properties": { "vendorHash": { "format": "uint32", "description": "The quest reward item *may* be associated with a vendor. If so, this is that vendor. Use this hash to look up the DestinyVendorDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDefinition" } }, "vendorItemIndex": { "format": "int32", "description": "The quest reward item *may* be associated with a vendor. If so, this is the index of the item being sold, which we can use at runtime to find instanced item information for the reward item.", "type": "integer" }, "itemHash": { "format": "uint32", "description": "The hash identifier for the item in question. Use it to look up the item's DestinyInventoryItemDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "itemInstanceId": { "format": "int64", "description": "If this quantity is referring to a specific instance of an item, this will have the item's instance ID. Normally, this will be null.", "type": "integer" }, "quantity": { "format": "int32", "description": "The amount of the item needed/available depending on the context of where DestinyItemQuantity is being used.", "type": "integer" }, "hasConditionalVisibility": { "description": "Indicates that this item quantity may be conditionally shown or hidden, based on various sources of state. For example: server flags, account state, or character progress.", "type": "boolean" } } }, "Destiny.Definitions.Milestones.DestinyMilestoneActivityDefinition": { "description": "Milestones can have associated activities which provide additional information about the context, challenges, modifiers, state etc... related to this Milestone. \r\nInformation we need to be able to return that data is defined here, along with Tier data to establish a relationship between a conceptual Activity and its difficulty levels and variants.", "type": "object", "properties": { "conceptualActivityHash": { "format": "uint32", "description": "The \"Conceptual\" activity hash. Basically, we picked the lowest level activity and are treating it as the canonical definition of the activity for rendering purposes.\r\nIf you care about the specific difficulty modes and variations, use the activities under \"Variants\".", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "variants": { "description": "A milestone-referenced activity can have many variants, such as Tiers or alternative modes of play.\r\nEven if there is only a single variant, the details for these are represented within as a variant definition.\r\nIt is assumed that, if this DestinyMilestoneActivityDefinition is active, then all variants should be active.\r\nIf a Milestone could ever split the variants' active status conditionally, they should all have their own DestinyMilestoneActivityDefinition instead! The potential duplication will be worth it for the obviousness of processing and use.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Definitions.Milestones.DestinyMilestoneActivityVariantDefinition" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } } } }, "Destiny.Definitions.Milestones.DestinyMilestoneActivityVariantDefinition": { "description": "Represents a variant on an activity for a Milestone: a specific difficulty tier, or a specific activity variant for example.\r\nThese will often have more specific details, such as an associated Guided Game, progression steps, tier-specific rewards, and custom values.", "type": "object", "properties": { "activityHash": { "format": "uint32", "description": "The hash to use for looking up the variant Activity's definition (DestinyActivityDefinition), where you can find its distinguishing characteristics such as difficulty level and recommended light level. \r\nFrequently, that will be the only distinguishing characteristics in practice, which is somewhat of a bummer.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "order": { "format": "int32", "description": "If you care to do so, render the variants in the order prescribed by this value.\r\nWhen you combine live Milestone data with the definition, the order becomes more useful because you'll be cross-referencing between the definition and live data.", "type": "integer" } } }, "Destiny.Definitions.Milestones.DestinyMilestoneRewardCategoryDefinition": { "description": "The definition of a category of rewards, that contains many individual rewards.", "type": "object", "properties": { "categoryHash": { "format": "uint32", "description": "Identifies the reward category. Only guaranteed unique within this specific component!", "type": "integer" }, "categoryIdentifier": { "description": "The string identifier for the category, if you want to use it for some end. Guaranteed unique within the specific component.", "type": "string" }, "displayProperties": { "description": "Hopefully this is obvious by now.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "rewardEntries": { "description": "If this milestone can provide rewards, this will define the sets of rewards that can be earned, the conditions under which they can be acquired, internal data that we'll use at runtime to determine whether you've already earned or redeemed this set of rewards, and the category that this reward should be placed under.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Definitions.Milestones.DestinyMilestoneRewardEntryDefinition" } }, "order": { "format": "int32", "description": "If you want to use BNet's recommended order for rendering categories programmatically, use this value and compare it to other categories to determine the order in which they should be rendered. I don't feel great about putting this here, I won't lie.", "type": "integer" } } }, "Destiny.Definitions.Milestones.DestinyMilestoneRewardEntryDefinition": { "description": "The definition of a specific reward, which may be contained in a category of rewards and that has optional information about how it is obtained.", "type": "object", "properties": { "rewardEntryHash": { "format": "uint32", "description": "The identifier for this reward entry. Runtime data will refer to reward entries by this hash. Only guaranteed unique within the specific Milestone.", "type": "integer" }, "rewardEntryIdentifier": { "description": "The string identifier, if you care about it. Only guaranteed unique within the specific Milestone.", "type": "string" }, "items": { "description": "The items you will get as rewards, and how much of it you'll get.", "type": "array", "items": { "$ref": "#/definitions/Destiny.DestinyItemQuantity" } }, "vendorHash": { "format": "uint32", "description": "If this reward is redeemed at a Vendor, this is the hash of the Vendor to go to in order to redeem the reward. Use this hash to look up the DestinyVendorDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDefinition" } }, "displayProperties": { "description": "For us to bother returning this info, we should be able to return some kind of information about why these rewards are grouped together. This is ideally that information. Look at how confident I am that this will always remain true.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "order": { "format": "int32", "description": "If you want to follow BNet's ordering of these rewards, use this number within a given category to order the rewards. Yeah, I know. I feel dirty too.", "type": "integer" } } }, "Destiny.Definitions.Milestones.DestinyMilestoneVendorDefinition": { "description": "If the Milestone or a component has vendors whose inventories could/should be displayed that are relevant to it, this will return the vendor in question. \r\nIt also contains information we need to determine whether that vendor is actually relevant at the moment, given the user's current state.", "type": "object", "properties": { "vendorHash": { "format": "uint32", "description": "The hash of the vendor whose wares should be shown as associated with the Milestone.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDefinition" } } } }, "Destiny.Definitions.Milestones.DestinyMilestoneValueDefinition": { "description": "The definition for information related to a key/value pair that is relevant for a particular Milestone or component within the Milestone. \r\nThis lets us more flexibly pass up information that's useful to someone, even if it's not necessarily us.", "type": "object", "properties": { "key": { "type": "string" }, "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } } }, "Destiny.Definitions.Milestones.DestinyMilestoneChallengeActivityDefinition": { "type": "object", "properties": { "activityHash": { "format": "uint32", "description": "The activity for which this challenge is active.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "challenges": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Milestones.DestinyMilestoneChallengeDefinition" } }, "activityGraphNodes": { "description": "If the activity and its challenge is visible on any of these nodes, it will be returned.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Milestones.DestinyMilestoneChallengeActivityGraphNodeEntry" } }, "phases": { "description": "Phases related to this activity, if there are any.\r\nThese will be listed in the order in which they will appear in the actual activity.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.Milestones.DestinyMilestoneChallengeActivityPhase" } } } }, "Destiny.Definitions.Milestones.DestinyMilestoneChallengeDefinition": { "type": "object", "properties": { "challengeObjectiveHash": { "format": "uint32", "description": "The challenge related to this milestone.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyObjectiveDefinition" } } } }, "Destiny.Definitions.Milestones.DestinyMilestoneChallengeActivityGraphNodeEntry": { "type": "object", "properties": { "activityGraphHash": { "format": "uint32", "type": "integer" }, "activityGraphNodeHash": { "format": "uint32", "type": "integer" } } }, "Destiny.Definitions.Milestones.DestinyMilestoneChallengeActivityPhase": { "type": "object", "properties": { "phaseHash": { "format": "uint32", "description": "The hash identifier of the activity's phase.", "type": "integer" } } }, "Destiny.Entities.Items.DestinyItemPerksComponent": { "description": "Instanced items can have perks: benefits that the item bestows.\r\nThese are related to DestinySandboxPerkDefinition, and sometimes - but not always - have human readable info. When they do, they are the icons and text that you see in an item's tooltip.\r\nTalent Grids, Sockets, and the item itself can apply Perks, which are then summarized here for your convenience.", "type": "object", "properties": { "perks": { "description": "The list of perks to display in an item tooltip - and whether or not they have been activated.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Perks.DestinyPerkReference" } } }, "x-destiny-component-type-dependency": "ItemPerks" }, "Destiny.Perks.DestinyPerkReference": { "description": "The list of perks to display in an item tooltip - and whether or not they have been activated.\r\nPerks apply a variety of effects to a character, and are generally either intrinsic to the item or provided in activated talent nodes or sockets.", "type": "object", "properties": { "perkHash": { "format": "uint32", "description": "The hash identifier for the perk, which can be used to look up DestinySandboxPerkDefinition if it exists. Be warned, perks frequently do not have user-viewable information. You should examine whether you actually found a name/description in the perk's definition before you show it to the user.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinySandboxPerkDefinition" } }, "iconPath": { "description": "The icon for the perk.", "type": "string" }, "isActive": { "description": "Whether this perk is currently active. (We may return perks that you have not actually activated yet: these represent perks that you should show in the item's tooltip, but that the user has not yet activated.)", "type": "boolean" }, "visible": { "description": "Some perks provide benefits, but aren't visible in the UI. This value will let you know if this is perk should be shown in your UI.", "type": "boolean" } } }, "Destiny.Artifacts.DestinyArtifactCharacterScoped": { "type": "object", "properties": { "artifactHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Artifacts.DestinyArtifactDefinition" } }, "pointsUsed": { "format": "int32", "type": "integer" }, "resetCount": { "format": "int32", "type": "integer" }, "tiers": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Artifacts.DestinyArtifactTier" } } } }, "Destiny.Artifacts.DestinyArtifactTier": { "type": "object", "properties": { "tierHash": { "format": "uint32", "type": "integer" }, "isUnlocked": { "type": "boolean" }, "pointsToUnlock": { "format": "int32", "type": "integer" }, "items": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Artifacts.DestinyArtifactTierItem" } } } }, "Destiny.Artifacts.DestinyArtifactTierItem": { "type": "object", "properties": { "itemHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "isActive": { "type": "boolean" } } }, "DictionaryComponentResponseOfint64AndDestinyCharacterProgressionComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "CharacterProgressions", "$ref": "#/definitions/Destiny.Entities.Characters.DestinyCharacterProgressionComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Entities.Characters.DestinyCharacterRenderComponent": { "description": "Only really useful if you're attempting to render the character's current appearance in 3D, this returns a bare minimum of information, pre-aggregated, that you'll need to perform that rendering. Note that you need to combine this with other 3D assets and data from our servers.\r\nExamine the Javascript returned by https://bungie.net/sharedbundle/spasm to see how we use this data, but be warned: the rabbit hole goes pretty deep.", "type": "object", "properties": { "customDyes": { "description": "Custom dyes, calculated by iterating over the character's equipped items. Useful for pre-fetching all of the dye data needed from our server.", "type": "array", "items": { "$ref": "#/definitions/Destiny.DyeReference" } }, "customization": { "description": "This is actually something that Spasm.js *doesn't* do right now, and that we don't return assets for yet. This is the data about what character customization options you picked. You can combine this with DestinyCharacterCustomizationOptionDefinition to show some cool info, and hopefully someday to actually render a user's face in 3D. We'll see if we ever end up with time for that.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Character.DestinyCharacterCustomization" } ] }, "peerView": { "description": "A minimal view of:\r\n- Equipped items\r\n- The rendering-related custom options on those equipped items\r\nCombined, that should be enough to render all of the items on the equipped character.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Character.DestinyCharacterPeerView" } ] } }, "x-destiny-component-type-dependency": "CharacterRenderData" }, "Destiny.Character.DestinyCharacterCustomization": { "description": "Raw data about the customization options chosen for a character's face and appearance.\r\nYou can look up the relevant class/race/gender combo in DestinyCharacterCustomizationOptionDefinition for the character, and then look up these values within the CustomizationOptions found to pull some data about their choices. Warning: not all of that data is meaningful. Some data has useful icons. Others have nothing, and are only meant for 3D rendering purposes (which we sadly do not expose yet)", "type": "object", "properties": { "personality": { "format": "uint32", "type": "integer" }, "face": { "format": "uint32", "type": "integer" }, "skinColor": { "format": "uint32", "type": "integer" }, "lipColor": { "format": "uint32", "type": "integer" }, "eyeColor": { "format": "uint32", "type": "integer" }, "hairColors": { "type": "array", "items": { "format": "uint32", "type": "integer" } }, "featureColors": { "type": "array", "items": { "format": "uint32", "type": "integer" } }, "decalColor": { "format": "uint32", "type": "integer" }, "wearHelmet": { "type": "boolean" }, "hairIndex": { "format": "int32", "type": "integer" }, "featureIndex": { "format": "int32", "type": "integer" }, "decalIndex": { "format": "int32", "type": "integer" } } }, "Destiny.Character.DestinyCharacterPeerView": { "description": "A minimal view of a character's equipped items, for the purpose of rendering a summary screen or showing the character in 3D.", "type": "object", "properties": { "equipment": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Character.DestinyItemPeerView" } } } }, "Destiny.Character.DestinyItemPeerView": { "description": "Bare minimum summary information for an item, for the sake of 3D rendering the item.", "type": "object", "properties": { "itemHash": { "format": "uint32", "description": "The hash identifier of the item in question. Use it to look up the DestinyInventoryItemDefinition of the item for static rendering data.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "dyes": { "description": "The list of dyes that have been applied to this item.", "type": "array", "items": { "$ref": "#/definitions/Destiny.DyeReference" } } } }, "DictionaryComponentResponseOfint64AndDestinyCharacterRenderComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "CharacterRenderData", "$ref": "#/definitions/Destiny.Entities.Characters.DestinyCharacterRenderComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Entities.Characters.DestinyCharacterActivitiesComponent": { "description": "This component holds activity data for a character. It will tell you about the character's current activity status, as well as activities that are available to the user.", "type": "object", "properties": { "dateActivityStarted": { "format": "date-time", "description": "The last date that the user started playing an activity.", "type": "string" }, "availableActivities": { "description": "The list of activities that the user can play.", "type": "array", "items": { "$ref": "#/definitions/Destiny.DestinyActivity" } }, "currentActivityHash": { "format": "uint32", "description": "If the user is in an activity, this will be the hash of the Activity being played. Note that you must combine this info with currentActivityModeHash to get a real picture of what the user is doing right now. For instance, PVP \"Activities\" are just maps: it's the ActivityMode that determines what type of PVP game they're playing.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "currentActivityModeHash": { "format": "uint32", "description": "If the user is in an activity, this will be the hash of the activity mode being played. Combine with currentActivityHash to give a person a full picture of what they're doing right now.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityModeDefinition" } }, "currentActivityModeType": { "format": "int32", "description": "And the current activity's most specific mode type, if it can be found.", "enum": [ "0", "2", "3", "4", "5", "6", "7", "9", "10", "11", "12", "13", "15", "16", "17", "18", "19", "20", "21", "22", "24", "25", "26", "27", "28", "29", "30", "31", "32", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "2", "identifier": "Story" }, { "numericValue": "3", "identifier": "Strike" }, { "numericValue": "4", "identifier": "Raid" }, { "numericValue": "5", "identifier": "AllPvP" }, { "numericValue": "6", "identifier": "Patrol" }, { "numericValue": "7", "identifier": "AllPvE" }, { "numericValue": "9", "identifier": "Reserved9" }, { "numericValue": "10", "identifier": "Control" }, { "numericValue": "11", "identifier": "Reserved11" }, { "numericValue": "12", "identifier": "Clash", "description": "Clash -> Destiny's name for Team Deathmatch. 4v4 combat, the team with the highest kills at the end of time wins." }, { "numericValue": "13", "identifier": "Reserved13" }, { "numericValue": "15", "identifier": "CrimsonDoubles" }, { "numericValue": "16", "identifier": "Nightfall" }, { "numericValue": "17", "identifier": "HeroicNightfall" }, { "numericValue": "18", "identifier": "AllStrikes" }, { "numericValue": "19", "identifier": "IronBanner" }, { "numericValue": "20", "identifier": "Reserved20" }, { "numericValue": "21", "identifier": "Reserved21" }, { "numericValue": "22", "identifier": "Reserved22" }, { "numericValue": "24", "identifier": "Reserved24" }, { "numericValue": "25", "identifier": "AllMayhem" }, { "numericValue": "26", "identifier": "Reserved26" }, { "numericValue": "27", "identifier": "Reserved27" }, { "numericValue": "28", "identifier": "Reserved28" }, { "numericValue": "29", "identifier": "Reserved29" }, { "numericValue": "30", "identifier": "Reserved30" }, { "numericValue": "31", "identifier": "Supremacy" }, { "numericValue": "32", "identifier": "PrivateMatchesAll" }, { "numericValue": "37", "identifier": "Survival" }, { "numericValue": "38", "identifier": "Countdown" }, { "numericValue": "39", "identifier": "TrialsOfTheNine" }, { "numericValue": "40", "identifier": "Social" }, { "numericValue": "41", "identifier": "TrialsCountdown" }, { "numericValue": "42", "identifier": "TrialsSurvival" }, { "numericValue": "43", "identifier": "IronBannerControl" }, { "numericValue": "44", "identifier": "IronBannerClash" }, { "numericValue": "45", "identifier": "IronBannerSupremacy" }, { "numericValue": "46", "identifier": "ScoredNightfall" }, { "numericValue": "47", "identifier": "ScoredHeroicNightfall" }, { "numericValue": "48", "identifier": "Rumble" }, { "numericValue": "49", "identifier": "AllDoubles" }, { "numericValue": "50", "identifier": "Doubles" }, { "numericValue": "51", "identifier": "PrivateMatchesClash" }, { "numericValue": "52", "identifier": "PrivateMatchesControl" }, { "numericValue": "53", "identifier": "PrivateMatchesSupremacy" }, { "numericValue": "54", "identifier": "PrivateMatchesCountdown" }, { "numericValue": "55", "identifier": "PrivateMatchesSurvival" }, { "numericValue": "56", "identifier": "PrivateMatchesMayhem" }, { "numericValue": "57", "identifier": "PrivateMatchesRumble" }, { "numericValue": "58", "identifier": "HeroicAdventure" }, { "numericValue": "59", "identifier": "Showdown" }, { "numericValue": "60", "identifier": "Lockdown" }, { "numericValue": "61", "identifier": "Scorched" }, { "numericValue": "62", "identifier": "ScorchedTeam" }, { "numericValue": "63", "identifier": "Gambit" }, { "numericValue": "64", "identifier": "AllPvECompetitive" }, { "numericValue": "65", "identifier": "Breakthrough" }, { "numericValue": "66", "identifier": "BlackArmoryRun" }, { "numericValue": "67", "identifier": "Salvage" }, { "numericValue": "68", "identifier": "IronBannerSalvage" }, { "numericValue": "69", "identifier": "PvPCompetitive" }, { "numericValue": "70", "identifier": "PvPQuickplay" }, { "numericValue": "71", "identifier": "ClashQuickplay" }, { "numericValue": "72", "identifier": "ClashCompetitive" }, { "numericValue": "73", "identifier": "ControlQuickplay" }, { "numericValue": "74", "identifier": "ControlCompetitive" }, { "numericValue": "75", "identifier": "GambitPrime" }, { "numericValue": "76", "identifier": "Reckoning" }, { "numericValue": "77", "identifier": "Menagerie" }, { "numericValue": "78", "identifier": "VexOffensive" }, { "numericValue": "79", "identifier": "NightmareHunt" }, { "numericValue": "80", "identifier": "Elimination" }, { "numericValue": "81", "identifier": "Momentum" }, { "numericValue": "82", "identifier": "Dungeon" }, { "numericValue": "83", "identifier": "Sundial" }, { "numericValue": "84", "identifier": "TrialsOfOsiris" }, { "numericValue": "85", "identifier": "Dares" }, { "numericValue": "86", "identifier": "Offensive" }, { "numericValue": "87", "identifier": "LostSector" }, { "numericValue": "88", "identifier": "Rift" }, { "numericValue": "89", "identifier": "ZoneControl" }, { "numericValue": "90", "identifier": "IronBannerRift" }, { "numericValue": "91", "identifier": "IronBannerZoneControl" } ] }, "currentActivityModeHashes": { "description": "If the user is in an activity, this will be the hashes of the DestinyActivityModeDefinition being played. Combine with currentActivityHash to give a person a full picture of what they're doing right now.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityModeDefinition" } }, "currentActivityModeTypes": { "description": "All Activity Modes that apply to the current activity being played, in enum form.", "type": "array", "items": { "format": "int32", "description": "For historical reasons, this list will have both D1 and D2-relevant Activity Modes in it. Please don't take this to mean that some D1-only feature is coming back!", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.HistoricalStats.Definitions.DestinyActivityModeType" } } }, "currentPlaylistActivityHash": { "format": "uint32", "description": "If the user is in a playlist, this is the hash identifier for the playlist that they chose.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "lastCompletedStoryHash": { "format": "uint32", "description": "This will have the activity hash of the last completed story/campaign mission, in case you care about that.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } } }, "x-destiny-component-type-dependency": "CharacterActivities" }, "Destiny.DestinyActivity": { "description": "Represents the \"Live\" data that we can obtain about a Character's status with a specific Activity. This will tell you whether the character can participate in the activity, as well as some other basic mutable information. \r\nMeant to be combined with static DestinyActivityDefinition data for a full picture of the Activity.", "type": "object", "properties": { "activityHash": { "format": "uint32", "description": "The hash identifier of the Activity. Use this to look up the DestinyActivityDefinition of the activity.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "isNew": { "description": "If true, then the activity should have a \"new\" indicator in the Director UI.", "type": "boolean" }, "canLead": { "description": "If true, the user is allowed to lead a Fireteam into this activity.", "type": "boolean" }, "canJoin": { "description": "If true, the user is allowed to join with another Fireteam in this activity.", "type": "boolean" }, "isCompleted": { "description": "If true, we both have the ability to know that the user has completed this activity and they have completed it. Unfortunately, we can't necessarily know this for all activities. As such, this should probably only be used if you already know in advance which specific activities you wish to check.", "type": "boolean" }, "isVisible": { "description": "If true, the user should be able to see this activity.", "type": "boolean" }, "displayLevel": { "format": "int32", "description": "The difficulty level of the activity, if applicable.", "type": "integer" }, "recommendedLight": { "format": "int32", "description": "The recommended light level for the activity, if applicable.", "type": "integer" }, "difficultyTier": { "format": "int32", "description": "A DestinyActivityDifficultyTier enum value indicating the difficulty of the activity.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyActivityDifficultyTier" } }, "challenges": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Challenges.DestinyChallengeStatus" } }, "modifierHashes": { "description": "If the activity has modifiers, this will be the list of modifiers that all variants have in common. Perform lookups against DestinyActivityModifierDefinition which defines the modifier being applied to get at the modifier data.\r\nNote that, in the DestiyActivityDefinition, you will see many more modifiers than this being referred to: those are all *possible* modifiers for the activity, not the active ones. Use only the active ones to match what's really live.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.ActivityModifiers.DestinyActivityModifierDefinition" } }, "booleanActivityOptions": { "description": "The set of activity options for this activity, keyed by an identifier that's unique for this activity (not guaranteed to be unique between or across all activities, though should be unique for every *variant* of a given *conceptual* activity: for instance, the original D2 Raid has many variant DestinyActivityDefinitions. While other activities could potentially have the same option hashes, for any given D2 base Raid variant the hash will be unique).\r\nAs a concrete example of this data, the hashes you get for Raids will correspond to the currently active \"Challenge Mode\".\r\nWe don't have any human readable information for these, but saavy 3rd party app users could manually associate the key (a hash identifier for the \"option\" that is enabled/disabled) and the value (whether it's enabled or disabled presently)\r\nOn our side, we don't necessarily even know what these are used for (the game designers know, but we don't), and we have no human readable data for them. In order to use them, you will have to do some experimentation.", "type": "object", "additionalProperties": { "type": "boolean" } }, "loadoutRequirementIndex": { "format": "int32", "description": "If returned, this is the index into the DestinyActivityDefinition's \"loadouts\" property, indicating the currently active loadout requirements.", "type": "integer" } } }, "Destiny.DestinyActivityDifficultyTier": { "format": "int32", "description": "An enumeration representing the potential difficulty levels of an activity. Their names are... more qualitative than quantitative.", "enum": [ "0", "1", "2", "3", "4", "5", "6", "7" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Trivial" }, { "numericValue": "1", "identifier": "Easy" }, { "numericValue": "2", "identifier": "Normal" }, { "numericValue": "3", "identifier": "Challenging" }, { "numericValue": "4", "identifier": "Hard" }, { "numericValue": "5", "identifier": "Brave" }, { "numericValue": "6", "identifier": "AlmostImpossible" }, { "numericValue": "7", "identifier": "Impossible" } ] }, "DictionaryComponentResponseOfint64AndDestinyCharacterActivitiesComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "CharacterActivities", "$ref": "#/definitions/Destiny.Entities.Characters.DestinyCharacterActivitiesComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfint64AndDestinyKiosksComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "Kiosks", "$ref": "#/definitions/Destiny.Components.Kiosks.DestinyKiosksComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfint64AndDestinyPlugSetsComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemSockets", "$ref": "#/definitions/Destiny.Components.PlugSets.DestinyPlugSetsComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DestinyBaseItemComponentSetOfuint32": { "type": "object", "properties": { "objectives": { "x-destiny-component-type-dependency": "ItemObjectives", "$ref": "#/definitions/DictionaryComponentResponseOfuint32AndDestinyItemObjectivesComponent" }, "perks": { "x-destiny-component-type-dependency": "ItemPerks", "$ref": "#/definitions/DictionaryComponentResponseOfuint32AndDestinyItemPerksComponent" } } }, "Destiny.Entities.Items.DestinyItemObjectivesComponent": { "description": "Items can have objectives and progression. When you request this block, you will obtain information about any Objectives and progression tied to this item.", "type": "object", "properties": { "objectives": { "description": "If the item has a hard association with objectives, your progress on them will be defined here. \r\nObjectives are our standard way to describe a series of tasks that have to be completed for a reward.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Quests.DestinyObjectiveProgress" } }, "flavorObjective": { "description": "I may regret naming it this way - but this represents when an item has an objective that doesn't serve a beneficial purpose, but rather is used for \"flavor\" or additional information. For instance, when Emblems track specific stats, those stats are represented as Objectives on the item.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Quests.DestinyObjectiveProgress" } ] }, "dateCompleted": { "format": "date-time", "description": "If we have any information on when these objectives were completed, this will be the date of that completion. This won't be on many items, but could be interesting for some items that do store this information.", "type": "string" } }, "x-destiny-component-type-dependency": "ItemObjectives" }, "DictionaryComponentResponseOfuint32AndDestinyItemObjectivesComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemObjectives", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemObjectivesComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfuint32AndDestinyItemPerksComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemPerks", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemPerksComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfint64AndDestinyPresentationNodesComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "PresentationNodes", "$ref": "#/definitions/Destiny.Components.Presentation.DestinyPresentationNodesComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Components.Records.DestinyCharacterRecordsComponent": { "type": "object", "properties": { "featuredRecordHashes": { "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Records.DestinyRecordDefinition" } }, "records": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Components.Records.DestinyRecordComponent" } }, "recordCategoriesRootNodeHash": { "format": "uint32", "description": "The hash for the root presentation node definition of Triumph categories.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "recordSealsRootNodeHash": { "format": "uint32", "description": "The hash for the root presentation node definition of Triumph Seals.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } } }, "x-destiny-component-type-dependency": "Records" }, "DictionaryComponentResponseOfint64AndDestinyCharacterRecordsComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "Records", "$ref": "#/definitions/Destiny.Components.Records.DestinyCharacterRecordsComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfint64AndDestinyCollectiblesComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "Collectibles", "$ref": "#/definitions/Destiny.Components.Collectibles.DestinyCollectiblesComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfint64AndDestinyStringVariablesComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "StringVariables", "$ref": "#/definitions/Destiny.Components.StringVariables.DestinyStringVariablesComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Components.Craftables.DestinyCraftablesComponent": { "type": "object", "properties": { "craftables": { "description": "A map of craftable item hashes to craftable item state components.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Components.Craftables.DestinyCraftableComponent" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "craftingRootNodeHash": { "format": "uint32", "description": "The hash for the root presentation node definition of craftable item categories.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } } }, "x-destiny-component-type-dependency": "Craftables" }, "Destiny.Components.Craftables.DestinyCraftableComponent": { "type": "object", "properties": { "visible": { "type": "boolean" }, "failedRequirementIndexes": { "description": "If the requirements are not met for crafting this item, these will index into the list of failure strings.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "sockets": { "description": "Plug item state for the crafting sockets.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Components.Craftables.DestinyCraftableSocketComponent" } } } }, "Destiny.Components.Craftables.DestinyCraftableSocketComponent": { "type": "object", "properties": { "plugSetHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Sockets.DestinyPlugSetDefinition" } }, "plugs": { "description": "Unlock state for plugs in the socket plug set definition", "type": "array", "items": { "$ref": "#/definitions/Destiny.Components.Craftables.DestinyCraftableSocketPlugComponent" } } } }, "Destiny.Components.Craftables.DestinyCraftableSocketPlugComponent": { "type": "object", "properties": { "plugItemHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "failedRequirementIndexes": { "description": "Index into the unlock requirements to display failure descriptions", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "DictionaryComponentResponseOfint64AndDestinyCraftablesComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "Craftables", "$ref": "#/definitions/Destiny.Components.Craftables.DestinyCraftablesComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DestinyBaseItemComponentSetOfint64": { "type": "object", "properties": { "objectives": { "x-destiny-component-type-dependency": "ItemObjectives", "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyItemObjectivesComponent" }, "perks": { "x-destiny-component-type-dependency": "ItemPerks", "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyItemPerksComponent" } } }, "DictionaryComponentResponseOfint64AndDestinyItemObjectivesComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemObjectives", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemObjectivesComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfint64AndDestinyItemPerksComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemPerks", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemPerksComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DestinyItemComponentSetOfint64": { "type": "object", "properties": { "instances": { "x-destiny-component-type-dependency": "ItemInstances", "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyItemInstanceComponent" }, "renderData": { "x-destiny-component-type-dependency": "ItemRenderData", "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyItemRenderComponent" }, "stats": { "x-destiny-component-type-dependency": "ItemStats", "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyItemStatsComponent" }, "sockets": { "x-destiny-component-type-dependency": "ItemSockets", "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyItemSocketsComponent" }, "reusablePlugs": { "x-destiny-component-type-dependency": "ItemReusablePlugs", "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyItemReusablePlugsComponent" }, "plugObjectives": { "x-destiny-component-type-dependency": "ItemPlugObjectives", "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyItemPlugObjectivesComponent" }, "talentGrids": { "x-destiny-component-type-dependency": "ItemTalentGrids", "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyItemTalentGridComponent" }, "plugStates": { "x-destiny-component-type-dependency": "ItemPlugStates", "$ref": "#/definitions/DictionaryComponentResponseOfuint32AndDestinyItemPlugComponent" }, "objectives": { "x-destiny-component-type-dependency": "ItemObjectives", "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyItemObjectivesComponent" }, "perks": { "x-destiny-component-type-dependency": "ItemPerks", "$ref": "#/definitions/DictionaryComponentResponseOfint64AndDestinyItemPerksComponent" } } }, "Destiny.Entities.Items.DestinyItemInstanceComponent": { "description": "If an item is \"instanced\", this will contain information about the item's instance that doesn't fit easily into other components. One might say this is the \"essential\" instance data for the item.\r\nItems are instanced if they require information or state that can vary. For instance, weapons are Instanced: they are given a unique identifier, uniquely generated stats, and can have their properties altered. Non-instanced items have none of these things: for instance, Glimmer has no unique properties aside from how much of it you own.\r\nYou can tell from an item's definition whether it will be instanced or not by looking at the DestinyInventoryItemDefinition's definition.inventory.isInstanceItem property.", "type": "object", "properties": { "damageType": { "format": "int32", "description": "If the item has a damage type, this is the item's current damage type.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DamageType" } }, "damageTypeHash": { "format": "uint32", "description": "The current damage type's hash, so you can look up localized info and icons for it.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyDamageTypeDefinition" } }, "primaryStat": { "description": "The item stat that we consider to be \"primary\" for the item. For instance, this would be \"Attack\" for Weapons or \"Defense\" for armor.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.DestinyStat" } ] }, "itemLevel": { "format": "int32", "description": "The Item's \"Level\" has the most significant bearing on its stats, such as Light and Power.", "type": "integer" }, "quality": { "format": "int32", "description": "The \"Quality\" of the item has a lesser - but still impactful - bearing on stats like Light and Power.", "type": "integer" }, "isEquipped": { "description": "Is the item currently equipped on the given character?", "type": "boolean" }, "canEquip": { "description": "If this is an equippable item, you can check it here. There are permanent as well as transitory reasons why an item might not be able to be equipped: check cannotEquipReason for details.", "type": "boolean" }, "equipRequiredLevel": { "format": "int32", "description": "If the item cannot be equipped until you reach a certain level, that level will be reflected here.", "type": "integer" }, "unlockHashesRequiredToEquip": { "description": "Sometimes, there are limitations to equipping that are represented by character-level flags called \"unlocks\".\r\nThis is a list of flags that they need in order to equip the item that the character has not met. Use these to look up the descriptions to show in your UI by looking up the relevant DestinyUnlockDefinitions for the hashes.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyUnlockDefinition" } }, "cannotEquipReason": { "format": "int32", "description": "If you cannot equip the item, this is a flags enum that enumerates all of the reasons why you couldn't equip the item. You may need to refine your UI further by using unlockHashesRequiredToEquip and equipRequiredLevel.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.EquipFailureReason" } }, "breakerType": { "format": "int32", "description": "If populated, this item has a breaker type corresponding to the given value. See DestinyBreakerTypeDefinition for more details.", "enum": [ "0", "1", "2", "3" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "ShieldPiercing" }, { "numericValue": "2", "identifier": "Disruption" }, { "numericValue": "3", "identifier": "Stagger" } ] }, "breakerTypeHash": { "format": "uint32", "description": "If populated, this is the hash identifier for the item's breaker type. See DestinyBreakerTypeDefinition for more details.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.BreakerTypes.DestinyBreakerTypeDefinition" } }, "energy": { "description": "IF populated, this item supports Energy mechanics (i.e. Armor 2.0), and these are the current details of its energy type and available capacity to spend energy points.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemInstanceEnergy" } ] } }, "x-destiny-component-type-dependency": "ItemInstances" }, "Destiny.DestinyStat": { "description": "Represents a stat on an item *or* Character (NOT a Historical Stat, but a physical attribute stat like Attack, Defense etc...)", "type": "object", "properties": { "statHash": { "format": "uint32", "description": "The hash identifier for the Stat. Use it to look up the DestinyStatDefinition for static data about the stat.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyStatDefinition" } }, "value": { "format": "int32", "description": "The current value of the Stat.", "type": "integer" } } }, "Destiny.EquipFailureReason": { "format": "int32", "description": "The reasons why an item cannot be equipped, if any. Many flags can be set, or \"None\" if", "enum": [ "0", "1", "2", "4", "8", "16", "32", "64", "128" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None", "description": "The item is/was able to be equipped." }, { "numericValue": "1", "identifier": "ItemUnequippable", "description": "This is not the kind of item that can be equipped. Did you try equipping Glimmer or something?" }, { "numericValue": "2", "identifier": "ItemUniqueEquipRestricted", "description": "This item is part of a \"unique set\", and you can't have more than one item of that same set type equipped at once. For instance, if you already have an Exotic Weapon equipped, you can't equip a second one in another weapon slot." }, { "numericValue": "4", "identifier": "ItemFailedUnlockCheck", "description": "This item has state-based gating that prevents it from being equipped in certain circumstances. For instance, an item might be for Warlocks only and you're a Titan, or it might require you to have beaten some special quest that you haven't beaten yet. Use the additional failure data passed on the item itself to get more information about what the specific failure case was (See DestinyInventoryItemDefinition and DestinyItemInstanceComponent)" }, { "numericValue": "8", "identifier": "ItemFailedLevelCheck", "description": "This item requires you to have reached a specific character level in order to equip it, and you haven't reached that level yet." }, { "numericValue": "16", "identifier": "ItemWrapped", "description": "This item is 'wrapped' and must be unwrapped before being equipped. NOTE: This value used to be called ItemNotOnCharacter but that is no longer accurate." }, { "numericValue": "32", "identifier": "ItemNotLoaded", "description": "This item is not yet loaded and cannot be equipped yet." }, { "numericValue": "64", "identifier": "ItemEquipBlocklisted", "description": "This item is block-listed and cannot be equipped." }, { "numericValue": "128", "identifier": "ItemLoadoutRequirementNotMet", "description": "This item does not meet the loadout requirements for the current activity" } ] }, "Destiny.Entities.Items.DestinyItemInstanceEnergy": { "type": "object", "properties": { "energyTypeHash": { "format": "uint32", "description": "The type of energy for this item. Plugs that require Energy can only be inserted if they have the \"Any\" Energy Type or the matching energy type of this item. This is a reference to the DestinyEnergyTypeDefinition for the energy type, where you can find extended info about it.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.EnergyTypes.DestinyEnergyTypeDefinition" } }, "energyType": { "format": "int32", "description": "This is the enum version of the Energy Type value, for convenience.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyEnergyType" } }, "energyCapacity": { "format": "int32", "description": "The total capacity of Energy that the item currently has, regardless of if it is currently being used.", "type": "integer" }, "energyUsed": { "format": "int32", "description": "The amount of Energy currently in use by inserted plugs.", "type": "integer" }, "energyUnused": { "format": "int32", "description": "The amount of energy still available for inserting new plugs.", "type": "integer" } } }, "Destiny.Definitions.DestinyUnlockDefinition": { "description": "Unlock Flags are small bits (literally, a bit, as in a boolean value) that the game server uses for an extremely wide range of state checks, progress storage, and other interesting tidbits of information.", "type": "object", "properties": { "displayProperties": { "description": "Sometimes, but not frequently, these unlock flags also have human readable information: usually when they are being directly tested for some requirement, in which case the string is a localized description of why the requirement check failed.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "Unlocks" }, "DictionaryComponentResponseOfint64AndDestinyItemInstanceComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemInstances", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemInstanceComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Entities.Items.DestinyItemRenderComponent": { "description": "Many items can be rendered in 3D. When you request this block, you will obtain the custom data needed to render this specific instance of the item.", "type": "object", "properties": { "useCustomDyes": { "description": "If you should use custom dyes on this item, it will be indicated here.", "type": "boolean" }, "artRegions": { "description": "A dictionary for rendering gear components, with:\r\nkey = Art Arrangement Region Index\r\nvalue = The chosen Arrangement Index for the Region, based on the value of a stat on the item used for making the choice.", "type": "object", "additionalProperties": { "format": "int32", "type": "integer" } } }, "x-destiny-component-type-dependency": "ItemRenderData" }, "DictionaryComponentResponseOfint64AndDestinyItemRenderComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemRenderData", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemRenderComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Entities.Items.DestinyItemStatsComponent": { "description": "If you want the stats on an item's instanced data, get this component.\r\nThese are stats like Attack, Defense etc... and *not* historical stats.\r\nNote that some stats have additional computation in-game at runtime - for instance, Magazine Size - and thus these stats might not be 100% accurate compared to what you see in-game for some stats. I know, it sucks. I hate it too.", "type": "object", "properties": { "stats": { "description": "If the item has stats that it provides (damage, defense, etc...), it will be given here.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.DestinyStat" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyStatDefinition" } } }, "x-destiny-component-type-dependency": "ItemStats" }, "DictionaryComponentResponseOfint64AndDestinyItemStatsComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemStats", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemStatsComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Entities.Items.DestinyItemSocketsComponent": { "description": "Instanced items can have sockets, which are slots on the item where plugs can be inserted.\r\nSockets are a bit complex: be sure to examine the documentation on the DestinyInventoryItemDefinition's \"socket\" block and elsewhere on these objects for more details.", "type": "object", "properties": { "sockets": { "description": "The list of all sockets on the item, and their status information.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemSocketState" } } }, "x-destiny-component-type-dependency": "ItemSockets" }, "Destiny.Entities.Items.DestinyItemSocketState": { "description": "The status of a given item's socket. (which plug is inserted, if any: whether it is enabled, what \"reusable\" plugs can be inserted, etc...)\r\nIf I had it to do over, this would probably have a DestinyItemPlug representing the inserted item instead of most of these properties. :shrug:", "type": "object", "properties": { "plugHash": { "format": "uint32", "description": "The currently active plug, if any.\r\nNote that, because all plugs are statically defined, its effect on stats and perks can be statically determined using the plug item's definition. The stats and perks can be taken at face value on the plug item as the stats and perks it will provide to the user/item.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "isEnabled": { "description": "Even if a plug is inserted, it doesn't mean it's enabled.\r\nThis flag indicates whether the plug is active and providing its benefits.", "type": "boolean" }, "isVisible": { "description": "A plug may theoretically provide benefits but not be visible - for instance, some older items use a plug's damage type perk to modify their own damage type. These, though they are not visible, still affect the item. This field indicates that state.\r\nAn invisible plug, while it provides benefits if it is Enabled, cannot be directly modified by the user.", "type": "boolean" }, "enableFailIndexes": { "description": "If a plug is inserted but not enabled, this will be populated with indexes into the plug item definition's plug.enabledRules property, so that you can show the reasons why it is not enabled.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "DictionaryComponentResponseOfint64AndDestinyItemSocketsComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemSockets", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemSocketsComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Components.Items.DestinyItemReusablePlugsComponent": { "type": "object", "properties": { "plugs": { "description": "If the item supports reusable plugs, this is the list of plugs that are allowed to be used for the socket, and any relevant information about whether they are \"enabled\", whether they are allowed to be inserted, and any other information such as objectives.\r\n A Reusable Plug is a plug that you can always insert into this socket as long as its insertion rules are passed, regardless of whether or not you have the plug in your inventory. An example of it failing an insertion rule would be if it has an Objective that needs to be completed before it can be inserted, and that objective hasn't been completed yet.\r\n In practice, a socket will *either* have reusable plugs *or* it will allow for plugs in your inventory to be inserted. See DestinyInventoryItemDefinition.socket for more info.\r\n KEY = The INDEX into the item's list of sockets. VALUE = The set of plugs for that socket.\r\n If a socket doesn't have any reusable plugs defined at the item scope, there will be no entry for that socket.", "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Sockets.DestinyItemPlugBase" } } } }, "x-destiny-component-type-dependency": "ItemReusablePlugs" }, "DictionaryComponentResponseOfint64AndDestinyItemReusablePlugsComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemReusablePlugs", "$ref": "#/definitions/Destiny.Components.Items.DestinyItemReusablePlugsComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Components.Items.DestinyItemPlugObjectivesComponent": { "type": "object", "properties": { "objectivesPerPlug": { "description": "This set of data is keyed by the Item Hash (DestinyInventoryItemDefinition) of the plug whose objectives are being returned, with the value being the list of those objectives.\r\n What if two plugs with the same hash are returned for an item, you ask?\r\n Good question! They share the same item-scoped state, and as such would have identical objective state as a result. How's that for convenient.\r\n Sometimes, Plugs may have objectives: generally, these are used for flavor and display purposes. For instance, a Plug might be tracking the number of PVP kills you have made. It will use the parent item's data about that tracking status to determine what to show, and will generally show it using the DestinyObjectiveDefinition's progressDescription property. Refer to the plug's itemHash and objective property for more information if you would like to display even more data.", "type": "object", "additionalProperties": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Quests.DestinyObjectiveProgress" } }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } } }, "x-destiny-component-type-dependency": "ItemPlugObjectives" }, "DictionaryComponentResponseOfint64AndDestinyItemPlugObjectivesComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemPlugObjectives", "$ref": "#/definitions/Destiny.Components.Items.DestinyItemPlugObjectivesComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Entities.Items.DestinyItemTalentGridComponent": { "description": "Well, we're here in Destiny 2, and Talent Grids are unfortunately still around.\r\nThe good news is that they're pretty much only being used for certain base information on items and for Builds/Subclasses. The bad news is that they still suck. If you really want this information, grab this component.\r\nAn important note is that talent grids are defined as such:\r\nA Grid has 1:M Nodes, which has 1:M Steps.\r\nAny given node can only have a single step active at one time, which represents the actual visual contents and effects of the Node (for instance, if you see a \"Super Cool Bonus\" node, the actual icon and text for the node is coming from the current Step of that node).\r\nNodes can be grouped into exclusivity sets *and* as of D2, exclusivity groups (which are collections of exclusivity sets that affect each other).\r\nSee DestinyTalentGridDefinition for more information. Brace yourself, the water's cold out there in the deep end.", "type": "object", "properties": { "talentGridHash": { "format": "uint32", "description": "Most items don't have useful talent grids anymore, but Builds in particular still do.\r\nYou can use this hash to lookup the DestinyTalentGridDefinition attached to this item, which will be crucial for understanding the node values on the item.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyTalentGridDefinition" } }, "nodes": { "description": "Detailed information about the individual nodes in the talent grid.\r\nA node represents a single visual \"pip\" in the talent grid or Build detail view, though each node may have multiple \"steps\" which indicate the actual bonuses and visual representation of that node.", "type": "array", "items": { "$ref": "#/definitions/Destiny.DestinyTalentNode" } }, "isGridComplete": { "description": "Indicates whether the talent grid on this item is completed, and thus whether it should have a gold border around it.\r\nOnly will be true if the item actually *has* a talent grid, and only then if it is completed (i.e. every exclusive set has an activated node, and every non-exclusive set node has been activated)", "type": "boolean" }, "gridProgression": { "description": "If the item has a progression, it will be detailed here. A progression means that the item can gain experience. Thresholds of experience are what determines whether and when a talent node can be activated.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.DestinyProgression" } ] } }, "x-destiny-component-type-dependency": "ItemTalentGrids" }, "Destiny.DestinyTalentNode": { "description": "I see you've come to find out more about Talent Nodes. I'm so sorry. Talent Nodes are the conceptual, visual nodes that appear on Talent Grids. Talent Grids, in Destiny 1, were found on almost every instanced item: they had Nodes that could be activated to change the properties of the item. In Destiny 2, Talent Grids only exist for Builds/Subclasses, and while the basic concept is the same (Nodes can be activated once you've gained sufficient Experience on the Item, and provide effects), there are some new concepts from Destiny 1. Examine DestinyTalentGridDefinition and its subordinates for more information. This is the \"Live\" information for the current status of a Talent Node on a specific item. Talent Nodes have many Steps, but only one can be active at any one time: and it is the Step that determines both the visual and the game state-changing properties that the Node provides. Examine this and DestinyTalentNodeStepDefinition carefully. *IMPORTANT NOTE* Talent Nodes are, unfortunately, Content Version DEPENDENT. Though they refer to hashes for Nodes and Steps, those hashes are not guaranteed to be immutable across content versions. This is a source of great exasperation for me, but as a result anyone using Talent Grid data must ensure that the content version of their static content matches that of the server responses before showing or making decisions based on talent grid data.", "type": "object", "properties": { "nodeIndex": { "format": "int32", "description": "The index of the Talent Node being referred to (an index into DestinyTalentGridDefinition.nodes[]). CONTENT VERSION DEPENDENT.", "type": "integer" }, "nodeHash": { "format": "uint32", "description": "The hash of the Talent Node being referred to (in DestinyTalentGridDefinition.nodes). Deceptively CONTENT VERSION DEPENDENT. We have no guarantee of the hash's immutability between content versions.", "type": "integer" }, "state": { "format": "int32", "description": "An DestinyTalentNodeState enum value indicating the node's state: whether it can be activated or swapped, and why not if neither can be performed.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyTalentNodeState" } }, "isActivated": { "description": "If true, the node is activated: it's current step then provides its benefits.", "type": "boolean" }, "stepIndex": { "format": "int32", "description": "The currently relevant Step for the node. It is this step that has rendering data for the node and the benefits that are provided if the node is activated. (the actual rules for benefits provided are extremely complicated in theory, but with how Talent Grids are being used in Destiny 2 you don't have to worry about a lot of those old Destiny 1 rules.) This is an index into: DestinyTalentGridDefinition.nodes[nodeIndex].steps[stepIndex]", "type": "integer" }, "materialsToUpgrade": { "description": "If the node has material requirements to be activated, this is the list of those requirements.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyMaterialRequirement" } }, "activationGridLevel": { "format": "int32", "description": "The progression level required on the Talent Grid in order to be able to activate this talent node. Talent Grids have their own Progression - similar to Character Level, but in this case it is experience related to the item itself.", "type": "integer" }, "progressPercent": { "format": "float", "description": "If you want to show a progress bar or circle for how close this talent node is to being activate-able, this is the percentage to show. It follows the node's underlying rules about when the progress bar should first show up, and when it should be filled.", "type": "number" }, "hidden": { "description": "Whether or not the talent node is actually visible in the game's UI. Whether you want to show it in your own UI is up to you! I'm not gonna tell you who to sock it to.", "type": "boolean" }, "nodeStatsBlock": { "description": "This property has some history. A talent grid can provide stats on both the item it's related to and the character equipping the item. This returns data about those stat bonuses.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.DestinyTalentNodeStatBlock" } ] } } }, "Destiny.DestinyTalentNodeState": { "format": "int32", "enum": [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Invalid" }, { "numericValue": "1", "identifier": "CanUpgrade" }, { "numericValue": "2", "identifier": "NoPoints" }, { "numericValue": "3", "identifier": "NoPrerequisites" }, { "numericValue": "4", "identifier": "NoSteps" }, { "numericValue": "5", "identifier": "NoUnlock" }, { "numericValue": "6", "identifier": "NoMaterial" }, { "numericValue": "7", "identifier": "NoGridLevel" }, { "numericValue": "8", "identifier": "SwappingLocked" }, { "numericValue": "9", "identifier": "MustSwap" }, { "numericValue": "10", "identifier": "Complete" }, { "numericValue": "11", "identifier": "Unknown" }, { "numericValue": "12", "identifier": "CreationOnly" }, { "numericValue": "13", "identifier": "Hidden" } ] }, "Destiny.DestinyTalentNodeStatBlock": { "description": "This property has some history. A talent grid can provide stats on both the item it's related to and the character equipping the item. This returns data about those stat bonuses.", "type": "object", "properties": { "currentStepStats": { "description": "The stat benefits conferred when this talent node is activated for the current Step that is active on the node.", "type": "array", "items": { "$ref": "#/definitions/Destiny.DestinyStat" } }, "nextStepStats": { "description": "This is a holdover from the old days of Destiny 1, when a node could be activated multiple times, conferring multiple steps worth of benefits: you would use this property to show what activating the \"next\" step on the node would provide vs. what the current step is providing. While Nodes are currently not being used this way, the underlying system for this functionality still exists. I hesitate to remove this property while the ability for designers to make such a talent grid still exists. Whether you want to show it is up to you.", "type": "array", "items": { "$ref": "#/definitions/Destiny.DestinyStat" } } } }, "DictionaryComponentResponseOfint64AndDestinyItemTalentGridComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemTalentGrids", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemTalentGridComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Components.Items.DestinyItemPlugComponent": { "description": "Plugs are non-instanced items that can provide Stat and Perk benefits when socketed into an instanced item. Items have Sockets, and Plugs are inserted into Sockets.\r\nThis component finds all items that are considered \"Plugs\" in your inventory, and return information about the plug aside from any specific Socket into which it could be inserted.", "type": "object", "properties": { "plugObjectives": { "description": "Sometimes, Plugs may have objectives: these are often used for flavor and display purposes, but they can be used for any arbitrary purpose (both fortunately and unfortunately). Recently (with Season 2) they were expanded in use to be used as the \"gating\" for whether the plug can be inserted at all. For instance, a Plug might be tracking the number of PVP kills you have made. It will use the parent item's data about that tracking status to determine what to show, and will generally show it using the DestinyObjectiveDefinition's progressDescription property. Refer to the plug's itemHash and objective property for more information if you would like to display even more data.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Quests.DestinyObjectiveProgress" } }, "plugItemHash": { "format": "uint32", "description": "The hash identifier of the DestinyInventoryItemDefinition that represents this plug.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "canInsert": { "description": "If true, this plug has met all of its insertion requirements. Big if true.", "type": "boolean" }, "enabled": { "description": "If true, this plug will provide its benefits while inserted.", "type": "boolean" }, "insertFailIndexes": { "description": "If the plug cannot be inserted for some reason, this will have the indexes into the plug item definition's plug.insertionRules property, so you can show the reasons why it can't be inserted.\r\nThis list will be empty if the plug can be inserted.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "enableFailIndexes": { "description": "If a plug is not enabled, this will be populated with indexes into the plug item definition's plug.enabledRules property, so that you can show the reasons why it is not enabled.\r\nThis list will be empty if the plug is enabled.", "type": "array", "items": { "format": "int32", "type": "integer" } } }, "x-destiny-component-type-dependency": "ItemPlugStates" }, "DictionaryComponentResponseOfuint32AndDestinyItemPlugComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemPlugStates", "$ref": "#/definitions/Destiny.Components.Items.DestinyItemPlugComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Components.Inventory.DestinyCurrenciesComponent": { "description": "This component provides a quick lookup of every item the requested character has and how much of that item they have.\r\nRequesting this component will allow you to circumvent manually putting together the list of which currencies you have for the purpose of testing currency requirements on an item being purchased, or operations that have costs.\r\nYou *could* figure this out yourself by doing a GetCharacter or GetProfile request and forming your own lookup table, but that is inconvenient enough that this feels like a worthwhile (and optional) redundency. Don't bother requesting it if you have already created your own lookup from prior GetCharacter/GetProfile calls.", "type": "object", "properties": { "itemQuantities": { "description": "A dictionary - keyed by the item's hash identifier (DestinyInventoryItemDefinition), and whose value is the amount of that item you have across all available inventory buckets for purchasing.\r\nThis allows you to see whether the requesting character can afford any given purchase/action without having to re-create this list itself.", "type": "object", "additionalProperties": { "format": "int32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } } }, "x-destiny-component-type-dependency": "CurrencyLookups" }, "DictionaryComponentResponseOfint64AndDestinyCurrenciesComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "CurrencyLookups", "$ref": "#/definitions/Destiny.Components.Inventory.DestinyCurrenciesComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Responses.DestinyCharacterResponse": { "description": "The response contract for GetDestinyCharacter, with components that can be returned for character and item-level data.", "type": "object", "properties": { "inventory": { "description": "The character-level non-equipped inventory items.\r\nCOMPONENT TYPE: CharacterInventories", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyInventoryComponent" } ], "x-destiny-component-type-dependency": "CharacterInventories" }, "character": { "description": "Base information about the character in question.\r\nCOMPONENT TYPE: Characters", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyCharacterComponent" } ], "x-destiny-component-type-dependency": "Characters" }, "progressions": { "description": "Character progression data, including Milestones.\r\nCOMPONENT TYPE: CharacterProgressions", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyCharacterProgressionComponent" } ], "x-destiny-component-type-dependency": "CharacterProgressions" }, "renderData": { "description": "Character rendering data - a minimal set of information about equipment and dyes used for rendering.\r\nCOMPONENT TYPE: CharacterRenderData", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyCharacterRenderComponent" } ], "x-destiny-component-type-dependency": "CharacterRenderData" }, "activities": { "description": "Activity data - info about current activities available to the player.\r\nCOMPONENT TYPE: CharacterActivities", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyCharacterActivitiesComponent" } ], "x-destiny-component-type-dependency": "CharacterActivities" }, "equipment": { "description": "Equipped items on the character.\r\nCOMPONENT TYPE: CharacterEquipment", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyInventoryComponent" } ], "x-destiny-component-type-dependency": "CharacterEquipment" }, "loadouts": { "description": "The loadouts available to the character.\r\nCOMPONENT TYPE: CharacterLoadouts", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyLoadoutsComponent" } ], "x-destiny-component-type-dependency": "CharacterLoadouts" }, "kiosks": { "description": "Items available from Kiosks that are available to this specific character. \r\nCOMPONENT TYPE: Kiosks", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyKiosksComponent" } ], "x-destiny-component-type-dependency": "Kiosks" }, "plugSets": { "description": "When sockets refer to reusable Plug Sets (see DestinyPlugSetDefinition for more info), this is the set of plugs and their states that are scoped to this character.\r\nThis comes back with ItemSockets, as it is needed for a complete picture of the sockets on requested items.\r\nCOMPONENT TYPE: ItemSockets", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyPlugSetsComponent" } ], "x-destiny-component-type-dependency": "ItemSockets" }, "presentationNodes": { "description": "COMPONENT TYPE: PresentationNodes", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyPresentationNodesComponent" } ], "x-destiny-component-type-dependency": "PresentationNodes" }, "records": { "description": "COMPONENT TYPE: Records", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyCharacterRecordsComponent" } ], "x-destiny-component-type-dependency": "Records" }, "collectibles": { "description": "COMPONENT TYPE: Collectibles", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyCollectiblesComponent" } ], "x-destiny-component-type-dependency": "Collectibles" }, "itemComponents": { "description": "The set of components belonging to the player's instanced items.\r\nCOMPONENT TYPE: [See inside the DestinyItemComponentSet contract for component types.]", "type": "object", "allOf": [ { "$ref": "#/definitions/DestinyItemComponentSetOfint64" } ] }, "uninstancedItemComponents": { "description": "The set of components belonging to the player's UNinstanced items. Because apparently now those too can have information relevant to the character's state.\r\nCOMPONENT TYPE: [See inside the DestinyItemComponentSet contract for component types.]", "type": "object", "allOf": [ { "$ref": "#/definitions/DestinyBaseItemComponentSetOfuint32" } ] }, "currencyLookups": { "description": "A \"lookup\" convenience component that can be used to quickly check if the character has access to items that can be used for purchasing.\r\nCOMPONENT TYPE: CurrencyLookups", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyCurrenciesComponent" } ], "x-destiny-component-type-dependency": "CurrencyLookups" } } }, "SingleComponentResponseOfDestinyCharacterComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Entities.Characters.DestinyCharacterComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "SingleComponentResponseOfDestinyCharacterProgressionComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Entities.Characters.DestinyCharacterProgressionComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "SingleComponentResponseOfDestinyCharacterRenderComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Entities.Characters.DestinyCharacterRenderComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "SingleComponentResponseOfDestinyCharacterActivitiesComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Entities.Characters.DestinyCharacterActivitiesComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "SingleComponentResponseOfDestinyLoadoutsComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Components.Loadouts.DestinyLoadoutsComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "SingleComponentResponseOfDestinyCharacterRecordsComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Components.Records.DestinyCharacterRecordsComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "SingleComponentResponseOfDestinyCollectiblesComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Components.Collectibles.DestinyCollectiblesComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "SingleComponentResponseOfDestinyCurrenciesComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Components.Inventory.DestinyCurrenciesComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Config.ClanBanner.ClanBannerSource": { "type": "object" }, "Config.ClanBanner.ClanBannerDecal": { "type": "object", "properties": { "identifier": { "type": "string" }, "foregroundPath": { "type": "string" }, "backgroundPath": { "type": "string" } } }, "Destiny.Responses.DestinyItemResponse": { "description": "The response object for retrieving an individual instanced item. None of these components are relevant for an item that doesn't have an \"itemInstanceId\": for those, get your information from the DestinyInventoryDefinition.", "type": "object", "properties": { "characterId": { "format": "int64", "description": "If the item is on a character, this will return the ID of the character that is holding the item.", "type": "integer" }, "item": { "description": "Common data for the item relevant to its non-instanced properties.\r\nCOMPONENT TYPE: ItemCommonData", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyItemComponent" } ], "x-destiny-component-type-dependency": "ItemCommonData" }, "instance": { "description": "Basic instance data for the item.\r\nCOMPONENT TYPE: ItemInstances", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyItemInstanceComponent" } ], "x-destiny-component-type-dependency": "ItemInstances" }, "objectives": { "description": "Information specifically about the item's objectives.\r\nCOMPONENT TYPE: ItemObjectives", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyItemObjectivesComponent" } ], "x-destiny-component-type-dependency": "ItemObjectives" }, "perks": { "description": "Information specifically about the perks currently active on the item.\r\nCOMPONENT TYPE: ItemPerks", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyItemPerksComponent" } ], "x-destiny-component-type-dependency": "ItemPerks" }, "renderData": { "description": "Information about how to render the item in 3D.\r\nCOMPONENT TYPE: ItemRenderData", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyItemRenderComponent" } ], "x-destiny-component-type-dependency": "ItemRenderData" }, "stats": { "description": "Information about the computed stats of the item: power, defense, etc...\r\nCOMPONENT TYPE: ItemStats", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyItemStatsComponent" } ], "x-destiny-component-type-dependency": "ItemStats" }, "talentGrid": { "description": "Information about the talent grid attached to the item. Talent nodes can provide a variety of benefits and abilities, and in Destiny 2 are used almost exclusively for the character's \"Builds\".\r\nCOMPONENT TYPE: ItemTalentGrids", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyItemTalentGridComponent" } ], "x-destiny-component-type-dependency": "ItemTalentGrids" }, "sockets": { "description": "Information about the sockets of the item: which are currently active, what potential sockets you could have and the stats/abilities/perks you can gain from them.\r\nCOMPONENT TYPE: ItemSockets", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyItemSocketsComponent" } ], "x-destiny-component-type-dependency": "ItemSockets" }, "reusablePlugs": { "description": "Information about the Reusable Plugs for sockets on an item. These are plugs that you can insert into the given socket regardless of if you actually own an instance of that plug: they are logic-driven plugs rather than inventory-driven.\r\n These may need to be combined with Plug Set component data to get a full picture of available plugs on a given socket.\r\n COMPONENT TYPE: ItemReusablePlugs", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyItemReusablePlugsComponent" } ], "x-destiny-component-type-dependency": "ItemReusablePlugs" }, "plugObjectives": { "description": "Information about objectives on Plugs for a given item. See the component's documentation for more info.\r\nCOMPONENT TYPE: ItemPlugObjectives", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyItemPlugObjectivesComponent" } ], "x-destiny-component-type-dependency": "ItemPlugObjectives" } } }, "SingleComponentResponseOfDestinyItemComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "SingleComponentResponseOfDestinyItemInstanceComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemInstanceComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "SingleComponentResponseOfDestinyItemObjectivesComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemObjectivesComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "SingleComponentResponseOfDestinyItemPerksComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemPerksComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "SingleComponentResponseOfDestinyItemRenderComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemRenderComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "SingleComponentResponseOfDestinyItemStatsComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemStatsComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "SingleComponentResponseOfDestinyItemTalentGridComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemTalentGridComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "SingleComponentResponseOfDestinyItemSocketsComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemSocketsComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "SingleComponentResponseOfDestinyItemReusablePlugsComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Components.Items.DestinyItemReusablePlugsComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "SingleComponentResponseOfDestinyItemPlugObjectivesComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Components.Items.DestinyItemPlugObjectivesComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.DestinyVendorFilter": { "format": "int32", "description": "Indicates the type of filter to apply to Vendor results.", "enum": [ "0", "1" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "ApiPurchasable" } ] }, "Destiny.Responses.DestinyVendorsResponse": { "description": "A response containing all of the components for all requested vendors.", "type": "object", "properties": { "vendorGroups": { "description": "For Vendors being returned, this will give you the information you need to group them and order them in the same way that the Bungie Companion app performs grouping. It will automatically be returned if you request the Vendors component.\r\nCOMPONENT TYPE: Vendors", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyVendorGroupComponent" } ], "x-destiny-component-type-dependency": "Vendors" }, "vendors": { "description": "The base properties of the vendor. These are keyed by the Vendor Hash, so you will get one Vendor Component per vendor returned.\r\nCOMPONENT TYPE: Vendors", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfuint32AndDestinyVendorComponent" } ], "x-destiny-component-type-dependency": "Vendors" }, "categories": { "description": "Categories that the vendor has available, and references to the sales therein. These are keyed by the Vendor Hash, so you will get one Categories Component per vendor returned.\r\nCOMPONENT TYPE: VendorCategories", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfuint32AndDestinyVendorCategoriesComponent" } ], "x-destiny-component-type-dependency": "VendorCategories" }, "sales": { "description": "Sales, keyed by the vendorItemIndex of the item being sold. These are keyed by the Vendor Hash, so you will get one Sale Item Set Component per vendor returned.\r\nNote that within the Sale Item Set component, the sales are themselves keyed by the vendorSaleIndex, so you can relate it to the corrent sale item definition within the Vendor's definition.\r\nCOMPONENT TYPE: VendorSales", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfuint32AndPersonalDestinyVendorSaleItemSetComponent" } ], "x-destiny-component-type-dependency": "VendorSales" }, "itemComponents": { "description": "The set of item detail components, one set of item components per Vendor. These are keyed by the Vendor Hash, so you will get one Item Component Set per vendor returned.\r\nThe components contained inside are themselves keyed by the vendorSaleIndex, and will have whatever item-level components you requested (Sockets, Stats, Instance data etc...) per item being sold by the vendor.", "type": "object", "additionalProperties": { "$ref": "#/definitions/DestinyItemComponentSetOfint32" } }, "currencyLookups": { "description": "A \"lookup\" convenience component that can be used to quickly check if the character has access to items that can be used for purchasing.\r\nCOMPONENT TYPE: CurrencyLookups", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyCurrenciesComponent" } ], "x-destiny-component-type-dependency": "CurrencyLookups" }, "stringVariables": { "description": "A map of string variable values by hash for this character context.\r\nCOMPONENT TYPE: StringVariables", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyStringVariablesComponent" } ], "x-destiny-component-type-dependency": "StringVariables" } } }, "Destiny.Components.Vendors.DestinyVendorGroupComponent": { "description": "This component returns references to all of the Vendors in the response, grouped by categorizations that Bungie has deemed to be interesting, in the order in which both the groups and the vendors within that group should be rendered.", "type": "object", "properties": { "groups": { "description": "The ordered list of groups being returned.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Components.Vendors.DestinyVendorGroup" } } }, "x-destiny-component-type-dependency": "Vendors" }, "Destiny.Components.Vendors.DestinyVendorGroup": { "description": "Represents a specific group of vendors that can be rendered in the recommended order.\r\nHow do we figure out this order? It's a long story, and will likely get more complicated over time.", "type": "object", "properties": { "vendorGroupHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorGroupDefinition" } }, "vendorHashes": { "description": "The ordered list of vendors within a particular group.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDefinition" } } } }, "SingleComponentResponseOfDestinyVendorGroupComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Components.Vendors.DestinyVendorGroupComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Components.Vendors.DestinyVendorBaseComponent": { "description": "This component contains essential/summary information about the vendor.", "type": "object", "properties": { "vendorHash": { "format": "uint32", "description": "The unique identifier for the vendor. Use it to look up their DestinyVendorDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDefinition" } }, "nextRefreshDate": { "format": "date-time", "description": "The date when this vendor's inventory will next rotate/refresh.\r\nNote that this is distinct from the date ranges that the vendor is visible/available in-game: this field indicates the specific time when the vendor's available items refresh and rotate, regardless of whether the vendor is actually available at that time. Unfortunately, these two values may be (and are, for the case of important vendors like Xur) different.\r\nIssue https://github.com/Bungie-net/api/issues/353 is tracking a fix to start providing visibility date ranges where possible in addition to this refresh date, so that all important dates for vendors are available for use.", "type": "string" }, "enabled": { "description": "If True, the Vendor is currently accessible. \r\nIf False, they may not actually be visible in the world at the moment.", "type": "boolean" } }, "x-destiny-component-type-dependency": "Vendors" }, "Destiny.Entities.Vendors.DestinyVendorComponent": { "description": "This component contains essential/summary information about the vendor.", "type": "object", "properties": { "canPurchase": { "description": "If True, you can purchase from the Vendor.", "type": "boolean" }, "progression": { "description": "If the Vendor has a related Reputation, this is the Progression data that represents the character's Reputation level with this Vendor.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.DestinyProgression" } ] }, "vendorLocationIndex": { "format": "int32", "description": "An index into the vendor definition's \"locations\" property array, indicating which location they are at currently. If -1, then the vendor has no known location (and you may choose not to show them in your UI as a result. I mean, it's your bag honey)", "type": "integer" }, "seasonalRank": { "format": "int32", "description": "If this vendor has a seasonal rank, this will be the calculated value of that rank. How nice is that? I mean, that's pretty sweeet. It's a whole 32 bit integer.", "type": "integer" }, "vendorHash": { "format": "uint32", "description": "The unique identifier for the vendor. Use it to look up their DestinyVendorDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDefinition" } }, "nextRefreshDate": { "format": "date-time", "description": "The date when this vendor's inventory will next rotate/refresh.\r\nNote that this is distinct from the date ranges that the vendor is visible/available in-game: this field indicates the specific time when the vendor's available items refresh and rotate, regardless of whether the vendor is actually available at that time. Unfortunately, these two values may be (and are, for the case of important vendors like Xur) different.\r\nIssue https://github.com/Bungie-net/api/issues/353 is tracking a fix to start providing visibility date ranges where possible in addition to this refresh date, so that all important dates for vendors are available for use.", "type": "string" }, "enabled": { "description": "If True, the Vendor is currently accessible. \r\nIf False, they may not actually be visible in the world at the moment.", "type": "boolean" } }, "x-destiny-component-type-dependency": "Vendors" }, "DictionaryComponentResponseOfuint32AndDestinyVendorComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "Vendors", "$ref": "#/definitions/Destiny.Entities.Vendors.DestinyVendorComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Entities.Vendors.DestinyVendorCategoriesComponent": { "description": "A vendor can have many categories of items that they sell. This component will return the category information for available items, as well as the index into those items in the user's sale item list.\r\nNote that, since both the category and items are indexes, this data is Content Version dependent. Be sure to check that your content is up to date before using this data. This is an unfortunate, but permanent, limitation of Vendor data.", "type": "object", "properties": { "categories": { "description": "The list of categories for items that the vendor sells, in rendering order.\r\nThese categories each point to a \"display category\" in the displayCategories property of the DestinyVendorDefinition, as opposed to the other categories.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Entities.Vendors.DestinyVendorCategory" } } }, "x-destiny-component-type-dependency": "VendorCategories" }, "Destiny.Entities.Vendors.DestinyVendorCategory": { "description": "Information about the category and items currently sold in that category.", "type": "object", "properties": { "displayCategoryIndex": { "format": "int32", "description": "An index into the DestinyVendorDefinition.displayCategories property, so you can grab the display data for this category.", "type": "integer" }, "itemIndexes": { "description": "An ordered list of indexes into items being sold in this category (DestinyVendorDefinition.itemList) which will contain more information about the items being sold themselves. Can also be used to index into DestinyVendorSaleItemComponent data, if you asked for that data to be returned.", "type": "array", "items": { "format": "int32", "type": "integer" } } } }, "DictionaryComponentResponseOfuint32AndDestinyVendorCategoriesComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "VendorCategories", "$ref": "#/definitions/Destiny.Entities.Vendors.DestinyVendorCategoriesComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Components.Vendors.DestinyVendorSaleItemBaseComponent": { "description": "The base class for Vendor Sale Item data. Has a bunch of character-agnostic state about the item being sold.\r\nNote that if you want instance, stats, etc... data for the item, you'll have to request additional components such as ItemInstances, ItemPerks etc... and acquire them from the DestinyVendorResponse's \"items\" property.", "type": "object", "properties": { "vendorItemIndex": { "format": "int32", "description": "The index into the DestinyVendorDefinition.itemList property. Note that this means Vendor data *is* Content Version dependent: make sure you have the latest content before you use Vendor data, or these indexes may mismatch. \r\nMost systems avoid this problem, but Vendors is one area where we are unable to reasonably avoid content dependency at the moment.", "type": "integer" }, "itemHash": { "format": "uint32", "description": "The hash of the item being sold, as a quick shortcut for looking up the DestinyInventoryItemDefinition of the sale item.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "overrideStyleItemHash": { "format": "uint32", "description": "If populated, this is the hash of the item whose icon (and other secondary styles, but *not* the human readable strings) should override whatever icons/styles are on the item being sold.\r\nIf you don't do this, certain items whose styles are being overridden by socketed items - such as the \"Recycle Shader\" item - would show whatever their default icon/style is, and it wouldn't be pretty or look accurate.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "quantity": { "format": "int32", "description": "How much of the item you'll be getting.", "type": "integer" }, "costs": { "description": "A summary of the current costs of the item.", "type": "array", "items": { "$ref": "#/definitions/Destiny.DestinyItemQuantity" } }, "overrideNextRefreshDate": { "format": "date-time", "description": "If this item has its own custom date where it may be removed from the Vendor's rotation, this is that date.\r\nNote that there's not actually any guarantee that it will go away: it could be chosen again and end up still being in the Vendor's sale items! But this is the next date where that test will occur, and is also the date that the game shows for availability on things like Bounties being sold. So it's the best we can give.", "type": "string" }, "apiPurchasable": { "description": "If true, this item can be purchased through the Bungie.net API.", "type": "boolean" } }, "x-destiny-component-type-dependency": "VendorSales" }, "Destiny.Entities.Vendors.DestinyVendorSaleItemComponent": { "description": "Request this component if you want the details about an item being sold in relation to the character making the request: whether the character can buy it, whether they can afford it, and other data related to purchasing the item.\r\nNote that if you want instance, stats, etc... data for the item, you'll have to request additional components such as ItemInstances, ItemPerks etc... and acquire them from the DestinyVendorResponse's \"items\" property.", "type": "object", "properties": { "saleStatus": { "format": "int32", "description": "A flag indicating whether the requesting character can buy the item, and if not the reasons why the character can't buy it.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.VendorItemStatus" } }, "requiredUnlocks": { "description": "If you can't buy the item due to a complex character state, these will be hashes for DestinyUnlockDefinitions that you can check to see messages regarding the failure (if the unlocks have human readable information: it is not guaranteed that Unlocks will have human readable strings, and your application will have to handle that)\r\nPrefer using failureIndexes instead. These are provided for informational purposes, but have largely been supplanted by failureIndexes.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyUnlockDefinition" } }, "unlockStatuses": { "description": "If any complex unlock states are checked in determining purchasability, these will be returned here along with the status of the unlock check.\r\nPrefer using failureIndexes instead. These are provided for informational purposes, but have largely been supplanted by failureIndexes.", "type": "array", "items": { "$ref": "#/definitions/Destiny.DestinyUnlockStatus" } }, "failureIndexes": { "description": "Indexes in to the \"failureStrings\" lookup table in DestinyVendorDefinition for the given Vendor. Gives some more reliable failure information for why you can't purchase an item.\r\nIt is preferred to use these over requiredUnlocks and unlockStatuses: the latter are provided mostly in case someone can do something interesting with it that I didn't anticipate.", "type": "array", "items": { "format": "int32", "type": "integer" } }, "augments": { "format": "int32", "description": "A flags enumeration value representing the current state of any \"state modifiers\" on the item being sold. These are meant to correspond with some sort of visual indicator as to the augmentation: for instance, if an item is on sale or if you already own the item in question.\r\nDetermining how you want to represent these in your own app (or if you even want to) is an exercise left for the reader.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.DestinyVendorItemState" } }, "itemValueVisibility": { "description": "If available, a list that describes which item values (rewards) should be shown (true) or hidden (false).", "type": "array", "items": { "type": "boolean" } }, "vendorItemIndex": { "format": "int32", "description": "The index into the DestinyVendorDefinition.itemList property. Note that this means Vendor data *is* Content Version dependent: make sure you have the latest content before you use Vendor data, or these indexes may mismatch. \r\nMost systems avoid this problem, but Vendors is one area where we are unable to reasonably avoid content dependency at the moment.", "type": "integer" }, "itemHash": { "format": "uint32", "description": "The hash of the item being sold, as a quick shortcut for looking up the DestinyInventoryItemDefinition of the sale item.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "overrideStyleItemHash": { "format": "uint32", "description": "If populated, this is the hash of the item whose icon (and other secondary styles, but *not* the human readable strings) should override whatever icons/styles are on the item being sold.\r\nIf you don't do this, certain items whose styles are being overridden by socketed items - such as the \"Recycle Shader\" item - would show whatever their default icon/style is, and it wouldn't be pretty or look accurate.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "quantity": { "format": "int32", "description": "How much of the item you'll be getting.", "type": "integer" }, "costs": { "description": "A summary of the current costs of the item.", "type": "array", "items": { "$ref": "#/definitions/Destiny.DestinyItemQuantity" } }, "overrideNextRefreshDate": { "format": "date-time", "description": "If this item has its own custom date where it may be removed from the Vendor's rotation, this is that date.\r\nNote that there's not actually any guarantee that it will go away: it could be chosen again and end up still being in the Vendor's sale items! But this is the next date where that test will occur, and is also the date that the game shows for availability on things like Bounties being sold. So it's the best we can give.", "type": "string" }, "apiPurchasable": { "description": "If true, this item can be purchased through the Bungie.net API.", "type": "boolean" } }, "x-destiny-component-type-dependency": "VendorSales" }, "Destiny.VendorItemStatus": { "format": "int32", "enum": [ "0", "1", "2", "4", "8", "16", "32", "64", "128", "256", "512", "1024", "2048", "4096", "8192" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Success" }, { "numericValue": "1", "identifier": "NoInventorySpace" }, { "numericValue": "2", "identifier": "NoFunds" }, { "numericValue": "4", "identifier": "NoProgression" }, { "numericValue": "8", "identifier": "NoUnlock" }, { "numericValue": "16", "identifier": "NoQuantity" }, { "numericValue": "32", "identifier": "OutsidePurchaseWindow" }, { "numericValue": "64", "identifier": "NotAvailable" }, { "numericValue": "128", "identifier": "UniquenessViolation" }, { "numericValue": "256", "identifier": "UnknownError" }, { "numericValue": "512", "identifier": "AlreadySelling" }, { "numericValue": "1024", "identifier": "Unsellable" }, { "numericValue": "2048", "identifier": "SellingInhibited" }, { "numericValue": "4096", "identifier": "AlreadyOwned" }, { "numericValue": "8192", "identifier": "DisplayOnly" } ] }, "Destiny.DestinyUnlockStatus": { "description": "Indicates the status of an \"Unlock Flag\" on a Character or Profile.\r\nThese are individual bits of state that can be either set or not set, and sometimes provide interesting human-readable information in their related DestinyUnlockDefinition.", "type": "object", "properties": { "unlockHash": { "format": "uint32", "description": "The hash identifier for the Unlock Flag. Use to lookup DestinyUnlockDefinition for static data. Not all unlocks have human readable data - in fact, most don't. But when they do, it can be very useful to show. Even if they don't have human readable data, you might be able to infer the meaning of an unlock flag with a bit of experimentation...", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyUnlockDefinition" } }, "isSet": { "description": "Whether the unlock flag is set.", "type": "boolean" } } }, "Destiny.DestinyVendorItemState": { "format": "int32", "description": "The possible states of Destiny Profile Records. IMPORTANT: Any given item can theoretically have many of these states simultaneously: as a result, this was altered to be a flags enumeration/bitmask for v3.2.0.", "enum": [ "0", "1", "2", "4", "8", "16", "32", "64", "128", "256", "512", "1024", "2048", "4096", "8192", "16384", "32768", "65536", "131072", "262144", "524288", "1048576" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None", "description": "There are no augments on the item." }, { "numericValue": "1", "identifier": "Incomplete", "description": "Deprecated forever (probably). There was a time when Records were going to be implemented through Vendors, and this field was relevant. Now they're implemented through Presentation Nodes, and this field doesn't matter anymore." }, { "numericValue": "2", "identifier": "RewardAvailable", "description": "Deprecated forever (probably). See the description of the \"Incomplete\" value for the juicy scoop." }, { "numericValue": "4", "identifier": "Complete", "description": "Deprecated forever (probably). See the description of the \"Incomplete\" value for the juicy scoop." }, { "numericValue": "8", "identifier": "New", "description": "This item is considered to be \"newly available\", and should have some UI showing how shiny it is." }, { "numericValue": "16", "identifier": "Featured", "description": "This item is being \"featured\", and should be shiny in a different way from items that are merely new." }, { "numericValue": "32", "identifier": "Ending", "description": "This item is only available for a limited time, and that time is approaching." }, { "numericValue": "64", "identifier": "OnSale", "description": "This item is \"on sale\". Get it while it's hot." }, { "numericValue": "128", "identifier": "Owned", "description": "This item is already owned." }, { "numericValue": "256", "identifier": "WideView", "description": "This item should be shown with a \"wide view\" instead of normal icon view." }, { "numericValue": "512", "identifier": "NexusAttention", "description": "This indicates that you should show some kind of attention-requesting indicator on the item, in a similar manner to items in the nexus that have such notifications." }, { "numericValue": "1024", "identifier": "SetDiscount", "description": "This indicates that the item has some sort of a 'set' discount." }, { "numericValue": "2048", "identifier": "PriceDrop", "description": "This indicates that the item has a price drop." }, { "numericValue": "4096", "identifier": "DailyOffer", "description": "This indicates that the item is a daily offer." }, { "numericValue": "8192", "identifier": "Charity", "description": "This indicates that the item is for charity." }, { "numericValue": "16384", "identifier": "SeasonalRewardExpiration", "description": "This indicates that the item has a seasonal reward expiration." }, { "numericValue": "32768", "identifier": "BestDeal", "description": "This indicates that the sale item is the best deal among different choices." }, { "numericValue": "65536", "identifier": "Popular", "description": "This indicates that the sale item is popular." }, { "numericValue": "131072", "identifier": "Free", "description": "This indicates that the sale item is free." }, { "numericValue": "262144", "identifier": "Locked", "description": "This indicates that the sale item is locked." }, { "numericValue": "524288", "identifier": "Paracausal", "description": "This indicates that the sale item is paracausal." }, { "numericValue": "1048576", "identifier": "Cryptarch" } ] }, "DestinyVendorSaleItemSetComponentOfDestinyVendorSaleItemComponent": { "type": "object", "properties": { "saleItems": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "VendorSales", "$ref": "#/definitions/Destiny.Entities.Vendors.DestinyVendorSaleItemComponent" } } }, "x-destiny-component-type-dependency": "VendorSales" }, "Destiny.Responses.PersonalDestinyVendorSaleItemSetComponent": { "type": "object", "properties": { "saleItems": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "VendorSales", "$ref": "#/definitions/Destiny.Entities.Vendors.DestinyVendorSaleItemComponent" } } }, "x-destiny-component-type-dependency": "VendorSales" }, "DictionaryComponentResponseOfuint32AndPersonalDestinyVendorSaleItemSetComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "VendorSales", "$ref": "#/definitions/Destiny.Responses.PersonalDestinyVendorSaleItemSetComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DestinyBaseItemComponentSetOfint32": { "type": "object", "properties": { "objectives": { "x-destiny-component-type-dependency": "ItemObjectives", "$ref": "#/definitions/DictionaryComponentResponseOfint32AndDestinyItemObjectivesComponent" }, "perks": { "x-destiny-component-type-dependency": "ItemPerks", "$ref": "#/definitions/DictionaryComponentResponseOfint32AndDestinyItemPerksComponent" } } }, "DictionaryComponentResponseOfint32AndDestinyItemObjectivesComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemObjectives", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemObjectivesComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfint32AndDestinyItemPerksComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemPerks", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemPerksComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DestinyItemComponentSetOfint32": { "type": "object", "properties": { "instances": { "x-destiny-component-type-dependency": "ItemInstances", "$ref": "#/definitions/DictionaryComponentResponseOfint32AndDestinyItemInstanceComponent" }, "renderData": { "x-destiny-component-type-dependency": "ItemRenderData", "$ref": "#/definitions/DictionaryComponentResponseOfint32AndDestinyItemRenderComponent" }, "stats": { "x-destiny-component-type-dependency": "ItemStats", "$ref": "#/definitions/DictionaryComponentResponseOfint32AndDestinyItemStatsComponent" }, "sockets": { "x-destiny-component-type-dependency": "ItemSockets", "$ref": "#/definitions/DictionaryComponentResponseOfint32AndDestinyItemSocketsComponent" }, "reusablePlugs": { "x-destiny-component-type-dependency": "ItemReusablePlugs", "$ref": "#/definitions/DictionaryComponentResponseOfint32AndDestinyItemReusablePlugsComponent" }, "plugObjectives": { "x-destiny-component-type-dependency": "ItemPlugObjectives", "$ref": "#/definitions/DictionaryComponentResponseOfint32AndDestinyItemPlugObjectivesComponent" }, "talentGrids": { "x-destiny-component-type-dependency": "ItemTalentGrids", "$ref": "#/definitions/DictionaryComponentResponseOfint32AndDestinyItemTalentGridComponent" }, "plugStates": { "x-destiny-component-type-dependency": "ItemPlugStates", "$ref": "#/definitions/DictionaryComponentResponseOfuint32AndDestinyItemPlugComponent" }, "objectives": { "x-destiny-component-type-dependency": "ItemObjectives", "$ref": "#/definitions/DictionaryComponentResponseOfint32AndDestinyItemObjectivesComponent" }, "perks": { "x-destiny-component-type-dependency": "ItemPerks", "$ref": "#/definitions/DictionaryComponentResponseOfint32AndDestinyItemPerksComponent" } } }, "DictionaryComponentResponseOfint32AndDestinyItemInstanceComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemInstances", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemInstanceComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfint32AndDestinyItemRenderComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemRenderData", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemRenderComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfint32AndDestinyItemStatsComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemStats", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemStatsComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfint32AndDestinyItemSocketsComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemSockets", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemSocketsComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfint32AndDestinyItemReusablePlugsComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemReusablePlugs", "$ref": "#/definitions/Destiny.Components.Items.DestinyItemReusablePlugsComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfint32AndDestinyItemPlugObjectivesComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemPlugObjectives", "$ref": "#/definitions/Destiny.Components.Items.DestinyItemPlugObjectivesComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfint32AndDestinyItemTalentGridComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemTalentGrids", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemTalentGridComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Responses.DestinyVendorResponse": { "description": "A response containing all of the components for a vendor.", "type": "object", "properties": { "vendor": { "description": "The base properties of the vendor.\r\nCOMPONENT TYPE: Vendors", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyVendorComponent" } ], "x-destiny-component-type-dependency": "Vendors" }, "categories": { "description": "Categories that the vendor has available, and references to the sales therein.\r\nCOMPONENT TYPE: VendorCategories", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyVendorCategoriesComponent" } ], "x-destiny-component-type-dependency": "VendorCategories" }, "sales": { "description": "Sales, keyed by the vendorItemIndex of the item being sold.\r\nCOMPONENT TYPE: VendorSales", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfint32AndDestinyVendorSaleItemComponent" } ], "x-destiny-component-type-dependency": "VendorSales" }, "itemComponents": { "description": "Item components, keyed by the vendorItemIndex of the active sale items.\r\nCOMPONENT TYPE: [See inside the DestinyItemComponentSet contract for component types.]", "type": "object", "allOf": [ { "$ref": "#/definitions/DestinyItemComponentSetOfint32" } ] }, "currencyLookups": { "description": "A \"lookup\" convenience component that can be used to quickly check if the character has access to items that can be used for purchasing.\r\nCOMPONENT TYPE: CurrencyLookups", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyCurrenciesComponent" } ], "x-destiny-component-type-dependency": "CurrencyLookups" }, "stringVariables": { "description": "A map of string variable values by hash for this character context.\r\nCOMPONENT TYPE: StringVariables", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyStringVariablesComponent" } ], "x-destiny-component-type-dependency": "StringVariables" } } }, "SingleComponentResponseOfDestinyVendorComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Entities.Vendors.DestinyVendorComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "SingleComponentResponseOfDestinyVendorCategoriesComponent": { "type": "object", "properties": { "data": { "$ref": "#/definitions/Destiny.Entities.Vendors.DestinyVendorCategoriesComponent" }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfint32AndDestinyVendorSaleItemComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "VendorSales", "$ref": "#/definitions/Destiny.Entities.Vendors.DestinyVendorSaleItemComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Responses.DestinyPublicVendorsResponse": { "description": "A response containing all valid components for the public Vendors endpoint.\r\n It is a decisively smaller subset of data compared to what we can get when we know the specific user making the request.\r\n If you want any of the other data - item details, whether or not you can buy it, etc... you'll have to call in the context of a character. I know, sad but true.", "type": "object", "properties": { "vendorGroups": { "description": "For Vendors being returned, this will give you the information you need to group them and order them in the same way that the Bungie Companion app performs grouping. It will automatically be returned if you request the Vendors component.\r\nCOMPONENT TYPE: Vendors", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyVendorGroupComponent" } ], "x-destiny-component-type-dependency": "Vendors" }, "vendors": { "description": "The base properties of the vendor. These are keyed by the Vendor Hash, so you will get one Vendor Component per vendor returned.\r\nCOMPONENT TYPE: Vendors", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfuint32AndDestinyPublicVendorComponent" } ], "x-destiny-component-type-dependency": "Vendors" }, "categories": { "description": "Categories that the vendor has available, and references to the sales therein. These are keyed by the Vendor Hash, so you will get one Categories Component per vendor returned.\r\nCOMPONENT TYPE: VendorCategories", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfuint32AndDestinyVendorCategoriesComponent" } ], "x-destiny-component-type-dependency": "VendorCategories" }, "sales": { "description": "Sales, keyed by the vendorItemIndex of the item being sold. These are keyed by the Vendor Hash, so you will get one Sale Item Set Component per vendor returned.\r\nNote that within the Sale Item Set component, the sales are themselves keyed by the vendorSaleIndex, so you can relate it to the corrent sale item definition within the Vendor's definition.\r\nCOMPONENT TYPE: VendorSales", "type": "object", "allOf": [ { "$ref": "#/definitions/DictionaryComponentResponseOfuint32AndPublicDestinyVendorSaleItemSetComponent" } ], "x-destiny-component-type-dependency": "VendorSales" }, "stringVariables": { "description": "A set of string variable values by hash for a public vendors context.\r\nCOMPONENT TYPE: StringVariables", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyStringVariablesComponent" } ], "x-destiny-component-type-dependency": "StringVariables" } } }, "Destiny.Components.Vendors.DestinyPublicVendorComponent": { "description": "This component contains essential/summary information about the vendor from the perspective of a character-agnostic view.", "type": "object", "properties": { "vendorHash": { "format": "uint32", "description": "The unique identifier for the vendor. Use it to look up their DestinyVendorDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDefinition" } }, "nextRefreshDate": { "format": "date-time", "description": "The date when this vendor's inventory will next rotate/refresh.\r\nNote that this is distinct from the date ranges that the vendor is visible/available in-game: this field indicates the specific time when the vendor's available items refresh and rotate, regardless of whether the vendor is actually available at that time. Unfortunately, these two values may be (and are, for the case of important vendors like Xur) different.\r\nIssue https://github.com/Bungie-net/api/issues/353 is tracking a fix to start providing visibility date ranges where possible in addition to this refresh date, so that all important dates for vendors are available for use.", "type": "string" }, "enabled": { "description": "If True, the Vendor is currently accessible. \r\nIf False, they may not actually be visible in the world at the moment.", "type": "boolean" } }, "x-destiny-component-type-dependency": "Vendors" }, "DictionaryComponentResponseOfuint32AndDestinyPublicVendorComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "Vendors", "$ref": "#/definitions/Destiny.Components.Vendors.DestinyPublicVendorComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Components.Vendors.DestinyPublicVendorSaleItemComponent": { "description": "Has character-agnostic information about an item being sold by a vendor.\r\nNote that if you want instance, stats, etc... data for the item, you'll have to request additional components such as ItemInstances, ItemPerks etc... and acquire them from the DestinyVendorResponse's \"items\" property. For most of these, however, you'll have to ask for it in context of a specific character.", "type": "object", "properties": { "vendorItemIndex": { "format": "int32", "description": "The index into the DestinyVendorDefinition.itemList property. Note that this means Vendor data *is* Content Version dependent: make sure you have the latest content before you use Vendor data, or these indexes may mismatch. \r\nMost systems avoid this problem, but Vendors is one area where we are unable to reasonably avoid content dependency at the moment.", "type": "integer" }, "itemHash": { "format": "uint32", "description": "The hash of the item being sold, as a quick shortcut for looking up the DestinyInventoryItemDefinition of the sale item.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "overrideStyleItemHash": { "format": "uint32", "description": "If populated, this is the hash of the item whose icon (and other secondary styles, but *not* the human readable strings) should override whatever icons/styles are on the item being sold.\r\nIf you don't do this, certain items whose styles are being overridden by socketed items - such as the \"Recycle Shader\" item - would show whatever their default icon/style is, and it wouldn't be pretty or look accurate.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "quantity": { "format": "int32", "description": "How much of the item you'll be getting.", "type": "integer" }, "costs": { "description": "A summary of the current costs of the item.", "type": "array", "items": { "$ref": "#/definitions/Destiny.DestinyItemQuantity" } }, "overrideNextRefreshDate": { "format": "date-time", "description": "If this item has its own custom date where it may be removed from the Vendor's rotation, this is that date.\r\nNote that there's not actually any guarantee that it will go away: it could be chosen again and end up still being in the Vendor's sale items! But this is the next date where that test will occur, and is also the date that the game shows for availability on things like Bounties being sold. So it's the best we can give.", "type": "string" }, "apiPurchasable": { "description": "If true, this item can be purchased through the Bungie.net API.", "type": "boolean" } }, "x-destiny-component-type-dependency": "VendorSales" }, "DestinyVendorSaleItemSetComponentOfDestinyPublicVendorSaleItemComponent": { "type": "object", "properties": { "saleItems": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "VendorSales", "$ref": "#/definitions/Destiny.Components.Vendors.DestinyPublicVendorSaleItemComponent" } } }, "x-destiny-component-type-dependency": "VendorSales" }, "Destiny.Responses.PublicDestinyVendorSaleItemSetComponent": { "type": "object", "properties": { "saleItems": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "VendorSales", "$ref": "#/definitions/Destiny.Components.Vendors.DestinyPublicVendorSaleItemComponent" } } }, "x-destiny-component-type-dependency": "VendorSales" }, "DictionaryComponentResponseOfuint32AndPublicDestinyVendorSaleItemSetComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "VendorSales", "$ref": "#/definitions/Destiny.Responses.PublicDestinyVendorSaleItemSetComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Responses.DestinyCollectibleNodeDetailResponse": { "description": "Returns the detailed information about a Collectible Presentation Node and any Collectibles that are direct descendants.", "type": "object", "properties": { "collectibles": { "description": "COMPONENT TYPE: Collectibles", "type": "object", "allOf": [ { "$ref": "#/definitions/SingleComponentResponseOfDestinyCollectiblesComponent" } ], "x-destiny-component-type-dependency": "Collectibles" }, "collectibleItemComponents": { "description": "Item components, keyed by the item hash of the items pointed at collectibles found under the requested Presentation Node.\r\nNOTE: I had a lot of hemming and hawing about whether these should be keyed by collectible hash or item hash... but ultimately having it be keyed by item hash meant that UI that already uses DestinyItemComponentSet data wouldn't have to have a special override to do the collectible -> item lookup once you delve into an item's details, and it also meant that you didn't have to remember that the Hash being used as the key for plugSets was different from the Hash being used for the other Dictionaries. As a result, using the Item Hash felt like the least crappy solution.\r\nWe may all come to regret this decision. We will see.\r\nCOMPONENT TYPE: [See inside the DestinyItemComponentSet contract for component types.]", "type": "object", "allOf": [ { "$ref": "#/definitions/DestinyItemComponentSetOfuint32" } ] } } }, "DestinyItemComponentSetOfuint32": { "type": "object", "properties": { "instances": { "x-destiny-component-type-dependency": "ItemInstances", "$ref": "#/definitions/DictionaryComponentResponseOfuint32AndDestinyItemInstanceComponent" }, "renderData": { "x-destiny-component-type-dependency": "ItemRenderData", "$ref": "#/definitions/DictionaryComponentResponseOfuint32AndDestinyItemRenderComponent" }, "stats": { "x-destiny-component-type-dependency": "ItemStats", "$ref": "#/definitions/DictionaryComponentResponseOfuint32AndDestinyItemStatsComponent" }, "sockets": { "x-destiny-component-type-dependency": "ItemSockets", "$ref": "#/definitions/DictionaryComponentResponseOfuint32AndDestinyItemSocketsComponent" }, "reusablePlugs": { "x-destiny-component-type-dependency": "ItemReusablePlugs", "$ref": "#/definitions/DictionaryComponentResponseOfuint32AndDestinyItemReusablePlugsComponent" }, "plugObjectives": { "x-destiny-component-type-dependency": "ItemPlugObjectives", "$ref": "#/definitions/DictionaryComponentResponseOfuint32AndDestinyItemPlugObjectivesComponent" }, "talentGrids": { "x-destiny-component-type-dependency": "ItemTalentGrids", "$ref": "#/definitions/DictionaryComponentResponseOfuint32AndDestinyItemTalentGridComponent" }, "plugStates": { "x-destiny-component-type-dependency": "ItemPlugStates", "$ref": "#/definitions/DictionaryComponentResponseOfuint32AndDestinyItemPlugComponent" }, "objectives": { "x-destiny-component-type-dependency": "ItemObjectives", "$ref": "#/definitions/DictionaryComponentResponseOfuint32AndDestinyItemObjectivesComponent" }, "perks": { "x-destiny-component-type-dependency": "ItemPerks", "$ref": "#/definitions/DictionaryComponentResponseOfuint32AndDestinyItemPerksComponent" } } }, "DictionaryComponentResponseOfuint32AndDestinyItemInstanceComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemInstances", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemInstanceComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfuint32AndDestinyItemRenderComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemRenderData", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemRenderComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfuint32AndDestinyItemStatsComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemStats", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemStatsComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfuint32AndDestinyItemSocketsComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemSockets", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemSocketsComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfuint32AndDestinyItemReusablePlugsComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemReusablePlugs", "$ref": "#/definitions/Destiny.Components.Items.DestinyItemReusablePlugsComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfuint32AndDestinyItemPlugObjectivesComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemPlugObjectives", "$ref": "#/definitions/Destiny.Components.Items.DestinyItemPlugObjectivesComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "DictionaryComponentResponseOfuint32AndDestinyItemTalentGridComponent": { "type": "object", "properties": { "data": { "type": "object", "additionalProperties": { "x-destiny-component-type-dependency": "ItemTalentGrids", "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemTalentGridComponent" } }, "privacy": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Components.ComponentPrivacySetting" } }, "disabled": { "description": "If true, this component is disabled.", "type": "boolean" } } }, "Destiny.Requests.Actions.DestinyActionRequest": { "type": "object", "properties": { "membershipType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } } } }, "Destiny.Requests.Actions.DestinyCharacterActionRequest": { "type": "object", "properties": { "characterId": { "format": "int64", "type": "integer" }, "membershipType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } } } }, "Destiny.Requests.Actions.DestinyItemActionRequest": { "type": "object", "properties": { "itemId": { "format": "int64", "description": "The instance ID of the item for this action request.", "type": "integer" }, "characterId": { "format": "int64", "type": "integer" }, "membershipType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } } } }, "Destiny.Requests.DestinyItemTransferRequest": { "type": "object", "properties": { "itemReferenceHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "stackSize": { "format": "int32", "type": "integer" }, "transferToVault": { "type": "boolean" }, "itemId": { "format": "int64", "description": "The instance ID of the item for this action request.", "type": "integer" }, "characterId": { "format": "int64", "type": "integer" }, "membershipType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } } } }, "Destiny.Requests.Actions.DestinyPostmasterTransferRequest": { "type": "object", "properties": { "itemReferenceHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "stackSize": { "format": "int32", "type": "integer" }, "itemId": { "format": "int64", "description": "The instance ID of the item for this action request.", "type": "integer" }, "characterId": { "format": "int64", "type": "integer" }, "membershipType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } } } }, "Destiny.DestinyEquipItemResults": { "description": "The results of a bulk Equipping operation performed through the Destiny API.", "type": "object", "properties": { "equipResults": { "type": "array", "items": { "$ref": "#/definitions/Destiny.DestinyEquipItemResult" } } } }, "Destiny.DestinyEquipItemResult": { "description": "The results of an Equipping operation performed through the Destiny API.", "type": "object", "properties": { "itemInstanceId": { "format": "int64", "description": "The instance ID of the item in question (all items that can be equipped must, but definition, be Instanced and thus have an Instance ID that you can use to refer to them)", "type": "integer" }, "equipStatus": { "format": "int32", "description": "A PlatformErrorCodes enum indicating whether it succeeded, and if it failed why.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Exceptions.PlatformErrorCodes" } } } }, "Destiny.Requests.Actions.DestinyItemSetActionRequest": { "type": "object", "properties": { "itemIds": { "type": "array", "items": { "format": "int64", "type": "integer" } }, "characterId": { "format": "int64", "type": "integer" }, "membershipType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } } } }, "Destiny.Requests.Actions.DestinyLoadoutActionRequest": { "type": "object", "properties": { "loadoutIndex": { "format": "int32", "description": "The index of the loadout for this action request.", "type": "integer" }, "characterId": { "format": "int64", "type": "integer" }, "membershipType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } } } }, "Destiny.Requests.Actions.DestinyLoadoutUpdateActionRequest": { "type": "object", "properties": { "colorHash": { "format": "uint32", "type": "integer" }, "iconHash": { "format": "uint32", "type": "integer" }, "nameHash": { "format": "uint32", "type": "integer" }, "loadoutIndex": { "format": "int32", "description": "The index of the loadout for this action request.", "type": "integer" }, "characterId": { "format": "int64", "type": "integer" }, "membershipType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } } } }, "Destiny.Requests.Actions.DestinyItemStateRequest": { "type": "object", "properties": { "state": { "type": "boolean" }, "itemId": { "format": "int64", "description": "The instance ID of the item for this action request.", "type": "integer" }, "characterId": { "format": "int64", "type": "integer" }, "membershipType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } } } }, "Destiny.Responses.InventoryChangedResponse": { "description": "A response containing all of the components for all requested vendors.", "type": "object", "properties": { "addedInventoryItems": { "description": "Items that appeared in the inventory possibly as a result of an action.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemComponent" } }, "removedInventoryItems": { "description": "Items that disappeared from the inventory possibly as a result of an action.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemComponent" } } } }, "Destiny.Responses.DestinyItemChangeResponse": { "type": "object", "properties": { "item": { "$ref": "#/definitions/Destiny.Responses.DestinyItemResponse" }, "addedInventoryItems": { "description": "Items that appeared in the inventory possibly as a result of an action.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemComponent" } }, "removedInventoryItems": { "description": "Items that disappeared from the inventory possibly as a result of an action.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Entities.Items.DestinyItemComponent" } } } }, "Destiny.Requests.Actions.DestinyInsertPlugsActionRequest": { "type": "object", "properties": { "actionToken": { "description": "Action token provided by the AwaGetActionToken API call.", "type": "string" }, "itemInstanceId": { "format": "int64", "description": "The instance ID of the item having a plug inserted. Only instanced items can have sockets.", "type": "integer" }, "plug": { "description": "The plugs being inserted.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Requests.Actions.DestinyInsertPlugsRequestEntry" } ] }, "characterId": { "format": "int64", "type": "integer" }, "membershipType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } } } }, "Destiny.Requests.Actions.DestinyInsertPlugsRequestEntry": { "description": "Represents all of the data related to a single plug to be inserted.\r\nNote that, while you *can* point to a socket that represents infusion, you will receive an error if you attempt to do so. Come on guys, let's play nice.", "type": "object", "properties": { "socketIndex": { "format": "int32", "description": "The index into the socket array, which identifies the specific socket being operated on. We also need to know the socketArrayType in order to uniquely identify the socket.\r\nDon't point to or try to insert a plug into an infusion socket. It won't work.", "type": "integer" }, "socketArrayType": { "format": "int32", "description": "This property, combined with the socketIndex, tells us which socket we are referring to (since operations can be performed on both Intrinsic and \"default\" sockets, and they occupy different arrays in the Inventory Item Definition). I know, I know. Don't give me that look.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.Requests.Actions.DestinySocketArrayType" } }, "plugItemHash": { "format": "uint32", "description": "Plugs are never instanced (except in infusion). So with the hash alone, we should be able to: 1) Infer whether the player actually needs to have the item, or if it's a reusable plug 2) Perform any operation needed to use the Plug, including removing the plug item and running reward sheets.", "type": "integer" } } }, "Destiny.Requests.Actions.DestinySocketArrayType": { "format": "int32", "description": "If you look in the DestinyInventoryItemDefinition's \"sockets\" property, you'll see that there are two types of sockets: intrinsic, and \"socketEntry.\"\r\nUnfortunately, because Intrinsic sockets are a whole separate array, it is no longer sufficient to know the index into that array to know which socket we're talking about. You have to know whether it's in the default \"socketEntries\" or if it's in the \"intrinsic\" list.", "enum": [ "0", "1" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Default" }, { "numericValue": "1", "identifier": "Intrinsic" } ] }, "Destiny.Requests.Actions.DestinyInsertPlugsFreeActionRequest": { "type": "object", "properties": { "plug": { "description": "The plugs being inserted.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Requests.Actions.DestinyInsertPlugsRequestEntry" } ] }, "itemId": { "format": "int64", "description": "The instance ID of the item for this action request.", "type": "integer" }, "characterId": { "format": "int64", "type": "integer" }, "membershipType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } } } }, "Destiny.HistoricalStats.DestinyPostGameCarnageReportData": { "type": "object", "properties": { "period": { "format": "date-time", "description": "Date and time for the activity.", "type": "string" }, "startingPhaseIndex": { "format": "int32", "description": "If this activity has \"phases\", this is the phase at which the activity was started. This value is only valid for activities before the Beyond Light expansion shipped. Subsequent activities will not have a valid value here.", "type": "integer" }, "activityWasStartedFromBeginning": { "description": "True if the activity was started from the beginning, if that information is available and the activity was played post Witch Queen release.", "type": "boolean" }, "activityDetails": { "description": "Details about the activity.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsActivity" } ] }, "entries": { "description": "Collection of players and their data for this activity.", "type": "array", "items": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyPostGameCarnageReportEntry" } }, "teams": { "description": "Collection of stats for the player in this activity.", "type": "array", "items": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyPostGameCarnageReportTeamEntry" } } } }, "Destiny.HistoricalStats.DestinyHistoricalStatsActivity": { "description": "Summary information about the activity that was played.", "type": "object", "properties": { "referenceId": { "format": "uint32", "description": "The unique hash identifier of the DestinyActivityDefinition that was played. If I had this to do over, it'd be named activityHash. Too late now.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "directorActivityHash": { "format": "uint32", "description": "The unique hash identifier of the DestinyActivityDefinition that was played.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "instanceId": { "format": "int64", "description": "The unique identifier for this *specific* match that was played.\r\nThis value can be used to get additional data about this activity such as who else was playing via the GetPostGameCarnageReport endpoint.", "type": "integer" }, "mode": { "format": "int32", "description": "Indicates the most specific game mode of the activity that we could find.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.HistoricalStats.Definitions.DestinyActivityModeType" } }, "modes": { "description": "The list of all Activity Modes to which this activity applies, including aggregates. This will let you see, for example, whether the activity was both Clash and part of the Trials of the Nine event.", "type": "array", "items": { "format": "int32", "description": "For historical reasons, this list will have both D1 and D2-relevant Activity Modes in it. Please don't take this to mean that some D1-only feature is coming back!", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.HistoricalStats.Definitions.DestinyActivityModeType" } } }, "isPrivate": { "description": "Whether or not the match was a private match.", "type": "boolean" }, "membershipType": { "format": "int32", "description": "The Membership Type indicating the platform on which this match was played.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } } } }, "Destiny.HistoricalStats.DestinyPostGameCarnageReportEntry": { "type": "object", "properties": { "standing": { "format": "int32", "description": "Standing of the player", "type": "integer" }, "score": { "description": "Score of the player if available", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsValue" } ] }, "player": { "description": "Identity details of the player", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyPlayer" } ] }, "characterId": { "format": "int64", "description": "ID of the player's character used in the activity.", "type": "integer" }, "values": { "description": "Collection of stats for the player in this activity.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsValue" } }, "extended": { "description": "Extended data extracted from the activity blob.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyPostGameCarnageReportExtendedData" } ] } } }, "Destiny.HistoricalStats.DestinyHistoricalStatsValue": { "type": "object", "properties": { "statId": { "description": "Unique ID for this stat", "type": "string" }, "basic": { "description": "Basic stat value.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsValuePair" } ] }, "pga": { "description": "Per game average for the statistic, if applicable", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsValuePair" } ] }, "weighted": { "description": "Weighted value of the stat if a weight greater than 1 has been assigned.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsValuePair" } ] }, "activityId": { "format": "int64", "description": "When a stat represents the best, most, longest, fastest or some other personal best, the actual activity ID where that personal best was established is available on this property.", "type": "integer" } } }, "Destiny.HistoricalStats.DestinyHistoricalStatsValuePair": { "type": "object", "properties": { "value": { "format": "double", "description": "Raw value of the statistic", "type": "number" }, "displayValue": { "description": "Localized formated version of the value.", "type": "string" } } }, "Destiny.HistoricalStats.DestinyPlayer": { "type": "object", "properties": { "destinyUserInfo": { "description": "Details about the player as they are known in game (platform display name, Destiny emblem)", "type": "object", "allOf": [ { "$ref": "#/definitions/User.UserInfoCard" } ] }, "characterClass": { "description": "Class of the character if applicable and available.", "type": "string" }, "classHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyClassDefinition" } }, "raceHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyRaceDefinition" } }, "genderHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyGenderDefinition" } }, "characterLevel": { "format": "int32", "description": "Level of the character if available. Zero if it is not available.", "type": "integer" }, "lightLevel": { "format": "int32", "description": "Light Level of the character if available. Zero if it is not available.", "type": "integer" }, "bungieNetUserInfo": { "description": "Details about the player as they are known on BungieNet. This will be undefined if the player has marked their credential private, or does not have a BungieNet account.", "type": "object", "allOf": [ { "$ref": "#/definitions/User.UserInfoCard" } ] }, "clanName": { "description": "Current clan name for the player. This value may be null or an empty string if the user does not have a clan.", "type": "string" }, "clanTag": { "description": "Current clan tag for the player. This value may be null or an empty string if the user does not have a clan.", "type": "string" }, "emblemHash": { "format": "uint32", "description": "If we know the emblem's hash, this can be used to look up the player's emblem at the time of a match when receiving PGCR data, or otherwise their currently equipped emblem (if we are able to obtain it).", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } } } }, "Destiny.HistoricalStats.DestinyPostGameCarnageReportExtendedData": { "type": "object", "properties": { "weapons": { "description": "List of weapons and their perspective values.", "type": "array", "items": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalWeaponStats" } }, "values": { "description": "Collection of stats for the player in this activity.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsValue" } } } }, "Destiny.HistoricalStats.DestinyHistoricalWeaponStats": { "type": "object", "properties": { "referenceId": { "format": "uint32", "description": "The hash ID of the item definition that describes the weapon.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "values": { "description": "Collection of stats for the period.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsValue" } } } }, "Destiny.HistoricalStats.DestinyPostGameCarnageReportTeamEntry": { "type": "object", "properties": { "teamId": { "format": "int32", "description": "Integer ID for the team.", "type": "integer" }, "standing": { "description": "Team's standing relative to other teams.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsValue" } ] }, "score": { "description": "Score earned by the team", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsValue" } ] }, "teamName": { "description": "Alpha or Bravo", "type": "string" } } }, "Destiny.Reporting.Requests.DestinyReportOffensePgcrRequest": { "description": "If you want to report a player causing trouble in a game, this request will let you report that player and the specific PGCR in which the trouble was caused, along with why.\r\nPlease don't do this just because you dislike the person! I mean, I know people will do it anyways, but can you like take a good walk, or put a curse on them or something? Do me a solid and reconsider.\r\nNote that this request object doesn't have the actual PGCR ID nor your Account/Character ID in it. We will infer that information from your authentication information and the PGCR ID that you pass into the URL of the reporting endpoint itself.", "type": "object", "properties": { "reasonCategoryHashes": { "description": "So you've decided to report someone instead of cursing them and their descendants. Well, okay then. This is the category or categorie(s) of infractions for which you are reporting the user. These are hash identifiers that map to DestinyReportReasonCategoryDefinition entries.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Reporting.DestinyReportReasonCategoryDefinition" } }, "reasonHashes": { "description": "If applicable, provide a more specific reason(s) within the general category of problems provided by the reasonHash. This is also an identifier for a reason. All reasonHashes provided must be children of at least one the reasonCategoryHashes provided.", "type": "array", "items": { "format": "uint32", "type": "integer" } }, "offendingCharacterId": { "format": "int64", "description": "Within the PGCR provided when calling the Reporting endpoint, this should be the character ID of the user that you thought was violating terms of use. They must exist in the PGCR provided.", "type": "integer" } } }, "Destiny.Definitions.Reporting.DestinyReportReasonCategoryDefinition": { "description": "If you're going to report someone for a Terms of Service violation, you need to choose a category and reason for the report. This definition holds both the categories and the reasons within those categories, for simplicity and my own laziness' sake.\r\nNote tha this means that, to refer to a Reason by reasonHash, you need a combination of the reasonHash *and* the associated ReasonCategory's hash: there are some reasons defined under multiple categories.", "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "reasons": { "description": "The specific reasons for the report under this category.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.Definitions.Reporting.DestinyReportReasonDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "ReportReasonCategories" }, "Destiny.Definitions.Reporting.DestinyReportReasonDefinition": { "description": "A specific reason for being banned. Only accessible under the related category (DestinyReportReasonCategoryDefinition) under which it is shown. Note that this means that report reasons' reasonHash are not globally unique: and indeed, entries like \"Other\" are defined under most categories for example.", "type": "object", "properties": { "reasonHash": { "format": "uint32", "description": "The identifier for the reason: they are only guaranteed unique under the Category in which they are found.", "type": "integer" }, "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } } }, "Destiny.HistoricalStats.Definitions.DestinyHistoricalStatsDefinition": { "type": "object", "properties": { "statId": { "description": "Unique programmer friendly ID for this stat", "type": "string" }, "group": { "format": "int32", "description": "Statistic group", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.HistoricalStats.Definitions.DestinyStatsGroupType" } }, "periodTypes": { "description": "Time periods the statistic covers", "type": "array", "items": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.HistoricalStats.Definitions.PeriodType" } } }, "modes": { "description": "Game modes where this statistic can be reported.", "type": "array", "items": { "format": "int32", "description": "For historical reasons, this list will have both D1 and D2-relevant Activity Modes in it. Please don't take this to mean that some D1-only feature is coming back!", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.HistoricalStats.Definitions.DestinyActivityModeType" } } }, "category": { "format": "int32", "description": "Category for the stat.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.HistoricalStats.Definitions.DestinyStatsCategoryType" } }, "statName": { "description": "Display name", "type": "string" }, "statNameAbbr": { "description": "Display name abbreviated", "type": "string" }, "statDescription": { "description": "Description of a stat if applicable.", "type": "string" }, "unitType": { "format": "int32", "description": "Unit, if any, for the statistic", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.HistoricalStats.Definitions.UnitType" } }, "iconImage": { "description": "Optional URI to an icon for the statistic", "type": "string" }, "mergeMethod": { "format": "int32", "description": "Optional icon for the statistic", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Add", "description": "When collapsing multiple instances of the stat together, add the values." }, { "numericValue": "1", "identifier": "Min", "description": "When collapsing multiple instances of the stat together, take the lower value." }, { "numericValue": "2", "identifier": "Max", "description": "When collapsing multiple instances of the stat together, take the higher value." } ] }, "unitLabel": { "description": "Localized Unit Name for the stat.", "type": "string" }, "weight": { "format": "int32", "description": "Weight assigned to this stat indicating its relative impressiveness.", "type": "integer" }, "medalTierHash": { "format": "uint32", "description": "The tier associated with this medal - be it implicitly or explicitly.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyMedalTierDefinition" } } }, "x-mobile-manifest-name": "HistoricalStats" }, "Destiny.HistoricalStats.Definitions.DestinyStatsGroupType": { "format": "int32", "description": "If the enum value is > 100, it is a \"special\" group that cannot be queried for directly (special cases apply to when they are returned, and are not relevant in general cases)", "enum": [ "0", "1", "2", "3", "100", "101", "102", "103", "104" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "General" }, { "numericValue": "2", "identifier": "Weapons" }, { "numericValue": "3", "identifier": "Medals" }, { "numericValue": "100", "identifier": "ReservedGroups", "description": "This is purely to serve as the dividing line between filterable and un-filterable groups. Below this number is a group you can pass as a filter. Above it are groups used in very specific circumstances and not relevant for filtering." }, { "numericValue": "101", "identifier": "Leaderboard", "description": "Only applicable while generating leaderboards." }, { "numericValue": "102", "identifier": "Activity", "description": "These will *only* be consumed by GetAggregateStatsByActivity" }, { "numericValue": "103", "identifier": "UniqueWeapon", "description": "These are only consumed and returned by GetUniqueWeaponHistory" }, { "numericValue": "104", "identifier": "Internal" } ] }, "Destiny.HistoricalStats.Definitions.PeriodType[]": { "type": "array", "items": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.HistoricalStats.Definitions.PeriodType" } } }, "Destiny.HistoricalStats.Definitions.DestinyActivityModeType[]": { "type": "array", "items": { "format": "int32", "description": "For historical reasons, this list will have both D1 and D2-relevant Activity Modes in it. Please don't take this to mean that some D1-only feature is coming back!", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.HistoricalStats.Definitions.DestinyActivityModeType" } } }, "Destiny.HistoricalStats.Definitions.DestinyStatsCategoryType": { "format": "int32", "enum": [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Kills" }, { "numericValue": "2", "identifier": "Assists" }, { "numericValue": "3", "identifier": "Deaths" }, { "numericValue": "4", "identifier": "Criticals" }, { "numericValue": "5", "identifier": "KDa" }, { "numericValue": "6", "identifier": "KD" }, { "numericValue": "7", "identifier": "Score" }, { "numericValue": "8", "identifier": "Entered" }, { "numericValue": "9", "identifier": "TimePlayed" }, { "numericValue": "10", "identifier": "MedalWins" }, { "numericValue": "11", "identifier": "MedalGame" }, { "numericValue": "12", "identifier": "MedalSpecialKills" }, { "numericValue": "13", "identifier": "MedalSprees" }, { "numericValue": "14", "identifier": "MedalMultiKills" }, { "numericValue": "15", "identifier": "MedalAbilities" } ] }, "Destiny.HistoricalStats.Definitions.UnitType": { "format": "int32", "enum": [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Count", "description": "Indicates the statistic is a simple count of something." }, { "numericValue": "2", "identifier": "PerGame", "description": "Indicates the statistic is a per game average." }, { "numericValue": "3", "identifier": "Seconds", "description": "Indicates the number of seconds" }, { "numericValue": "4", "identifier": "Points", "description": "Indicates the number of points earned" }, { "numericValue": "5", "identifier": "Team", "description": "Values represents a team ID" }, { "numericValue": "6", "identifier": "Distance", "description": "Values represents a distance (units to-be-determined)" }, { "numericValue": "7", "identifier": "Percent", "description": "Ratio represented as a whole value from 0 to 100." }, { "numericValue": "8", "identifier": "Ratio", "description": "Ratio of something, shown with decimal places" }, { "numericValue": "9", "identifier": "Boolean", "description": "True or false" }, { "numericValue": "10", "identifier": "WeaponType", "description": "The stat is actually a weapon type." }, { "numericValue": "11", "identifier": "Standing", "description": "Indicates victory, defeat, or something in between." }, { "numericValue": "12", "identifier": "Milliseconds", "description": "Number of milliseconds some event spanned. For example, race time, or lap time." }, { "numericValue": "13", "identifier": "CompletionReason", "description": "The value is a enumeration of the Completion Reason type." } ] }, "Destiny.HistoricalStats.Definitions.DestinyStatsMergeMethod": { "format": "int32", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Add", "description": "When collapsing multiple instances of the stat together, add the values." }, { "numericValue": "1", "identifier": "Min", "description": "When collapsing multiple instances of the stat together, take the lower value." }, { "numericValue": "2", "identifier": "Max", "description": "When collapsing multiple instances of the stat together, take the higher value." } ] }, "Destiny.Definitions.DestinyMedalTierDefinition": { "description": "An artificial construct of our own creation, to try and put some order on top of Medals and keep them from being one giant, unmanageable and unsorted blob of stats.\r\nUnfortunately, we haven't had time to do this evaluation yet in Destiny 2, so we're short on Medal Tiers. This will hopefully be updated over time, if Medals continue to exist.", "type": "object", "properties": { "tierName": { "description": "The name of the tier.", "type": "string" }, "order": { "format": "int32", "description": "If you're rendering medals by tier, render them in this order (ascending)", "type": "integer" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "MedalTiers" }, "Destiny.HistoricalStats.DestinyLeaderboard": { "type": "object", "properties": { "statId": { "type": "string" }, "entries": { "type": "array", "items": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyLeaderboardEntry" } } } }, "Destiny.HistoricalStats.DestinyLeaderboardEntry": { "type": "object", "properties": { "rank": { "format": "int32", "description": "Where this player ranks on the leaderboard. A value of 1 is the top rank.", "type": "integer" }, "player": { "description": "Identity details of the player", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyPlayer" } ] }, "characterId": { "format": "int64", "description": "ID of the player's best character for the reported stat.", "type": "integer" }, "value": { "description": "Value of the stat for this player", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsValue" } ] } } }, "Destiny.HistoricalStats.DestinyLeaderboardResults": { "type": "object", "properties": { "focusMembershipId": { "format": "int64", "description": "Indicate the membership ID of the account that is the focal point of the provided leaderboards.", "type": "integer" }, "focusCharacterId": { "format": "int64", "description": "Indicate the character ID of the character that is the focal point of the provided leaderboards. May be null, in which case any character from the focus membership can appear in the provided leaderboards.", "type": "integer" } }, "additionalProperties": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyLeaderboard" } } }, "Destiny.HistoricalStats.DestinyClanAggregateStat": { "type": "object", "properties": { "mode": { "format": "int32", "description": "The id of the mode of stats (allPvp, allPvE, etc)", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.HistoricalStats.Definitions.DestinyActivityModeType" } }, "statId": { "description": "The id of the stat", "type": "string" }, "value": { "description": "Value of the stat for this player", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsValue" } ] } } }, "Destiny.Definitions.DestinyEntitySearchResult": { "description": "The results of a search for Destiny content. This will be improved on over time, I've been doing some experimenting to see what might be useful.", "type": "object", "properties": { "suggestedWords": { "description": "A list of suggested words that might make for better search results, based on the text searched for.", "type": "array", "items": { "type": "string" } }, "results": { "description": "The items found that are matches/near matches for the searched-for term, sorted by something vaguely resembling \"relevance\". Hopefully this will get better in the future.", "type": "object", "allOf": [ { "$ref": "#/definitions/SearchResultOfDestinyEntitySearchResultItem" } ] } } }, "Destiny.Definitions.DestinyEntitySearchResultItem": { "description": "An individual Destiny Entity returned from the entity search.", "type": "object", "properties": { "hash": { "format": "uint32", "description": "The hash identifier of the entity. You will use this to look up the DestinyDefinition relevant for the entity found.", "type": "integer" }, "entityType": { "description": "The type of entity, returned as a string matching the DestinyDefinition's contract class name. You'll have to have your own mapping from class names to actually looking up those definitions in the manifest databases.", "type": "string" }, "displayProperties": { "description": "Basic display properties on the entity, so you don't have to look up the definition to show basic results for the item.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" } ] }, "weight": { "format": "double", "description": "The ranking value for sorting that we calculated using our relevance formula. This will hopefully get better with time and iteration.", "type": "number" } } }, "SearchResultOfDestinyEntitySearchResultItem": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Definitions.DestinyEntitySearchResultItem" } }, "totalResults": { "format": "int32", "type": "integer" }, "hasMore": { "type": "boolean" }, "query": { "$ref": "#/definitions/Queries.PagedQuery" }, "replacementContinuationToken": { "type": "string" }, "useTotalResults": { "description": "If useTotalResults is true, then totalResults represents an accurate count.\r\nIf False, it does not, and may be estimated/only the size of the current page.\r\nEither way, you should probably always only trust hasMore.\r\nThis 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.", "type": "boolean" } } }, "Destiny.HistoricalStats.Definitions.PeriodType": { "format": "int32", "enum": [ "0", "1", "2", "3" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Daily" }, { "numericValue": "2", "identifier": "AllTime" }, { "numericValue": "3", "identifier": "Activity" } ] }, "Destiny.HistoricalStats.DestinyHistoricalStatsByPeriod": { "type": "object", "properties": { "allTime": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsValue" } }, "allTimeTier1": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsValue" } }, "allTimeTier2": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsValue" } }, "allTimeTier3": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsValue" } }, "daily": { "type": "array", "items": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsPeriodGroup" } }, "monthly": { "type": "array", "items": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsPeriodGroup" } } } }, "Destiny.HistoricalStats.DestinyHistoricalStatsPeriodGroup": { "type": "object", "properties": { "period": { "format": "date-time", "description": "Period for the group. If the stat periodType is day, then this will have a specific day. If the type is monthly, then this value will be the first day of the applicable month. This value is not set when the periodType is 'all time'.", "type": "string" }, "activityDetails": { "description": "If the period group is for a specific activity, this property will be set.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsActivity" } ] }, "values": { "description": "Collection of stats for the period.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsValue" } } } }, "Destiny.HistoricalStats.DestinyHistoricalStatsResults": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsByPeriod" } }, "Destiny.HistoricalStats.DestinyHistoricalStatsAccountResult": { "type": "object", "properties": { "mergedDeletedCharacters": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsWithMerged" }, "mergedAllCharacters": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsWithMerged" }, "characters": { "type": "array", "items": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsPerCharacter" } } } }, "Destiny.HistoricalStats.DestinyHistoricalStatsWithMerged": { "type": "object", "properties": { "results": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsByPeriod" } }, "merged": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsByPeriod" } } }, "Destiny.HistoricalStats.DestinyHistoricalStatsPerCharacter": { "type": "object", "properties": { "characterId": { "format": "int64", "type": "integer" }, "deleted": { "type": "boolean" }, "results": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsByPeriod" } }, "merged": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsByPeriod" } } }, "Destiny.HistoricalStats.DestinyActivityHistoryResults": { "type": "object", "properties": { "activities": { "description": "List of activities, the most recent activity first.", "type": "array", "items": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsPeriodGroup" } } } }, "Destiny.HistoricalStats.DestinyHistoricalWeaponStatsData": { "type": "object", "properties": { "weapons": { "description": "List of weapons and their perspective values.", "type": "array", "items": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalWeaponStats" } } } }, "Destiny.HistoricalStats.DestinyAggregateActivityResults": { "type": "object", "properties": { "activities": { "description": "List of all activities the player has participated in.", "type": "array", "items": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyAggregateActivityStats" } } } }, "Destiny.HistoricalStats.DestinyAggregateActivityStats": { "type": "object", "properties": { "activityHash": { "format": "uint32", "description": "Hash ID that can be looked up in the DestinyActivityTable.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "values": { "description": "Collection of stats for the player in this activity.", "type": "object", "additionalProperties": { "$ref": "#/definitions/Destiny.HistoricalStats.DestinyHistoricalStatsValue" } } } }, "Destiny.Milestones.DestinyMilestoneContent": { "description": "Represents localized, extended content related to Milestones. This is intentionally returned by a separate endpoint and not with Character-level Milestone data because we do not put localized data into standard Destiny responses, both for brevity of response and for caching purposes. If you really need this data, hit the Milestone Content endpoint.", "type": "object", "properties": { "about": { "description": "The \"About this Milestone\" text from the Firehose.", "type": "string" }, "status": { "description": "The Current Status of the Milestone, as driven by the Firehose.", "type": "string" }, "tips": { "description": "A list of tips, provided by the Firehose.", "type": "array", "items": { "type": "string" } }, "itemCategories": { "description": "If DPS has defined items related to this Milestone, they can categorize those items in the Firehose. That data will then be returned as item categories here.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Milestones.DestinyMilestoneContentItemCategory" } } } }, "Destiny.Milestones.DestinyMilestoneContentItemCategory": { "description": "Part of our dynamic, localized Milestone content is arbitrary categories of items. These are built in our content management system, and thus aren't the same as programmatically generated rewards.", "type": "object", "properties": { "title": { "type": "string" }, "itemHashes": { "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } } } }, "Destiny.Milestones.DestinyPublicMilestone": { "description": "Information about milestones, presented in a character state-agnostic manner. Combine this data with DestinyMilestoneDefinition to get a full picture of the milestone, which is basically a checklist of things to do in the game. Think of this as GetPublicAdvisors 3.0, for those who used the Destiny 1 API.", "type": "object", "properties": { "milestoneHash": { "format": "uint32", "description": "The hash identifier for the milestone. Use it to look up the DestinyMilestoneDefinition for static data about the Milestone.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Milestones.DestinyMilestoneDefinition" } }, "availableQuests": { "description": "A milestone not need have even a single quest, but if there are active quests they will be returned here.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Milestones.DestinyPublicMilestoneQuest" } }, "activities": { "type": "array", "items": { "$ref": "#/definitions/Destiny.Milestones.DestinyPublicMilestoneChallengeActivity" } }, "vendorHashes": { "description": "Sometimes milestones - or activities active in milestones - will have relevant vendors. These are the vendors that are currently relevant.\r\nDeprecated, already, for the sake of the new \"vendors\" property that has more data. What was I thinking.", "type": "array", "items": { "format": "uint32", "type": "integer" } }, "vendors": { "description": "This is why we can't have nice things. This is the ordered list of vendors to be shown that relate to this milestone, potentially along with other interesting data.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Milestones.DestinyPublicMilestoneVendor" } }, "startDate": { "format": "date-time", "description": "If known, this is the date when the Milestone started/became active.", "type": "string" }, "endDate": { "format": "date-time", "description": "If known, this is the date when the Milestone will expire/recycle/end.", "type": "string" }, "order": { "format": "int32", "description": "Used for ordering milestones in a display to match how we order them in BNet. May pull from static data, or possibly in the future from dynamic information.", "type": "integer" } } }, "Destiny.Milestones.DestinyPublicMilestoneQuest": { "type": "object", "properties": { "questItemHash": { "format": "uint32", "description": "Quests are defined as Items in content. As such, this is the hash identifier of the DestinyInventoryItemDefinition that represents this quest. It will have pointers to all of the steps in the quest, and display information for the quest (title, description, icon etc) Individual steps will be referred to in the Quest item's DestinyInventoryItemDefinition.setData property, and themselves are Items with their own renderable data.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Milestones.DestinyMilestoneDefinition" } }, "activity": { "description": "A milestone need not have an active activity, but if there is one it will be returned here, along with any variant and additional information.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Milestones.DestinyPublicMilestoneActivity" } ] }, "challenges": { "description": "For the given quest there could be 0-to-Many challenges: mini quests that you can perform in the course of doing this quest, that may grant you rewards and benefits.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Milestones.DestinyPublicMilestoneChallenge" } } } }, "Destiny.Milestones.DestinyPublicMilestoneActivity": { "description": "A milestone may have one or more conceptual Activities associated with it, and each of those conceptual activities could have a variety of variants, modes, tiers, what-have-you. Our attempts to determine what qualifies as a conceptual activity are, unfortunately, janky. So if you see missing modes or modes that don't seem appropriate to you, let us know and I'll buy you a beer if we ever meet up in person.", "type": "object", "properties": { "activityHash": { "format": "uint32", "description": "The hash identifier of the activity that's been chosen to be considered the canonical \"conceptual\" activity definition. This may have many variants, defined herein.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "modifierHashes": { "description": "The activity may have 0-to-many modifiers: if it does, this will contain the hashes to the DestinyActivityModifierDefinition that defines the modifier being applied.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.ActivityModifiers.DestinyActivityModifierDefinition" } }, "variants": { "description": "Every relevant variation of this conceptual activity, including the conceptual activity itself, have variants defined here.", "type": "array", "items": { "$ref": "#/definitions/Destiny.Milestones.DestinyPublicMilestoneActivityVariant" } }, "activityModeHash": { "format": "uint32", "description": "The hash identifier of the most specific Activity Mode under which this activity is played. This is useful for situations where the activity in question is - for instance - a PVP map, but it's not clear what mode the PVP map is being played under. If it's a playlist, this will be less specific: but hopefully useful in some way.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityModeDefinition" } }, "activityModeType": { "format": "int32", "description": "The enumeration equivalent of the most specific Activity Mode under which this activity is played.", "enum": [ "0", "2", "3", "4", "5", "6", "7", "9", "10", "11", "12", "13", "15", "16", "17", "18", "19", "20", "21", "22", "24", "25", "26", "27", "28", "29", "30", "31", "32", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "2", "identifier": "Story" }, { "numericValue": "3", "identifier": "Strike" }, { "numericValue": "4", "identifier": "Raid" }, { "numericValue": "5", "identifier": "AllPvP" }, { "numericValue": "6", "identifier": "Patrol" }, { "numericValue": "7", "identifier": "AllPvE" }, { "numericValue": "9", "identifier": "Reserved9" }, { "numericValue": "10", "identifier": "Control" }, { "numericValue": "11", "identifier": "Reserved11" }, { "numericValue": "12", "identifier": "Clash", "description": "Clash -> Destiny's name for Team Deathmatch. 4v4 combat, the team with the highest kills at the end of time wins." }, { "numericValue": "13", "identifier": "Reserved13" }, { "numericValue": "15", "identifier": "CrimsonDoubles" }, { "numericValue": "16", "identifier": "Nightfall" }, { "numericValue": "17", "identifier": "HeroicNightfall" }, { "numericValue": "18", "identifier": "AllStrikes" }, { "numericValue": "19", "identifier": "IronBanner" }, { "numericValue": "20", "identifier": "Reserved20" }, { "numericValue": "21", "identifier": "Reserved21" }, { "numericValue": "22", "identifier": "Reserved22" }, { "numericValue": "24", "identifier": "Reserved24" }, { "numericValue": "25", "identifier": "AllMayhem" }, { "numericValue": "26", "identifier": "Reserved26" }, { "numericValue": "27", "identifier": "Reserved27" }, { "numericValue": "28", "identifier": "Reserved28" }, { "numericValue": "29", "identifier": "Reserved29" }, { "numericValue": "30", "identifier": "Reserved30" }, { "numericValue": "31", "identifier": "Supremacy" }, { "numericValue": "32", "identifier": "PrivateMatchesAll" }, { "numericValue": "37", "identifier": "Survival" }, { "numericValue": "38", "identifier": "Countdown" }, { "numericValue": "39", "identifier": "TrialsOfTheNine" }, { "numericValue": "40", "identifier": "Social" }, { "numericValue": "41", "identifier": "TrialsCountdown" }, { "numericValue": "42", "identifier": "TrialsSurvival" }, { "numericValue": "43", "identifier": "IronBannerControl" }, { "numericValue": "44", "identifier": "IronBannerClash" }, { "numericValue": "45", "identifier": "IronBannerSupremacy" }, { "numericValue": "46", "identifier": "ScoredNightfall" }, { "numericValue": "47", "identifier": "ScoredHeroicNightfall" }, { "numericValue": "48", "identifier": "Rumble" }, { "numericValue": "49", "identifier": "AllDoubles" }, { "numericValue": "50", "identifier": "Doubles" }, { "numericValue": "51", "identifier": "PrivateMatchesClash" }, { "numericValue": "52", "identifier": "PrivateMatchesControl" }, { "numericValue": "53", "identifier": "PrivateMatchesSupremacy" }, { "numericValue": "54", "identifier": "PrivateMatchesCountdown" }, { "numericValue": "55", "identifier": "PrivateMatchesSurvival" }, { "numericValue": "56", "identifier": "PrivateMatchesMayhem" }, { "numericValue": "57", "identifier": "PrivateMatchesRumble" }, { "numericValue": "58", "identifier": "HeroicAdventure" }, { "numericValue": "59", "identifier": "Showdown" }, { "numericValue": "60", "identifier": "Lockdown" }, { "numericValue": "61", "identifier": "Scorched" }, { "numericValue": "62", "identifier": "ScorchedTeam" }, { "numericValue": "63", "identifier": "Gambit" }, { "numericValue": "64", "identifier": "AllPvECompetitive" }, { "numericValue": "65", "identifier": "Breakthrough" }, { "numericValue": "66", "identifier": "BlackArmoryRun" }, { "numericValue": "67", "identifier": "Salvage" }, { "numericValue": "68", "identifier": "IronBannerSalvage" }, { "numericValue": "69", "identifier": "PvPCompetitive" }, { "numericValue": "70", "identifier": "PvPQuickplay" }, { "numericValue": "71", "identifier": "ClashQuickplay" }, { "numericValue": "72", "identifier": "ClashCompetitive" }, { "numericValue": "73", "identifier": "ControlQuickplay" }, { "numericValue": "74", "identifier": "ControlCompetitive" }, { "numericValue": "75", "identifier": "GambitPrime" }, { "numericValue": "76", "identifier": "Reckoning" }, { "numericValue": "77", "identifier": "Menagerie" }, { "numericValue": "78", "identifier": "VexOffensive" }, { "numericValue": "79", "identifier": "NightmareHunt" }, { "numericValue": "80", "identifier": "Elimination" }, { "numericValue": "81", "identifier": "Momentum" }, { "numericValue": "82", "identifier": "Dungeon" }, { "numericValue": "83", "identifier": "Sundial" }, { "numericValue": "84", "identifier": "TrialsOfOsiris" }, { "numericValue": "85", "identifier": "Dares" }, { "numericValue": "86", "identifier": "Offensive" }, { "numericValue": "87", "identifier": "LostSector" }, { "numericValue": "88", "identifier": "Rift" }, { "numericValue": "89", "identifier": "ZoneControl" }, { "numericValue": "90", "identifier": "IronBannerRift" }, { "numericValue": "91", "identifier": "IronBannerZoneControl" } ] } } }, "Destiny.Milestones.DestinyPublicMilestoneActivityVariant": { "description": "Represents a variant of an activity that's relevant to a milestone.", "type": "object", "properties": { "activityHash": { "format": "uint32", "description": "The hash identifier of this activity variant. Examine the activity's definition in the Manifest database to determine what makes it a distinct variant. Usually it will be difficulty level or whether or not it is a guided game variant of the activity, but theoretically it could be distinguished in any arbitrary way.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "activityModeHash": { "format": "uint32", "description": "The hash identifier of the most specific Activity Mode under which this activity is played. This is useful for situations where the activity in question is - for instance - a PVP map, but it's not clear what mode the PVP map is being played under. If it's a playlist, this will be less specific: but hopefully useful in some way.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityModeDefinition" } }, "activityModeType": { "format": "int32", "description": "The enumeration equivalent of the most specific Activity Mode under which this activity is played.", "enum": [ "0", "2", "3", "4", "5", "6", "7", "9", "10", "11", "12", "13", "15", "16", "17", "18", "19", "20", "21", "22", "24", "25", "26", "27", "28", "29", "30", "31", "32", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "90", "91" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "2", "identifier": "Story" }, { "numericValue": "3", "identifier": "Strike" }, { "numericValue": "4", "identifier": "Raid" }, { "numericValue": "5", "identifier": "AllPvP" }, { "numericValue": "6", "identifier": "Patrol" }, { "numericValue": "7", "identifier": "AllPvE" }, { "numericValue": "9", "identifier": "Reserved9" }, { "numericValue": "10", "identifier": "Control" }, { "numericValue": "11", "identifier": "Reserved11" }, { "numericValue": "12", "identifier": "Clash", "description": "Clash -> Destiny's name for Team Deathmatch. 4v4 combat, the team with the highest kills at the end of time wins." }, { "numericValue": "13", "identifier": "Reserved13" }, { "numericValue": "15", "identifier": "CrimsonDoubles" }, { "numericValue": "16", "identifier": "Nightfall" }, { "numericValue": "17", "identifier": "HeroicNightfall" }, { "numericValue": "18", "identifier": "AllStrikes" }, { "numericValue": "19", "identifier": "IronBanner" }, { "numericValue": "20", "identifier": "Reserved20" }, { "numericValue": "21", "identifier": "Reserved21" }, { "numericValue": "22", "identifier": "Reserved22" }, { "numericValue": "24", "identifier": "Reserved24" }, { "numericValue": "25", "identifier": "AllMayhem" }, { "numericValue": "26", "identifier": "Reserved26" }, { "numericValue": "27", "identifier": "Reserved27" }, { "numericValue": "28", "identifier": "Reserved28" }, { "numericValue": "29", "identifier": "Reserved29" }, { "numericValue": "30", "identifier": "Reserved30" }, { "numericValue": "31", "identifier": "Supremacy" }, { "numericValue": "32", "identifier": "PrivateMatchesAll" }, { "numericValue": "37", "identifier": "Survival" }, { "numericValue": "38", "identifier": "Countdown" }, { "numericValue": "39", "identifier": "TrialsOfTheNine" }, { "numericValue": "40", "identifier": "Social" }, { "numericValue": "41", "identifier": "TrialsCountdown" }, { "numericValue": "42", "identifier": "TrialsSurvival" }, { "numericValue": "43", "identifier": "IronBannerControl" }, { "numericValue": "44", "identifier": "IronBannerClash" }, { "numericValue": "45", "identifier": "IronBannerSupremacy" }, { "numericValue": "46", "identifier": "ScoredNightfall" }, { "numericValue": "47", "identifier": "ScoredHeroicNightfall" }, { "numericValue": "48", "identifier": "Rumble" }, { "numericValue": "49", "identifier": "AllDoubles" }, { "numericValue": "50", "identifier": "Doubles" }, { "numericValue": "51", "identifier": "PrivateMatchesClash" }, { "numericValue": "52", "identifier": "PrivateMatchesControl" }, { "numericValue": "53", "identifier": "PrivateMatchesSupremacy" }, { "numericValue": "54", "identifier": "PrivateMatchesCountdown" }, { "numericValue": "55", "identifier": "PrivateMatchesSurvival" }, { "numericValue": "56", "identifier": "PrivateMatchesMayhem" }, { "numericValue": "57", "identifier": "PrivateMatchesRumble" }, { "numericValue": "58", "identifier": "HeroicAdventure" }, { "numericValue": "59", "identifier": "Showdown" }, { "numericValue": "60", "identifier": "Lockdown" }, { "numericValue": "61", "identifier": "Scorched" }, { "numericValue": "62", "identifier": "ScorchedTeam" }, { "numericValue": "63", "identifier": "Gambit" }, { "numericValue": "64", "identifier": "AllPvECompetitive" }, { "numericValue": "65", "identifier": "Breakthrough" }, { "numericValue": "66", "identifier": "BlackArmoryRun" }, { "numericValue": "67", "identifier": "Salvage" }, { "numericValue": "68", "identifier": "IronBannerSalvage" }, { "numericValue": "69", "identifier": "PvPCompetitive" }, { "numericValue": "70", "identifier": "PvPQuickplay" }, { "numericValue": "71", "identifier": "ClashQuickplay" }, { "numericValue": "72", "identifier": "ClashCompetitive" }, { "numericValue": "73", "identifier": "ControlQuickplay" }, { "numericValue": "74", "identifier": "ControlCompetitive" }, { "numericValue": "75", "identifier": "GambitPrime" }, { "numericValue": "76", "identifier": "Reckoning" }, { "numericValue": "77", "identifier": "Menagerie" }, { "numericValue": "78", "identifier": "VexOffensive" }, { "numericValue": "79", "identifier": "NightmareHunt" }, { "numericValue": "80", "identifier": "Elimination" }, { "numericValue": "81", "identifier": "Momentum" }, { "numericValue": "82", "identifier": "Dungeon" }, { "numericValue": "83", "identifier": "Sundial" }, { "numericValue": "84", "identifier": "TrialsOfOsiris" }, { "numericValue": "85", "identifier": "Dares" }, { "numericValue": "86", "identifier": "Offensive" }, { "numericValue": "87", "identifier": "LostSector" }, { "numericValue": "88", "identifier": "Rift" }, { "numericValue": "89", "identifier": "ZoneControl" }, { "numericValue": "90", "identifier": "IronBannerRift" }, { "numericValue": "91", "identifier": "IronBannerZoneControl" } ] } } }, "Destiny.Milestones.DestinyPublicMilestoneChallenge": { "description": "A Milestone can have many Challenges. Challenges are just extra Objectives that provide a fun way to mix-up play and provide extra rewards.", "type": "object", "properties": { "objectiveHash": { "format": "uint32", "description": "The objective for the Challenge, which should have human-readable data about what needs to be done to accomplish the objective. Use this hash to look up the DestinyObjectiveDefinition.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyObjectiveDefinition" } }, "activityHash": { "format": "uint32", "description": "IF the Objective is related to a specific Activity, this will be that activity's hash. Use it to look up the DestinyActivityDefinition for additional data to show.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } } } }, "Destiny.Milestones.DestinyPublicMilestoneChallengeActivity": { "type": "object", "properties": { "activityHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyActivityDefinition" } }, "challengeObjectiveHashes": { "type": "array", "items": { "format": "uint32", "type": "integer" } }, "modifierHashes": { "description": "If the activity has modifiers, this will be the list of modifiers that all variants have in common. Perform lookups against DestinyActivityModifierDefinition which defines the modifier being applied to get at the modifier data.\r\nNote that, in the DestiyActivityDefinition, you will see many more modifiers than this being referred to: those are all *possible* modifiers for the activity, not the active ones. Use only the active ones to match what's really live.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.ActivityModifiers.DestinyActivityModifierDefinition" } }, "loadoutRequirementIndex": { "format": "int32", "description": "If returned, this is the index into the DestinyActivityDefinition's \"loadouts\" property, indicating the currently active loadout requirements.", "type": "integer" }, "phaseHashes": { "description": "The ordered list of phases for this activity, if any. Note that we have no human readable info for phases, nor any entities to relate them to: relating these hashes to something human readable is up to you unfortunately.", "type": "array", "items": { "format": "uint32", "type": "integer" } }, "booleanActivityOptions": { "description": "The set of activity options for this activity, keyed by an identifier that's unique for this activity (not guaranteed to be unique between or across all activities, though should be unique for every *variant* of a given *conceptual* activity: for instance, the original D2 Raid has many variant DestinyActivityDefinitions. While other activities could potentially have the same option hashes, for any given D2 base Raid variant the hash will be unique).\r\nAs a concrete example of this data, the hashes you get for Raids will correspond to the currently active \"Challenge Mode\".\r\nWe have no human readable information for this data, so it's up to you if you want to associate it with such info to show it.", "type": "object", "additionalProperties": { "type": "boolean" } } } }, "Destiny.Milestones.DestinyPublicMilestoneVendor": { "type": "object", "properties": { "vendorHash": { "format": "uint32", "description": "The hash identifier of the Vendor related to this Milestone. You can show useful things from this, such as thier Faction icon or whatever you might care about.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDefinition" } }, "previewItemHash": { "format": "uint32", "description": "If this vendor is featuring a specific item for this event, this will be the hash identifier of that item. I'm taking bets now on how long we go before this needs to be a list or some other, more complex representation instead and I deprecate this too. I'm going to go with 5 months. Calling it now, 2017-09-14 at 9:46pm PST.", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } } } }, "Destiny.Advanced.AwaInitializeResponse": { "type": "object", "properties": { "correlationId": { "description": "ID used to get the token. Present this ID to the user as it will identify this specific request on their device.", "type": "string" }, "sentToSelf": { "description": "True if the PUSH message will only be sent to the device that made this request.", "type": "boolean" } } }, "Destiny.Advanced.AwaPermissionRequested": { "type": "object", "properties": { "type": { "format": "int32", "description": "Type of advanced write action.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.Advanced.AwaType" } }, "affectedItemId": { "format": "int64", "description": "Item instance ID the action shall be applied to. This is optional for all but a new AwaType values. Rule of thumb is to provide the item instance ID if one is available.", "type": "integer" }, "membershipType": { "format": "int32", "description": "Destiny membership type of the account to modify.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } }, "characterId": { "format": "int64", "description": "Destiny character ID, if applicable, that will be affected by the action.", "type": "integer" } } }, "Destiny.Advanced.AwaType": { "format": "int32", "enum": [ "0", "1" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "InsertPlugs", "description": "Insert plugs into sockets." } ] }, "Destiny.Advanced.AwaUserResponse": { "type": "object", "properties": { "selection": { "format": "int32", "description": "Indication of the selection the user has made (Approving or rejecting the action)", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.Advanced.AwaUserSelection" } }, "correlationId": { "description": "Correlation ID of the request", "type": "string" }, "nonce": { "description": "Secret nonce received via the PUSH notification.", "type": "array", "items": { "format": "byte", "type": "string" } } } }, "Destiny.Advanced.AwaUserSelection": { "format": "int32", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Rejected" }, { "numericValue": "2", "identifier": "Approved" } ] }, "Destiny.Advanced.AwaAuthorizationResult": { "type": "object", "properties": { "userSelection": { "format": "int32", "description": "Indication of how the user responded to the request. If the value is \"Approved\" the actionToken will contain the token that can be presented when performing the advanced write action.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.Advanced.AwaUserSelection" } }, "responseReason": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.Advanced.AwaResponseReason" } }, "developerNote": { "description": "Message to the app developer to help understand the response.", "type": "string" }, "actionToken": { "description": "Credential used to prove the user authorized an advanced write action.", "type": "string" }, "maximumNumberOfUses": { "format": "int32", "description": "This token may be used to perform the requested action this number of times, at a maximum. If this value is 0, then there is no limit.", "type": "integer" }, "validUntil": { "format": "date-time", "description": "Time, UTC, when token expires.", "type": "string" }, "type": { "format": "int32", "description": "Advanced Write Action Type from the permission request.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Destiny.Advanced.AwaType" } }, "membershipType": { "format": "int32", "description": "MembershipType from the permission request.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } } } }, "Destiny.Advanced.AwaResponseReason": { "format": "int32", "enum": [ "0", "1", "2", "3" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Answered", "description": "User provided an answer" }, { "numericValue": "2", "identifier": "TimedOut", "description": "The HTTP request timed out, a new request may be made and an answer may still be provided." }, { "numericValue": "3", "identifier": "Replaced", "description": "This request was replaced by another request." } ] }, "Forum.CommunityContentSortMode": { "format": "byte", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Trending" }, { "numericValue": "1", "identifier": "Latest" }, { "numericValue": "2", "identifier": "HighestRated" } ] }, "Trending.TrendingCategories": { "type": "object", "properties": { "categories": { "type": "array", "items": { "$ref": "#/definitions/Trending.TrendingCategory" } } } }, "Trending.TrendingCategory": { "type": "object", "properties": { "categoryName": { "type": "string" }, "entries": { "$ref": "#/definitions/SearchResultOfTrendingEntry" }, "categoryId": { "type": "string" } } }, "Trending.TrendingEntry": { "description": "The list entry view for trending items. Returns just enough to show the item on the trending page.", "type": "object", "properties": { "weight": { "format": "double", "description": "The weighted score of this trending item.", "type": "number" }, "isFeatured": { "type": "boolean" }, "identifier": { "description": "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.", "type": "string" }, "entityType": { "format": "int32", "description": "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.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Trending.TrendingEntryType" } }, "displayName": { "description": "The localized \"display name/article title/'primary localized identifier'\" of the entity.", "type": "string" }, "tagline": { "description": "If the entity has a localized tagline/subtitle/motto/whatever, that is found here.", "type": "string" }, "image": { "type": "string" }, "startDate": { "format": "date-time", "type": "string" }, "endDate": { "format": "date-time", "type": "string" }, "link": { "type": "string" }, "webmVideo": { "description": "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", "type": "string" }, "mp4Video": { "description": "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", "type": "string" }, "featureImage": { "description": "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.", "type": "string" }, "items": { "description": "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.", "type": "array", "items": { "$ref": "#/definitions/Trending.TrendingEntry" } }, "creationDate": { "format": "date-time", "description": "If the entry has a date at which it was created, this is that date.", "type": "string" } } }, "Trending.TrendingEntryType": { "format": "int32", "description": "The known entity types that you can have returned from Trending.", "enum": [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "News" }, { "numericValue": "1", "identifier": "DestinyItem" }, { "numericValue": "2", "identifier": "DestinyActivity" }, { "numericValue": "3", "identifier": "DestinyRitual" }, { "numericValue": "4", "identifier": "SupportArticle" }, { "numericValue": "5", "identifier": "Creation" }, { "numericValue": "6", "identifier": "Stream" }, { "numericValue": "7", "identifier": "Update" }, { "numericValue": "8", "identifier": "Link" }, { "numericValue": "9", "identifier": "ForumTag" }, { "numericValue": "10", "identifier": "Container" }, { "numericValue": "11", "identifier": "Release" } ] }, "SearchResultOfTrendingEntry": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/definitions/Trending.TrendingEntry" } }, "totalResults": { "format": "int32", "type": "integer" }, "hasMore": { "type": "boolean" }, "query": { "$ref": "#/definitions/Queries.PagedQuery" }, "replacementContinuationToken": { "type": "string" }, "useTotalResults": { "description": "If useTotalResults is true, then totalResults represents an accurate count.\r\nIf False, it does not, and may be estimated/only the size of the current page.\r\nEither way, you should probably always only trust hasMore.\r\nThis 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.", "type": "boolean" } } }, "Trending.TrendingDetail": { "type": "object", "properties": { "identifier": { "type": "string" }, "entityType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Trending.TrendingEntryType" } }, "news": { "$ref": "#/definitions/Trending.TrendingEntryNews" }, "support": { "$ref": "#/definitions/Trending.TrendingEntrySupportArticle" }, "destinyItem": { "$ref": "#/definitions/Trending.TrendingEntryDestinyItem" }, "destinyActivity": { "$ref": "#/definitions/Trending.TrendingEntryDestinyActivity" }, "destinyRitual": { "$ref": "#/definitions/Trending.TrendingEntryDestinyRitual" }, "creation": { "$ref": "#/definitions/Trending.TrendingEntryCommunityCreation" } } }, "Trending.TrendingEntryNews": { "type": "object", "properties": { "article": { "$ref": "#/definitions/Content.ContentItemPublicContract" } } }, "Trending.TrendingEntrySupportArticle": { "type": "object", "properties": { "article": { "$ref": "#/definitions/Content.ContentItemPublicContract" } } }, "Trending.TrendingEntryDestinyItem": { "type": "object", "properties": { "itemHash": { "format": "uint32", "type": "integer" } } }, "Trending.TrendingEntryDestinyActivity": { "type": "object", "properties": { "activityHash": { "format": "uint32", "type": "integer" }, "status": { "$ref": "#/definitions/Destiny.Activities.DestinyPublicActivityStatus" } } }, "Destiny.Activities.DestinyPublicActivityStatus": { "description": "Represents the public-facing status of an activity: any data about what is currently active in the Activity, regardless of an individual character's progress in it.", "type": "object", "properties": { "challengeObjectiveHashes": { "description": "Active Challenges for the activity, if any - represented as hashes for DestinyObjectiveDefinitions.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyObjectiveDefinition" } }, "modifierHashes": { "description": "The active modifiers on this activity, if any - represented as hashes for DestinyActivityModifierDefinitions.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.ActivityModifiers.DestinyActivityModifierDefinition" } }, "rewardTooltipItems": { "description": "If the activity itself provides any specific \"mock\" rewards, this will be the items and their quantity.\r\nWhy \"mock\", you ask? Because these are the rewards as they are represented in the tooltip of the Activity.\r\nThese are often pointers to fake items that look good in a tooltip, but represent an abstract concept of what you will get for a reward rather than the specific items you may obtain.", "type": "array", "items": { "$ref": "#/definitions/Destiny.DestinyItemQuantity" } } } }, "Trending.TrendingEntryDestinyRitual": { "type": "object", "properties": { "image": { "type": "string" }, "icon": { "type": "string" }, "title": { "type": "string" }, "subtitle": { "type": "string" }, "dateStart": { "format": "date-time", "type": "string" }, "dateEnd": { "format": "date-time", "type": "string" }, "milestoneDetails": { "description": "A destiny event does not necessarily have a related Milestone, but if it does the details will be returned here.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Milestones.DestinyPublicMilestone" } ] }, "eventContent": { "description": "A destiny event will not necessarily have milestone \"custom content\", but if it does the details will be here.", "type": "object", "allOf": [ { "$ref": "#/definitions/Destiny.Milestones.DestinyMilestoneContent" } ] } } }, "Trending.TrendingEntryCommunityCreation": { "type": "object", "properties": { "media": { "type": "string" }, "title": { "type": "string" }, "author": { "type": "string" }, "authorMembershipId": { "format": "int64", "type": "integer" }, "postId": { "format": "int64", "type": "integer" }, "body": { "type": "string" }, "upvotes": { "format": "int32", "type": "integer" } } }, "Fireteam.FireteamDateRange": { "format": "byte", "enum": [ "0", "1", "2", "3", "4" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "All" }, { "numericValue": "1", "identifier": "Now" }, { "numericValue": "2", "identifier": "TwentyFourHours" }, { "numericValue": "3", "identifier": "FortyEightHours" }, { "numericValue": "4", "identifier": "ThisWeek" } ] }, "Fireteam.FireteamPlatform": { "format": "byte", "enum": [ "0", "1", "2", "3", "4", "5", "6" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Any" }, { "numericValue": "1", "identifier": "Playstation4" }, { "numericValue": "2", "identifier": "XboxOne" }, { "numericValue": "3", "identifier": "Blizzard" }, { "numericValue": "4", "identifier": "Steam" }, { "numericValue": "5", "identifier": "Stadia" }, { "numericValue": "6", "identifier": "Egs" } ] }, "Fireteam.FireteamPublicSearchOption": { "format": "byte", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "PublicAndPrivate" }, { "numericValue": "1", "identifier": "PublicOnly" }, { "numericValue": "2", "identifier": "PrivateOnly" } ] }, "Fireteam.FireteamSlotSearch": { "format": "byte", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "NoSlotRestriction" }, { "numericValue": "1", "identifier": "HasOpenPlayerSlots" }, { "numericValue": "2", "identifier": "HasOpenPlayerOrAltSlots" } ] }, "Fireteam.FireteamSummary": { "type": "object", "properties": { "fireteamId": { "format": "int64", "type": "integer" }, "groupId": { "format": "int64", "type": "integer" }, "platform": { "format": "byte", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Fireteam.FireteamPlatform" } }, "activityType": { "format": "int32", "type": "integer" }, "isImmediate": { "type": "boolean" }, "scheduledTime": { "format": "date-time", "type": "string" }, "ownerMembershipId": { "format": "int64", "type": "integer" }, "playerSlotCount": { "format": "int32", "type": "integer" }, "alternateSlotCount": { "format": "int32", "type": "integer" }, "availablePlayerSlotCount": { "format": "int32", "type": "integer" }, "availableAlternateSlotCount": { "format": "int32", "type": "integer" }, "title": { "type": "string" }, "dateCreated": { "format": "date-time", "type": "string" }, "dateModified": { "format": "date-time", "type": "string" }, "isPublic": { "type": "boolean" }, "locale": { "type": "string" }, "isValid": { "type": "boolean" }, "datePlayerModified": { "format": "date-time", "type": "string" }, "titleBeforeModeration": { "type": "string" }, "ownerCurrentGuardianRankSnapshot": { "format": "int32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.GuardianRanks.DestinyGuardianRankDefinition" } }, "ownerHighestLifetimeGuardianRankSnapshot": { "format": "int32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.GuardianRanks.DestinyGuardianRankDefinition" } }, "ownerTotalCommendationScoreSnapshot": { "format": "int32", "type": "integer" } } }, "SearchResultOfFireteamSummary": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/definitions/Fireteam.FireteamSummary" } }, "totalResults": { "format": "int32", "type": "integer" }, "hasMore": { "type": "boolean" }, "query": { "$ref": "#/definitions/Queries.PagedQuery" }, "replacementContinuationToken": { "type": "string" }, "useTotalResults": { "description": "If useTotalResults is true, then totalResults represents an accurate count.\r\nIf False, it does not, and may be estimated/only the size of the current page.\r\nEither way, you should probably always only trust hasMore.\r\nThis 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.", "type": "boolean" } } }, "Fireteam.FireteamResponse": { "type": "object", "properties": { "Summary": { "$ref": "#/definitions/Fireteam.FireteamSummary" }, "Members": { "type": "array", "items": { "$ref": "#/definitions/Fireteam.FireteamMember" } }, "Alternates": { "type": "array", "items": { "$ref": "#/definitions/Fireteam.FireteamMember" } } } }, "Fireteam.FireteamMember": { "type": "object", "properties": { "destinyUserInfo": { "$ref": "#/definitions/Fireteam.FireteamUserInfoCard" }, "bungieNetUserInfo": { "$ref": "#/definitions/User.UserInfoCard" }, "characterId": { "format": "int64", "type": "integer" }, "dateJoined": { "format": "date-time", "type": "string" }, "hasMicrophone": { "type": "boolean" }, "lastPlatformInviteAttemptDate": { "format": "date-time", "type": "string" }, "lastPlatformInviteAttemptResult": { "format": "byte", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Fireteam.FireteamPlatformInviteResult" } } } }, "Fireteam.FireteamUserInfoCard": { "type": "object", "properties": { "FireteamDisplayName": { "type": "string" }, "FireteamMembershipType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } }, "supplementalDisplayName": { "description": "A platform specific additional display name - ex: psn Real Name, bnet Unique Name, etc.", "type": "string" }, "iconPath": { "description": "URL the Icon if available.", "type": "string" }, "crossSaveOverride": { "format": "int32", "description": "If there is a cross save override in effect, this value will tell you the type that is overridding this one.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } }, "applicableMembershipTypes": { "description": "The list of Membership Types indicating the platforms on which this Membership can be used.\r\n Not in Cross Save = its original membership type. Cross Save Primary = Any membership types it is overridding, and its original membership type Cross Save Overridden = Empty list", "type": "array", "items": { "format": "int32", "description": "The types of membership the Accounts system supports. This is the external facing enum used in place of the internal-only Bungie.SharedDefinitions.MembershipType.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } } }, "isPublic": { "description": "If True, this is a public user membership.", "type": "boolean" }, "membershipType": { "format": "int32", "description": "Type of the membership. Not necessarily the native type.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } }, "membershipId": { "format": "int64", "description": "Membership ID as they user is known in the Accounts service", "type": "integer" }, "displayName": { "description": "Display Name the player has chosen for themselves. The display name is optional when the data type is used as input to a platform API.", "type": "string" }, "bungieGlobalDisplayName": { "description": "The bungie global display name, if set.", "type": "string" }, "bungieGlobalDisplayNameCode": { "format": "int16", "description": "The bungie global display name code, if set.", "type": "integer" } } }, "Fireteam.FireteamPlatformInviteResult": { "format": "byte", "enum": [ "0", "1", "2", "3", "4" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Success" }, { "numericValue": "2", "identifier": "AlreadyInFireteam" }, { "numericValue": "3", "identifier": "Throttled" }, { "numericValue": "4", "identifier": "ServiceError" } ] }, "SearchResultOfFireteamResponse": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/definitions/Fireteam.FireteamResponse" } }, "totalResults": { "format": "int32", "type": "integer" }, "hasMore": { "type": "boolean" }, "query": { "$ref": "#/definitions/Queries.PagedQuery" }, "replacementContinuationToken": { "type": "string" }, "useTotalResults": { "description": "If useTotalResults is true, then totalResults represents an accurate count.\r\nIf False, it does not, and may be estimated/only the size of the current page.\r\nEither way, you should probably always only trust hasMore.\r\nThis 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.", "type": "boolean" } } }, "Social.Friends.BungieFriendListResponse": { "type": "object", "properties": { "friends": { "type": "array", "items": { "$ref": "#/definitions/Social.Friends.BungieFriend" } } } }, "Social.Friends.BungieFriend": { "type": "object", "properties": { "lastSeenAsMembershipId": { "format": "int64", "type": "integer" }, "lastSeenAsBungieMembershipType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/BungieMembershipType" } }, "bungieGlobalDisplayName": { "type": "string" }, "bungieGlobalDisplayNameCode": { "format": "int16", "type": "integer" }, "onlineStatus": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Social.Friends.PresenceStatus" } }, "onlineTitle": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Social.Friends.PresenceOnlineStateFlags" } }, "relationship": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Social.Friends.FriendRelationshipState" } }, "bungieNetUser": { "$ref": "#/definitions/User.GeneralUser" } } }, "Social.Friends.PresenceStatus": { "format": "int32", "enum": [ "0", "1" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "OfflineOrUnknown" }, { "numericValue": "1", "identifier": "Online" } ] }, "Social.Friends.PresenceOnlineStateFlags": { "format": "int32", "enum": [ "0", "1", "2" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Destiny1" }, { "numericValue": "2", "identifier": "Destiny2" } ] }, "Social.Friends.FriendRelationshipState": { "format": "int32", "enum": [ "0", "1", "2", "3" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Unknown" }, { "numericValue": "1", "identifier": "Friend" }, { "numericValue": "2", "identifier": "IncomingRequest" }, { "numericValue": "3", "identifier": "OutgoingRequest" } ] }, "Social.Friends.BungieFriendRequestListResponse": { "type": "object", "properties": { "incomingRequests": { "type": "array", "items": { "$ref": "#/definitions/Social.Friends.BungieFriend" } }, "outgoingRequests": { "type": "array", "items": { "$ref": "#/definitions/Social.Friends.BungieFriend" } } } }, "Social.Friends.PlatformFriendType": { "format": "int32", "enum": [ "0", "1", "2", "3", "4" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Unknown" }, { "numericValue": "1", "identifier": "Xbox" }, { "numericValue": "2", "identifier": "PSN" }, { "numericValue": "3", "identifier": "Steam" }, { "numericValue": "4", "identifier": "Egs" } ] }, "Social.Friends.PlatformFriendResponse": { "type": "object", "properties": { "itemsPerPage": { "format": "int32", "type": "integer" }, "currentPage": { "format": "int32", "type": "integer" }, "hasMore": { "type": "boolean" }, "platformFriends": { "type": "array", "items": { "$ref": "#/definitions/Social.Friends.PlatformFriend" } } } }, "Social.Friends.PlatformFriend": { "type": "object", "properties": { "platformDisplayName": { "type": "string" }, "friendPlatform": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/Social.Friends.PlatformFriendType" } }, "destinyMembershipId": { "format": "int64", "type": "integer" }, "destinyMembershipType": { "format": "int32", "enum": [ "0", "1", "2", "3", "4", "5", "6", "10", "254", "-1" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "TigerXbox" }, { "numericValue": "2", "identifier": "TigerPsn" }, { "numericValue": "3", "identifier": "TigerSteam" }, { "numericValue": "4", "identifier": "TigerBlizzard" }, { "numericValue": "5", "identifier": "TigerStadia" }, { "numericValue": "6", "identifier": "TigerEgs" }, { "numericValue": "10", "identifier": "TigerDemon" }, { "numericValue": "254", "identifier": "BungieNext" }, { "numericValue": "-1", "identifier": "All", "description": "\"All\" is only valid for searching capabilities: you need to pass the actual matching BungieMembershipType for any query where you pass a known membershipId." } ] }, "bungieNetMembershipId": { "format": "int64", "type": "integer" }, "bungieGlobalDisplayName": { "type": "string" }, "bungieGlobalDisplayNameCode": { "format": "int16", "type": "integer" } } }, "Common.Models.CoreSettingsConfiguration": { "type": "object", "properties": { "environment": { "type": "string" }, "systems": { "type": "object", "additionalProperties": { "$ref": "#/definitions/Common.Models.CoreSystem" } }, "ignoreReasons": { "type": "array", "items": { "$ref": "#/definitions/Common.Models.CoreSetting" } }, "forumCategories": { "type": "array", "items": { "$ref": "#/definitions/Common.Models.CoreSetting" } }, "groupAvatars": { "type": "array", "items": { "$ref": "#/definitions/Common.Models.CoreSetting" } }, "defaultGroupTheme": { "$ref": "#/definitions/Common.Models.CoreSetting" }, "destinyMembershipTypes": { "type": "array", "items": { "$ref": "#/definitions/Common.Models.CoreSetting" } }, "recruitmentPlatformTags": { "type": "array", "items": { "$ref": "#/definitions/Common.Models.CoreSetting" } }, "recruitmentMiscTags": { "type": "array", "items": { "$ref": "#/definitions/Common.Models.CoreSetting" } }, "recruitmentActivities": { "type": "array", "items": { "$ref": "#/definitions/Common.Models.CoreSetting" } }, "userContentLocales": { "type": "array", "items": { "$ref": "#/definitions/Common.Models.CoreSetting" } }, "systemContentLocales": { "type": "array", "items": { "$ref": "#/definitions/Common.Models.CoreSetting" } }, "clanBannerDecals": { "type": "array", "items": { "$ref": "#/definitions/Common.Models.CoreSetting" } }, "clanBannerDecalColors": { "type": "array", "items": { "$ref": "#/definitions/Common.Models.CoreSetting" } }, "clanBannerGonfalons": { "type": "array", "items": { "$ref": "#/definitions/Common.Models.CoreSetting" } }, "clanBannerGonfalonColors": { "type": "array", "items": { "$ref": "#/definitions/Common.Models.CoreSetting" } }, "clanBannerGonfalonDetails": { "type": "array", "items": { "$ref": "#/definitions/Common.Models.CoreSetting" } }, "clanBannerGonfalonDetailColors": { "type": "array", "items": { "$ref": "#/definitions/Common.Models.CoreSetting" } }, "clanBannerStandards": { "type": "array", "items": { "$ref": "#/definitions/Common.Models.CoreSetting" } }, "destiny2CoreSettings": { "$ref": "#/definitions/Common.Models.Destiny2CoreSettings" }, "emailSettings": { "$ref": "#/definitions/User.EmailSettings" }, "fireteamActivities": { "type": "array", "items": { "$ref": "#/definitions/Common.Models.CoreSetting" } } } }, "Common.Models.CoreSystem": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "parameters": { "type": "object", "additionalProperties": { "type": "string" } } } }, "Common.Models.CoreSetting": { "type": "object", "properties": { "identifier": { "type": "string" }, "isDefault": { "type": "boolean" }, "displayName": { "type": "string" }, "summary": { "type": "string" }, "imagePath": { "type": "string" }, "childSettings": { "type": "array", "items": { "$ref": "#/definitions/Common.Models.CoreSetting" } } } }, "Common.Models.Destiny2CoreSettings": { "type": "object", "properties": { "collectionRootNode": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "badgesRootNode": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "recordsRootNode": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "medalsRootNode": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "metricsRootNode": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "activeTriumphsRootNodeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "activeSealsRootNodeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "legacyTriumphsRootNodeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "legacySealsRootNodeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "medalsRootNodeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "exoticCatalystsRootNodeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "loreRootNodeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "craftingRootNodeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "loadoutConstantsHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Loadouts.DestinyLoadoutConstantsDefinition" } }, "guardianRankConstantsHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.GuardianRanks.DestinyGuardianRankConstantsDefinition" } }, "guardianRanksRootNodeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "currentRankProgressionHashes": { "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyProgressionDefinition" } }, "insertPlugFreeProtectedPlugItemHashes": { "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyInventoryItemDefinition" } }, "insertPlugFreeBlockedSocketTypeHashes": { "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Sockets.DestinySocketTypeDefinition" } }, "undiscoveredCollectibleImage": { "type": "string" }, "ammoTypeHeavyIcon": { "type": "string" }, "ammoTypeSpecialIcon": { "type": "string" }, "ammoTypePrimaryIcon": { "type": "string" }, "currentSeasonalArtifactHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.DestinyVendorDefinition" } }, "currentSeasonHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Seasons.DestinySeasonDefinition" } }, "seasonalChallengesPresentationNodeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "futureSeasonHashes": { "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Seasons.DestinySeasonDefinition" } }, "pastSeasonHashes": { "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Seasons.DestinySeasonDefinition" } } } }, "Destiny.Definitions.Loadouts.DestinyLoadoutConstantsDefinition": { "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "whiteIconImagePath": { "description": "This is the same icon as the one in the display properties, offered here as well with a more descriptive name.", "type": "string" }, "blackIconImagePath": { "description": "This is a color-inverted version of the whiteIconImagePath.", "type": "string" }, "loadoutCountPerCharacter": { "format": "int32", "description": "The maximum number of loadouts available to each character. The loadouts component API response can return fewer loadouts than this, as more loadouts are unlocked by reaching higher Guardian Ranks.", "type": "integer" }, "loadoutPreviewFilterOutSocketCategoryHashes": { "description": "A list of the socket category hashes to be filtered out of loadout item preview displays.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Sockets.DestinySocketCategoryDefinition" } }, "loadoutPreviewFilterOutSocketTypeHashes": { "description": "A list of the socket type hashes to be filtered out of loadout item preview displays.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Sockets.DestinySocketTypeDefinition" } }, "loadoutNameHashes": { "description": "A list of the loadout name hashes in index order, for convenience.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Loadouts.DestinyLoadoutNameDefinition" } }, "loadoutIconHashes": { "description": "A list of the loadout icon hashes in index order, for convenience.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Loadouts.DestinyLoadoutIconDefinition" } }, "loadoutColorHashes": { "description": "A list of the loadout color hashes in index order, for convenience.", "type": "array", "items": { "format": "uint32", "type": "integer" }, "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Loadouts.DestinyLoadoutColorDefinition" } }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "LoadoutConstants" }, "Destiny.Definitions.GuardianRanks.DestinyGuardianRankConstantsDefinition": { "type": "object", "properties": { "displayProperties": { "$ref": "#/definitions/Destiny.Definitions.Common.DestinyDisplayPropertiesDefinition" }, "rankCount": { "format": "int32", "type": "integer" }, "rootNodeHash": { "format": "uint32", "type": "integer", "x-mapped-definition": { "$ref": "#/definitions/Destiny.Definitions.Presentation.DestinyPresentationNodeDefinition" } }, "iconBackgrounds": { "$ref": "#/definitions/Destiny.Definitions.GuardianRanks.DestinyGuardianRankIconBackgroundsDefinition" }, "hash": { "format": "uint32", "description": "The unique identifier for this entity. Guaranteed to be unique for the type of entity, but not globally.\r\nWhen entities refer to each other in Destiny content, it is this hash that they are referring to.", "type": "integer" }, "index": { "format": "int32", "description": "The index of the entity as it was found in the investment tables.", "type": "integer" }, "redacted": { "description": "If this is true, then there is an entity with this identifier/type combination, but BNet is not yet allowed to show it. Sorry!", "type": "boolean" } }, "x-mobile-manifest-name": "GuardianRankConstants" }, "Destiny.Definitions.GuardianRanks.DestinyGuardianRankIconBackgroundsDefinition": { "type": "object", "properties": { "backgroundEmptyBorderedImagePath": { "type": "string" }, "backgroundEmptyBlueGradientBorderedImagePath": { "type": "string" }, "backgroundFilledBlueBorderedImagePath": { "type": "string" }, "backgroundFilledBlueGradientBorderedImagePath": { "type": "string" }, "backgroundFilledBlueLowAlphaImagePath": { "type": "string" }, "backgroundFilledBlueMediumAlphaImagePath": { "type": "string" }, "backgroundFilledGrayMediumAlphaBorderedImagePath": { "type": "string" }, "backgroundFilledGrayHeavyAlphaBorderedImagePath": { "type": "string" }, "backgroundFilledWhiteMediumAlphaImagePath": { "type": "string" }, "backgroundFilledWhiteImagePath": { "type": "string" }, "backgroundPlateWhiteImagePath": { "type": "string" }, "backgroundPlateBlackImagePath": { "type": "string" }, "backgroundPlateBlackAlphaImagePath": { "type": "string" } } }, "User.EmailSettings": { "description": "The set of all email subscription/opt-in settings and definitions.", "type": "object", "properties": { "optInDefinitions": { "description": "Keyed by the name identifier of the opt-in definition.", "type": "object", "additionalProperties": { "$ref": "#/definitions/User.EmailOptInDefinition" } }, "subscriptionDefinitions": { "description": "Keyed by the name identifier of the Subscription definition.", "type": "object", "additionalProperties": { "$ref": "#/definitions/User.EmailSubscriptionDefinition" } }, "views": { "description": "Keyed by the name identifier of the View definition.", "type": "object", "additionalProperties": { "$ref": "#/definitions/User.EmailViewDefinition" } } } }, "User.EmailOptInDefinition": { "description": "Defines a single opt-in category: a wide-scoped permission to send emails for the subject related to the opt-in.", "type": "object", "properties": { "name": { "description": "The unique identifier for this opt-in category.", "type": "string" }, "value": { "format": "int64", "description": "The flag value for this opt-in category. For historical reasons, this is defined as a flags enum.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/User.OptInFlags" } }, "setByDefault": { "description": "If true, this opt-in setting should be set by default in situations where accounts are created without explicit choices about what they're opting into.", "type": "boolean" }, "dependentSubscriptions": { "description": "Information about the dependent subscriptions for this opt-in.", "type": "array", "items": { "$ref": "#/definitions/User.EmailSubscriptionDefinition" } } } }, "User.OptInFlags": { "format": "int64", "enum": [ "0", "1", "2", "4", "8", "16", "32", "64", "128", "256" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "None" }, { "numericValue": "1", "identifier": "Newsletter" }, { "numericValue": "2", "identifier": "System" }, { "numericValue": "4", "identifier": "Marketing" }, { "numericValue": "8", "identifier": "UserResearch" }, { "numericValue": "16", "identifier": "CustomerService" }, { "numericValue": "32", "identifier": "Social" }, { "numericValue": "64", "identifier": "PlayTests" }, { "numericValue": "128", "identifier": "PlayTestsLocal" }, { "numericValue": "256", "identifier": "Careers" } ] }, "User.EmailSubscriptionDefinition": { "description": "Defines a single subscription: permission to send emails for a specific, focused subject (generally timeboxed, such as for a specific release of a product or feature).", "type": "object", "properties": { "name": { "description": "The unique identifier for this subscription.", "type": "string" }, "localization": { "description": "A dictionary of localized text for the EMail Opt-in setting, keyed by the locale.", "type": "object", "additionalProperties": { "$ref": "#/definitions/User.EMailSettingSubscriptionLocalization" } }, "value": { "format": "int64", "description": "The bitflag value for this subscription. Should be a unique power of two value.", "type": "integer" } } }, "User.EMailSettingLocalization": { "description": "Localized text relevant to a given EMail setting in a given localization.", "type": "object", "properties": { "title": { "type": "string" }, "description": { "type": "string" } } }, "User.EMailSettingSubscriptionLocalization": { "description": "Localized text relevant to a given EMail setting in a given localization. Extra settings specifically for subscriptions.", "type": "object", "properties": { "unknownUserDescription": { "type": "string" }, "registeredUserDescription": { "type": "string" }, "unregisteredUserDescription": { "type": "string" }, "unknownUserActionText": { "type": "string" }, "knownUserActionText": { "type": "string" }, "title": { "type": "string" }, "description": { "type": "string" } } }, "User.EmailViewDefinition": { "description": "Represents a data-driven view for Email settings. Web/Mobile UI can use this data to show new EMail settings consistently without further manual work.", "type": "object", "properties": { "name": { "description": "The identifier for this view.", "type": "string" }, "viewSettings": { "description": "The ordered list of settings to show in this view.", "type": "array", "items": { "$ref": "#/definitions/User.EmailViewDefinitionSetting" } } } }, "User.EmailViewDefinitionSetting": { "type": "object", "properties": { "name": { "description": "The identifier for this UI Setting, which can be used to relate it to custom strings or other data as desired.", "type": "string" }, "localization": { "description": "A dictionary of localized text for the EMail setting, keyed by the locale.", "type": "object", "additionalProperties": { "$ref": "#/definitions/User.EMailSettingLocalization" } }, "setByDefault": { "description": "If true, this setting should be set by default if the user hasn't chosen whether it's set or cleared yet.", "type": "boolean" }, "optInAggregateValue": { "format": "int64", "description": "The OptInFlags value to set or clear if this setting is set or cleared in the UI. It is the aggregate of all underlying opt-in flags related to this setting.", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/User.OptInFlags" } }, "subscriptions": { "description": "The subscriptions to show as children of this setting, if any.", "type": "array", "items": { "$ref": "#/definitions/User.EmailSubscriptionDefinition" } } } }, "GlobalAlert": { "type": "object", "properties": { "AlertKey": { "type": "string" }, "AlertHtml": { "type": "string" }, "AlertTimestamp": { "format": "date-time", "type": "string" }, "AlertLink": { "type": "string" }, "AlertLevel": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GlobalAlertLevel" } }, "AlertType": { "format": "int32", "type": "integer", "x-enum-reference": { "$ref": "#/components/schemas/GlobalAlertType" } }, "StreamInfo": { "$ref": "#/definitions/StreamInfo" } } }, "GlobalAlertLevel": { "format": "int32", "enum": [ "0", "1", "2", "3" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "Unknown" }, { "numericValue": "1", "identifier": "Blue" }, { "numericValue": "2", "identifier": "Yellow" }, { "numericValue": "3", "identifier": "Red" } ] }, "GlobalAlertType": { "format": "int32", "enum": [ "0", "1" ], "type": "integer", "x-enum-values": [ { "numericValue": "0", "identifier": "GlobalAlert" }, { "numericValue": "1", "identifier": "StreamingAlert" } ] }, "StreamInfo": { "type": "object", "properties": { "ChannelName": { "type": "string" } } } }, "securityDefinitions": { "apiKey": { "type": "apiKey", "description": "Every request requires an API key. To get an API key, register a new application at https://www.bungie.net/en/Application.", "name": "X-API-Key", "in": "header" }, "oauth2": { "type": "oauth2", "description": "For requests that require Authentication, you will need to have your users authenticate via our OAuth mechanisms. See https://github.com/Bungie-net/api/wiki/OAuth-Documentation for more details.", "authorizationUrl": "https://www.bungie.net/en/OAuth/Authorize", "tokenUrl": "https://www.bungie.net/Platform/App/OAuth/token/", "flow": "accessCode", "scopes": { "ReadBasicUserProfile": "Read basic user profile information such as the user's handle, avatar icon, etc.", "ReadGroups": "Read Group/Clan Forums, Wall, and Members for groups and clans that the \r\nuser has joined.", "WriteGroups": "Write Group/Clan Forums, Wall, and Members for groups and clans that the \r\nuser has joined.", "AdminGroups": "Administer Group/Clan Forums, Wall, and Members for groups and clans that the \r\nuser is a founder or an administrator.", "BnetWrite": "Create new groups, clans, and forum posts, along with other actions that are reserved for Bungie.net\r\nelevated scope: not meant to be used by third party applications.", "MoveEquipDestinyItems": "Move or equip Destiny items", "ReadDestinyInventoryAndVault": "Read Destiny 1 Inventory and Vault contents.\r\nFor Destiny 2, this scope is needed to read anything regarded as private. This is the only scope a\r\nDestiny 2 app needs for read operations against Destiny 2 data such as inventory, vault, currency,\r\nvendors, milestones, progression, etc.", "ReadUserData": "Read user data such as who they are web notifications, \r\nclan/group memberships, recent activity, muted users.", "EditUserData": "Edit user data such as preferred language, status, motto, avatar selection and theme.", "ReadDestinyVendorsAndAdvisors": "Access vendor and advisor data specific to a user. OBSOLETE. This scope is only used on the Destiny 1 API.", "ReadAndApplyTokens": "Read offer history and claim and apply tokens for the user.", "AdvancedWriteActions": "Can perform actions that will result in a prompt to the user via the Destiny app.", "PartnerOfferGrant": "Can use the partner offer api to claim rewards defined for a partner", "DestinyUnlockValueQuery": "Allows an app to query sensitive information like unlock flags and values not available through normal methods.", "UserPiiRead": "Allows an app to query sensitive user PII, most notably email information." } } }, "tags": [ { "name": "App", "description": "application" }, { "name": "User", "description": "user" }, { "name": "Content", "description": "content" }, { "name": "Forum", "description": "forum" }, { "name": "GroupV2", "description": "groupV2" }, { "name": "Tokens", "description": "tokens" }, { "name": "Destiny2", "description": "destiny2" }, { "name": "CommunityContent", "description": "communitycontent" }, { "name": "Trending", "description": "trending" }, { "name": "Fireteam", "description": "fireteam" }, { "name": "Social", "description": "social" }, { "name": "", "description": "core" } ], "externalDocs": { "description": "Our Wiki page about OAuth through Bungie.net.", "url": "https://github.com/Bungie-net/api/wiki/OAuth-Documentation" } }