@pinta365/blizzard_api 0.7.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +40 -4
  2. package/esm/mod.d.ts +4 -2
  3. package/esm/mod.js +2 -0
  4. package/esm/src/client.d.ts +9 -1
  5. package/esm/src/client.js +2 -0
  6. package/esm/src/generated/wow_forever_api.d.ts +939 -0
  7. package/esm/src/generated/wow_forever_api.js +2 -0
  8. package/esm/src/shared/context.d.ts +13 -2
  9. package/esm/src/shared/context.js +24 -9
  10. package/esm/src/shared/types.d.ts +1 -1
  11. package/esm/src/wow/game_data/achievement.d.ts +4 -0
  12. package/esm/src/wow/game_data/item.d.ts +29 -6
  13. package/esm/src/wow/game_data/mount.d.ts +2 -1
  14. package/esm/src/wow/game_data/reputations.d.ts +7 -1
  15. package/esm/src/wow/game_data/talent.d.ts +6 -2
  16. package/esm/src/wow/profile/character_statistics.d.ts +4 -0
  17. package/esm/src/wow_forever/account.d.ts +42 -0
  18. package/esm/src/wow_forever/account.js +24 -0
  19. package/esm/src/wow_forever/character.d.ts +336 -0
  20. package/esm/src/wow_forever/character.js +269 -0
  21. package/esm/src/wow_forever/game_data.d.ts +196 -0
  22. package/esm/src/wow_forever/game_data.js +166 -0
  23. package/esm/src/wow_forever/guild.d.ts +88 -0
  24. package/esm/src/wow_forever/guild.js +57 -0
  25. package/esm/src/wow_forever/index.d.ts +39 -0
  26. package/esm/src/wow_forever/index.js +45 -0
  27. package/esm/src/wow_forever/ruleset.d.ts +32 -0
  28. package/esm/src/wow_forever/ruleset.js +30 -0
  29. package/esm/src/wow_forever/types.d.ts +5 -0
  30. package/esm/src/wow_forever/types.js +1 -0
  31. package/package.json +5 -1
  32. package/script/mod.d.ts +4 -2
  33. package/script/mod.js +3 -1
  34. package/script/src/client.d.ts +9 -1
  35. package/script/src/client.js +2 -0
  36. package/script/src/generated/wow_forever_api.d.ts +939 -0
  37. package/script/src/generated/wow_forever_api.js +3 -0
  38. package/script/src/shared/context.d.ts +13 -2
  39. package/script/src/shared/context.js +24 -9
  40. package/script/src/shared/types.d.ts +1 -1
  41. package/script/src/wow/game_data/achievement.d.ts +4 -0
  42. package/script/src/wow/game_data/item.d.ts +29 -6
  43. package/script/src/wow/game_data/mount.d.ts +2 -1
  44. package/script/src/wow/game_data/reputations.d.ts +7 -1
  45. package/script/src/wow/game_data/talent.d.ts +6 -2
  46. package/script/src/wow/profile/character_statistics.d.ts +4 -0
  47. package/script/src/wow_forever/account.d.ts +42 -0
  48. package/script/src/wow_forever/account.js +28 -0
  49. package/script/src/wow_forever/character.d.ts +336 -0
  50. package/script/src/wow_forever/character.js +296 -0
  51. package/script/src/wow_forever/game_data.d.ts +196 -0
  52. package/script/src/wow_forever/game_data.js +185 -0
  53. package/script/src/wow_forever/guild.d.ts +88 -0
  54. package/script/src/wow_forever/guild.js +63 -0
  55. package/script/src/wow_forever/index.d.ts +39 -0
  56. package/script/src/wow_forever/index.js +180 -0
  57. package/script/src/wow_forever/ruleset.d.ts +32 -0
  58. package/script/src/wow_forever/ruleset.js +34 -0
  59. package/script/src/wow_forever/types.d.ts +5 -0
  60. package/script/src/wow_forever/types.js +2 -0
@@ -0,0 +1,196 @@
1
+ /**
2
+ * WoW: Forever versions of Retail game data endpoints whose Forever responses lack fields that Retail always returns:
3
+ * systems Forever doesn't have (hero talents, hunter pet specializations, guild achievements, sources) and indexes
4
+ * that are empty before launch, which the API omits instead of returning an empty list.
5
+ * Each one makes the same request as the Retail endpoint, but returns a type where those fields are optional,
6
+ * so the Retail types can keep them required.
7
+ * Verified against the live API (EU) on 2026-11-02, before launch.
8
+ */
9
+ import type { ApiContext } from "../shared/index.js";
10
+ import type { SearchParameters } from "../wow/search.js";
11
+ import type { AchievementCategories } from "../wow/game_data/achievement.js";
12
+ import type { Heirlooms } from "../wow/game_data/heirloom.js";
13
+ import type { ItemAppearanceSearch, ItemAppearanceSearchResult } from "../wow/game_data/item_appearance.js";
14
+ import type { JournalEncounters, JournalExpansions, JournalInstances } from "../wow/game_data/journal.js";
15
+ import type { Mount } from "../wow/game_data/mount.js";
16
+ import type { Pet, PetAbilities } from "../wow/game_data/pet.js";
17
+ import type { PlayableSpecialization, PlayableSpecializations } from "../wow/game_data/playable_specialization.js";
18
+ import type { ProfessionRecipie } from "../wow/game_data/profession.js";
19
+ import type { Quest } from "../wow/game_data/quest.js";
20
+ import type { ReputationFaction } from "../wow/game_data/reputations.js";
21
+ import type { TalentTree, TalentTrees } from "../wow/game_data/talent.js";
22
+ import type { Title } from "../wow/game_data/title.js";
23
+ /** Makes the keys K of T optional. */
24
+ type WithOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
25
+ /** Achievement category index as returned for Forever (no guild achievements). */
26
+ export interface ForeverAchievementCategories extends WithOptional<AchievementCategories, "guild_categories"> {
27
+ }
28
+ /** Heirloom index as returned for Forever (omitted while empty). */
29
+ export interface ForeverHeirlooms extends WithOptional<Heirlooms, "heirlooms"> {
30
+ }
31
+ /** Item appearance search result as returned for Forever (no slot). */
32
+ export interface ForeverItemAppearanceSearchResult extends Omit<ItemAppearanceSearchResult, "data"> {
33
+ data: WithOptional<ItemAppearanceSearchResult["data"], "slot">;
34
+ }
35
+ /** Item appearance search as returned for Forever. */
36
+ export interface ForeverItemAppearanceSearch extends Omit<ItemAppearanceSearch, "results"> {
37
+ results: ForeverItemAppearanceSearchResult[];
38
+ }
39
+ /** Journal encounter index as returned for Forever (omitted while empty). */
40
+ export interface ForeverJournalEncounters extends WithOptional<JournalEncounters, "encounters"> {
41
+ }
42
+ /** Journal expansion index as returned for Forever (omitted while empty). */
43
+ export interface ForeverJournalExpansions extends WithOptional<JournalExpansions, "tiers"> {
44
+ }
45
+ /** Journal instance index as returned for Forever (omitted while empty). */
46
+ export interface ForeverJournalInstances extends WithOptional<JournalInstances, "instances"> {
47
+ }
48
+ /** Mount as returned for Forever (no source). */
49
+ export interface ForeverMount extends WithOptional<Mount, "source"> {
50
+ }
51
+ /** Battle pet as returned for Forever (no abilities or source). */
52
+ export interface ForeverPet extends Omit<WithOptional<Pet, "abilities" | "source" | "should_exclude_if_uncollected">, "description"> {
53
+ /** null for pets without a description. */
54
+ description: Pet["description"] | null;
55
+ }
56
+ /** Pet ability index as returned for Forever (omitted while empty). */
57
+ export interface ForeverPetAbilities extends WithOptional<PetAbilities, "abilities"> {
58
+ }
59
+ /** Playable specialization as returned for Forever (no role, primary stat or gendered description). */
60
+ export interface ForeverPlayableSpecialization extends WithOptional<PlayableSpecialization, "gender_description" | "role" | "primary_stat_type"> {
61
+ }
62
+ /** Playable specialization index as returned for Forever (no hunter pet specializations). */
63
+ export interface ForeverPlayableSpecializations extends WithOptional<PlayableSpecializations, "pet_specializations"> {
64
+ }
65
+ /** Profession recipe as returned for Forever (no rank). */
66
+ export interface ForeverProfessionRecipie extends WithOptional<ProfessionRecipie, "rank"> {
67
+ }
68
+ /** Quest as returned for Forever (requirements can be empty). */
69
+ export interface ForeverQuest extends Omit<Quest, "requirements"> {
70
+ requirements: Partial<Quest["requirements"]>;
71
+ }
72
+ /** Reputation faction as returned for Forever (no description). */
73
+ export interface ForeverReputationFaction extends WithOptional<ReputationFaction, "description"> {
74
+ }
75
+ /** Talent tree as returned for Forever (no hero talents, restriction lines or class talent nodes). */
76
+ export interface ForeverTalentTree extends WithOptional<TalentTree, "restriction_lines" | "class_talent_nodes" | "hero_talent_trees"> {
77
+ }
78
+ /** Talent tree index as returned for Forever (no hero talents). */
79
+ export interface ForeverTalentTrees extends WithOptional<TalentTrees, "hero_talent_trees"> {
80
+ }
81
+ /** Title as returned for Forever (no source). */
82
+ export interface ForeverTitle extends WithOptional<Title, "source"> {
83
+ }
84
+ /**
85
+ * Returns an index of achievement categories.
86
+ *
87
+ * @returns A promise that resolves to an object representing an index of achievement categories.
88
+ */
89
+ export declare function achievementCategories(ctx: ApiContext): Promise<ForeverAchievementCategories>;
90
+ /**
91
+ * Returns an index of heirlooms.
92
+ *
93
+ * @returns A promise that resolves to an object representing an index of heirlooms.
94
+ */
95
+ export declare function heirlooms(ctx: ApiContext): Promise<ForeverHeirlooms>;
96
+ /**
97
+ * Performs a search of item appearances.
98
+ *
99
+ * @param searchParameters - Search parameters, e.g. `{ _page: 1, orderby: "id" }`.
100
+ * @returns A promise that resolves to an object representing the search results.
101
+ */
102
+ export declare function searchItemAppearance(ctx: ApiContext, searchParameters: SearchParameters): Promise<ForeverItemAppearanceSearch>;
103
+ /**
104
+ * Returns an index of journal encounters.
105
+ *
106
+ * @returns A promise that resolves to an object representing an index of journal encounters.
107
+ */
108
+ export declare function journalEncounters(ctx: ApiContext): Promise<ForeverJournalEncounters>;
109
+ /**
110
+ * Returns an index of journal expansions.
111
+ *
112
+ * @returns A promise that resolves to an object representing an index of journal expansions.
113
+ */
114
+ export declare function journalExpansions(ctx: ApiContext): Promise<ForeverJournalExpansions>;
115
+ /**
116
+ * Returns an index of journal instances.
117
+ *
118
+ * @returns A promise that resolves to an object representing an index of journal instances.
119
+ */
120
+ export declare function journalInstances(ctx: ApiContext): Promise<ForeverJournalInstances>;
121
+ /**
122
+ * Returns a mount by ID.
123
+ *
124
+ * @param mountId - The ID of the mount.
125
+ * @returns A promise that resolves to an object representing the mount.
126
+ */
127
+ export declare function mount(ctx: ApiContext, mountId: number): Promise<ForeverMount>;
128
+ /**
129
+ * Returns a battle pet by ID.
130
+ *
131
+ * @param petId - The ID of the pet.
132
+ * @returns A promise that resolves to an object representing the battle pet.
133
+ */
134
+ export declare function pet(ctx: ApiContext, petId: number): Promise<ForeverPet>;
135
+ /**
136
+ * Returns an index of pet abilities.
137
+ *
138
+ * @returns A promise that resolves to an object representing an index of pet abilities.
139
+ */
140
+ export declare function petAbilities(ctx: ApiContext): Promise<ForeverPetAbilities>;
141
+ /**
142
+ * Returns a playable specialization by ID.
143
+ *
144
+ * @param specId - The ID of the playable specialization.
145
+ * @returns A promise that resolves to an object representing the playable specialization.
146
+ */
147
+ export declare function playableSpecialization(ctx: ApiContext, specId: number): Promise<ForeverPlayableSpecialization>;
148
+ /**
149
+ * Returns an index of playable specializations.
150
+ *
151
+ * @returns A promise that resolves to an object representing an index of playable specializations.
152
+ */
153
+ export declare function playableSpecializations(ctx: ApiContext): Promise<ForeverPlayableSpecializations>;
154
+ /**
155
+ * Returns a recipe by ID.
156
+ *
157
+ * @param recipeId - The ID of the recipe.
158
+ * @returns A promise that resolves to an object representing the recipe.
159
+ */
160
+ export declare function professionRecipie(ctx: ApiContext, recipeId: number): Promise<ForeverProfessionRecipie>;
161
+ /**
162
+ * Returns a quest by ID.
163
+ *
164
+ * @param questId - The ID of the quest.
165
+ * @returns A promise that resolves to an object representing the quest.
166
+ */
167
+ export declare function quest(ctx: ApiContext, questId: number): Promise<ForeverQuest>;
168
+ /**
169
+ * Returns a reputation faction by ID.
170
+ *
171
+ * @param reputationFactionId - The ID of the reputation faction.
172
+ * @returns A promise that resolves to an object representing the reputation faction.
173
+ */
174
+ export declare function reputationFaction(ctx: ApiContext, reputationFactionId: string): Promise<ForeverReputationFaction>;
175
+ /**
176
+ * Returns a talent tree by specialization ID.
177
+ *
178
+ * @param talentTreeId - The unique identifier for the talent tree.
179
+ * @param specId - The unique identifier for the specialization.
180
+ * @returns A promise that resolves to an object representing details about a talent tree.
181
+ */
182
+ export declare function talentTree(ctx: ApiContext, talentTreeId: number, specId: number): Promise<ForeverTalentTree>;
183
+ /**
184
+ * Returns an index of talent trees.
185
+ *
186
+ * @returns A promise that resolves to an object representing an index of talent trees.
187
+ */
188
+ export declare function talentTrees(ctx: ApiContext): Promise<ForeverTalentTrees>;
189
+ /**
190
+ * Returns a title by ID.
191
+ *
192
+ * @param titleId - The ID of the title.
193
+ * @returns A promise that resolves to an object representing the title.
194
+ */
195
+ export declare function title(ctx: ApiContext, titleId: number): Promise<ForeverTitle>;
196
+ export {};
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ /**
3
+ * WoW: Forever versions of Retail game data endpoints whose Forever responses lack fields that Retail always returns:
4
+ * systems Forever doesn't have (hero talents, hunter pet specializations, guild achievements, sources) and indexes
5
+ * that are empty before launch, which the API omits instead of returning an empty list.
6
+ * Each one makes the same request as the Retail endpoint, but returns a type where those fields are optional,
7
+ * so the Retail types can keep them required.
8
+ * Verified against the live API (EU) on 2026-11-02, before launch.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.achievementCategories = achievementCategories;
12
+ exports.heirlooms = heirlooms;
13
+ exports.searchItemAppearance = searchItemAppearance;
14
+ exports.journalEncounters = journalEncounters;
15
+ exports.journalExpansions = journalExpansions;
16
+ exports.journalInstances = journalInstances;
17
+ exports.mount = mount;
18
+ exports.pet = pet;
19
+ exports.petAbilities = petAbilities;
20
+ exports.playableSpecialization = playableSpecialization;
21
+ exports.playableSpecializations = playableSpecializations;
22
+ exports.professionRecipie = professionRecipie;
23
+ exports.quest = quest;
24
+ exports.reputationFaction = reputationFaction;
25
+ exports.talentTree = talentTree;
26
+ exports.talentTrees = talentTrees;
27
+ exports.title = title;
28
+ const achievement_js_1 = require("../wow/game_data/achievement.js");
29
+ const heirloom_js_1 = require("../wow/game_data/heirloom.js");
30
+ const item_appearance_js_1 = require("../wow/game_data/item_appearance.js");
31
+ const journal_js_1 = require("../wow/game_data/journal.js");
32
+ const mount_js_1 = require("../wow/game_data/mount.js");
33
+ const pet_js_1 = require("../wow/game_data/pet.js");
34
+ const playable_specialization_js_1 = require("../wow/game_data/playable_specialization.js");
35
+ const profession_js_1 = require("../wow/game_data/profession.js");
36
+ const quest_js_1 = require("../wow/game_data/quest.js");
37
+ const reputations_js_1 = require("../wow/game_data/reputations.js");
38
+ const talent_js_1 = require("../wow/game_data/talent.js");
39
+ const title_js_1 = require("../wow/game_data/title.js");
40
+ /**
41
+ * Returns an index of achievement categories.
42
+ *
43
+ * @returns A promise that resolves to an object representing an index of achievement categories.
44
+ */
45
+ async function achievementCategories(ctx) {
46
+ return await (0, achievement_js_1.achievementCategories)(ctx);
47
+ }
48
+ /**
49
+ * Returns an index of heirlooms.
50
+ *
51
+ * @returns A promise that resolves to an object representing an index of heirlooms.
52
+ */
53
+ async function heirlooms(ctx) {
54
+ return await (0, heirloom_js_1.heirlooms)(ctx);
55
+ }
56
+ /**
57
+ * Performs a search of item appearances.
58
+ *
59
+ * @param searchParameters - Search parameters, e.g. `{ _page: 1, orderby: "id" }`.
60
+ * @returns A promise that resolves to an object representing the search results.
61
+ */
62
+ async function searchItemAppearance(ctx, searchParameters) {
63
+ return await (0, item_appearance_js_1.searchItemAppearance)(ctx, searchParameters);
64
+ }
65
+ /**
66
+ * Returns an index of journal encounters.
67
+ *
68
+ * @returns A promise that resolves to an object representing an index of journal encounters.
69
+ */
70
+ async function journalEncounters(ctx) {
71
+ return await (0, journal_js_1.journalEncounters)(ctx);
72
+ }
73
+ /**
74
+ * Returns an index of journal expansions.
75
+ *
76
+ * @returns A promise that resolves to an object representing an index of journal expansions.
77
+ */
78
+ async function journalExpansions(ctx) {
79
+ return await (0, journal_js_1.journalExpansions)(ctx);
80
+ }
81
+ /**
82
+ * Returns an index of journal instances.
83
+ *
84
+ * @returns A promise that resolves to an object representing an index of journal instances.
85
+ */
86
+ async function journalInstances(ctx) {
87
+ return await (0, journal_js_1.journalInstances)(ctx);
88
+ }
89
+ /**
90
+ * Returns a mount by ID.
91
+ *
92
+ * @param mountId - The ID of the mount.
93
+ * @returns A promise that resolves to an object representing the mount.
94
+ */
95
+ async function mount(ctx, mountId) {
96
+ return await (0, mount_js_1.mount)(ctx, mountId);
97
+ }
98
+ /**
99
+ * Returns a battle pet by ID.
100
+ *
101
+ * @param petId - The ID of the pet.
102
+ * @returns A promise that resolves to an object representing the battle pet.
103
+ */
104
+ async function pet(ctx, petId) {
105
+ return await (0, pet_js_1.pet)(ctx, petId);
106
+ }
107
+ /**
108
+ * Returns an index of pet abilities.
109
+ *
110
+ * @returns A promise that resolves to an object representing an index of pet abilities.
111
+ */
112
+ async function petAbilities(ctx) {
113
+ return await (0, pet_js_1.petAbilities)(ctx);
114
+ }
115
+ /**
116
+ * Returns a playable specialization by ID.
117
+ *
118
+ * @param specId - The ID of the playable specialization.
119
+ * @returns A promise that resolves to an object representing the playable specialization.
120
+ */
121
+ async function playableSpecialization(ctx, specId) {
122
+ return await (0, playable_specialization_js_1.playableSpecialization)(ctx, specId);
123
+ }
124
+ /**
125
+ * Returns an index of playable specializations.
126
+ *
127
+ * @returns A promise that resolves to an object representing an index of playable specializations.
128
+ */
129
+ async function playableSpecializations(ctx) {
130
+ return await (0, playable_specialization_js_1.playableSpecializations)(ctx);
131
+ }
132
+ /**
133
+ * Returns a recipe by ID.
134
+ *
135
+ * @param recipeId - The ID of the recipe.
136
+ * @returns A promise that resolves to an object representing the recipe.
137
+ */
138
+ async function professionRecipie(ctx, recipeId) {
139
+ return await (0, profession_js_1.professionRecipie)(ctx, recipeId);
140
+ }
141
+ /**
142
+ * Returns a quest by ID.
143
+ *
144
+ * @param questId - The ID of the quest.
145
+ * @returns A promise that resolves to an object representing the quest.
146
+ */
147
+ async function quest(ctx, questId) {
148
+ return await (0, quest_js_1.quest)(ctx, questId);
149
+ }
150
+ /**
151
+ * Returns a reputation faction by ID.
152
+ *
153
+ * @param reputationFactionId - The ID of the reputation faction.
154
+ * @returns A promise that resolves to an object representing the reputation faction.
155
+ */
156
+ async function reputationFaction(ctx, reputationFactionId) {
157
+ return await (0, reputations_js_1.reputationFaction)(ctx, reputationFactionId);
158
+ }
159
+ /**
160
+ * Returns a talent tree by specialization ID.
161
+ *
162
+ * @param talentTreeId - The unique identifier for the talent tree.
163
+ * @param specId - The unique identifier for the specialization.
164
+ * @returns A promise that resolves to an object representing details about a talent tree.
165
+ */
166
+ async function talentTree(ctx, talentTreeId, specId) {
167
+ return await (0, talent_js_1.talentTree)(ctx, talentTreeId, specId);
168
+ }
169
+ /**
170
+ * Returns an index of talent trees.
171
+ *
172
+ * @returns A promise that resolves to an object representing an index of talent trees.
173
+ */
174
+ async function talentTrees(ctx) {
175
+ return await (0, talent_js_1.talentTrees)(ctx);
176
+ }
177
+ /**
178
+ * Returns a title by ID.
179
+ *
180
+ * @param titleId - The ID of the title.
181
+ * @returns A promise that resolves to an object representing the title.
182
+ */
183
+ async function title(ctx, titleId) {
184
+ return await (0, title_js_1.title)(ctx, titleId);
185
+ }
@@ -0,0 +1,88 @@
1
+ /**
2
+ * WoW: Forever guild endpoints. Forever guilds are realmless: a guild is identified by its name slug alone
3
+ * (`/data/wow/guild/{nameSlug}`) and belongs to a ruleset instead of a realm.
4
+ * Verified against the live API (EU) on 2026-11-05.
5
+ */
6
+ import type { ApiContext, Href, KeyId, KeyNameId, LinkSelfHref, LocalizedString, TypeName } from "../shared/index.js";
7
+ import type { Guild, GuildAchievements, GuildActivity } from "../wow/profile/guild.js";
8
+ import type { ForeverCharacterRef } from "./character.js";
9
+ /** A reference to a Forever guild, as found in the `guild` field of the guild endpoints. */
10
+ export interface ForeverGuildRef {
11
+ key: Href;
12
+ name: LocalizedString;
13
+ id: number;
14
+ faction: TypeName;
15
+ slug: string;
16
+ }
17
+ /** Guild as returned for Forever. */
18
+ export interface ForeverGuild extends Omit<Guild, "key" | "realm"> {
19
+ slug: string;
20
+ /** The guild's ruleset (Normal, PvP, Roleplay, Roleplay PvP). */
21
+ ruleset: KeyNameId;
22
+ }
23
+ /**
24
+ * Guild achievements as returned for Forever. `total_quantity`, `total_points` and `achievements` are absent while
25
+ * the guild has no achievement progress.
26
+ */
27
+ export interface ForeverGuildAchievements extends Partial<Pick<GuildAchievements, "total_quantity" | "total_points" | "achievements">>, Pick<GuildAchievements, "category_progress" | "recent_events"> {
28
+ _links: {
29
+ self: Href;
30
+ };
31
+ guild: ForeverGuildRef;
32
+ }
33
+ /** Guild activity as returned for Forever. */
34
+ export interface ForeverGuildActivity extends Omit<GuildActivity, "guild" | "activities"> {
35
+ guild: ForeverGuildRef;
36
+ /** Absent while the guild has no recent activity. */
37
+ activities?: (Omit<NonNullable<GuildActivity["activities"]>[number], "character_achievement"> & {
38
+ character_achievement?: {
39
+ character: ForeverCharacterRef;
40
+ achievement: KeyNameId;
41
+ };
42
+ })[];
43
+ }
44
+ /** A guild member in the Forever guild roster. */
45
+ export interface ForeverGuildRosterMemberCharacter extends ForeverCharacterRef {
46
+ level: number;
47
+ playable_class: KeyId;
48
+ playable_race: KeyId;
49
+ faction: {
50
+ type: string;
51
+ };
52
+ }
53
+ /** Guild roster as returned for Forever. */
54
+ export interface ForeverGuildRoster extends LinkSelfHref {
55
+ guild: ForeverGuildRef;
56
+ members: {
57
+ character: ForeverGuildRosterMemberCharacter;
58
+ rank: number;
59
+ }[];
60
+ }
61
+ /**
62
+ * Returns a single guild by its name slug.
63
+ *
64
+ * @param nameSlug - The slug of the guild, e.g. "unbound".
65
+ * @returns A promise that resolves to an object representing the guild.
66
+ */
67
+ export declare function guild(ctx: ApiContext, nameSlug: string): Promise<ForeverGuild>;
68
+ /**
69
+ * Returns a guild's recent activity.
70
+ *
71
+ * @param nameSlug - The slug of the guild.
72
+ * @returns A promise that resolves to an object representing the guild's activity.
73
+ */
74
+ export declare function guildActivity(ctx: ApiContext, nameSlug: string): Promise<ForeverGuildActivity>;
75
+ /**
76
+ * Returns a guild's achievements.
77
+ *
78
+ * @param nameSlug - The slug of the guild.
79
+ * @returns A promise that resolves to an object representing the guild's achievements.
80
+ */
81
+ export declare function guildAchievements(ctx: ApiContext, nameSlug: string): Promise<ForeverGuildAchievements>;
82
+ /**
83
+ * Returns a guild's roster.
84
+ *
85
+ * @param nameSlug - The slug of the guild.
86
+ * @returns A promise that resolves to an object representing the guild's roster.
87
+ */
88
+ export declare function guildRoster(ctx: ApiContext, nameSlug: string): Promise<ForeverGuildRoster>;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ /**
3
+ * WoW: Forever guild endpoints. Forever guilds are realmless: a guild is identified by its name slug alone
4
+ * (`/data/wow/guild/{nameSlug}`) and belongs to a ruleset instead of a realm.
5
+ * Verified against the live API (EU) on 2026-11-05.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.guild = guild;
9
+ exports.guildActivity = guildActivity;
10
+ exports.guildAchievements = guildAchievements;
11
+ exports.guildRoster = guildRoster;
12
+ /**
13
+ * Returns a single guild by its name slug.
14
+ *
15
+ * @param nameSlug - The slug of the guild, e.g. "unbound".
16
+ * @returns A promise that resolves to an object representing the guild.
17
+ */
18
+ async function guild(ctx, nameSlug) {
19
+ return await ctx.request({
20
+ method: "GET",
21
+ url: `/data/wow/guild/${nameSlug}`,
22
+ namespace: "profile",
23
+ });
24
+ }
25
+ /**
26
+ * Returns a guild's recent activity.
27
+ *
28
+ * @param nameSlug - The slug of the guild.
29
+ * @returns A promise that resolves to an object representing the guild's activity.
30
+ */
31
+ async function guildActivity(ctx, nameSlug) {
32
+ return await ctx.request({
33
+ method: "GET",
34
+ url: `/data/wow/guild/${nameSlug}/activity`,
35
+ namespace: "profile",
36
+ });
37
+ }
38
+ /**
39
+ * Returns a guild's achievements.
40
+ *
41
+ * @param nameSlug - The slug of the guild.
42
+ * @returns A promise that resolves to an object representing the guild's achievements.
43
+ */
44
+ async function guildAchievements(ctx, nameSlug) {
45
+ return await ctx.request({
46
+ method: "GET",
47
+ url: `/data/wow/guild/${nameSlug}/achievements`,
48
+ namespace: "profile",
49
+ });
50
+ }
51
+ /**
52
+ * Returns a guild's roster.
53
+ *
54
+ * @param nameSlug - The slug of the guild.
55
+ * @returns A promise that resolves to an object representing the guild's roster.
56
+ */
57
+ async function guildRoster(ctx, nameSlug) {
58
+ return await ctx.request({
59
+ method: "GET",
60
+ url: `/data/wow/guild/${nameSlug}/roster`,
61
+ namespace: "profile",
62
+ });
63
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * World of Warcraft: Forever endpoints, namespace variant "forever". These are the Retail endpoint functions that
3
+ * the Forever API supports; the client binds them to a "forever" context. Forever runs on the Retail game data
4
+ * (specializations, talents, mounts, pets, toys, ...) with Classic-era content.
5
+ *
6
+ * Forever is realmless: players pick a ruleset (Normal, PvP, Roleplay, Roleplay PvP), not a realm, and characters are
7
+ * looked up by `name` and `surname`. The realm endpoints are left out (the realm index was taken down at launch);
8
+ * use `rulesets()`. Guilds are looked up by name slug alone. Auction endpoints are not included yet: the ruleset
9
+ * auctions route exists but returns no data.
10
+ * Verified against the live API (EU) on 2026-11-05.
11
+ */
12
+ export { achievement, achievementCategory, achievementMedia, achievements } from "../wow/game_data/achievement.js";
13
+ export { creature, creatureDisplayMedia, creatureFamilies, creatureFamily, creatureFamilyMedia, creatureType, creatureTypes, searchCreature, } from "../wow/game_data/creature.js";
14
+ export { guildCrestBorder, guildCrestEmblem, guildCrests } from "../wow/game_data/guild_crest.js";
15
+ export { heirloom } from "../wow/game_data/heirloom.js";
16
+ export { item, itemClass, itemClasses, itemMedia, itemSet, itemSets, itemSubclass, searchItem, } from "../wow/game_data/item.js";
17
+ export { itemAppearance, itemAppearanceSet, itemAppearanceSets, itemAppearanceSlot, itemAppearanceSlots, } from "../wow/game_data/item_appearance.js";
18
+ export { journalEncounter, journalExpansion, journalInstance, journalInstanceMedia, searchJournalEncounter, } from "../wow/game_data/journal.js";
19
+ export { searchMedia } from "../wow/game_data/media_search.js";
20
+ export { mounts, searchMount } from "../wow/game_data/mount.js";
21
+ export { petAbility, petAbilityMedia, petMedia, pets } from "../wow/game_data/pet.js";
22
+ export { playableClass, playableClasses, playableClassMedia } from "../wow/game_data/playable_class.js";
23
+ export { playableSpecializationMedia } from "../wow/game_data/playable_specialization.js";
24
+ export { playableRace, playableRaces } from "../wow/game_data/playable_race.js";
25
+ export { powerType, powerTypes } from "../wow/game_data/power_type.js";
26
+ export { profession, professionMedia, professionRecipieMedia, professions, professionSkillTier, } from "../wow/game_data/profession.js";
27
+ export { questArea, questAreas, questCategories, questCategory, quests, questType, questTypes, } from "../wow/game_data/quest.js";
28
+ export { region, regions } from "../wow/game_data/region.js";
29
+ export { reputationFactions, reputationTier, reputationTiers } from "../wow/game_data/reputations.js";
30
+ export { searchSpell, spell, spellMedia } from "../wow/game_data/spell.js";
31
+ export { talent, talents, talentTreeNodes } from "../wow/game_data/talent.js";
32
+ export { titles } from "../wow/game_data/title.js";
33
+ export { toy, toys } from "../wow/game_data/toy.js";
34
+ export { achievementCategories, heirlooms, journalEncounters, journalExpansions, journalInstances, mount, pet, petAbilities, playableSpecialization, playableSpecializations, professionRecipie, quest, reputationFaction, searchItemAppearance, talentTree, talentTrees, title, } from "./game_data.js";
35
+ export { ruleset, rulesets } from "./ruleset.js";
36
+ export { characterAchievementStatistics, characterAchievementSummary, characterAppearanceSummary, characterCollectionHeirlooms, characterCollectionMounts, characterCollectionPets, characterCollectionToys, characterCollectionTransmogs, characterCollectionTypes, characterCompletedQuests, characterEncounterDungeons, characterEncounterRaids, characterEncounters, characterEquipments, characterMedia, characterMythicKeystoneProfile, characterProfessions, characterProfile, characterProfileStatus, characterPvpSummary, characterQuests, characterReputations, characterSpecializations, characterStatistics, characterTitles, } from "./character.js";
37
+ export { guild, guildAchievements, guildActivity, guildRoster } from "./guild.js";
38
+ export { accountCollectionsIndex, accountHeirloomsCollection, accountMountsCollection, accountPetsCollection, accountToysCollection, } from "../wow/profile/account_profile.js";
39
+ export { accountProfileSummary, accountTransmogsCollection } from "./account.js";