diff --git a/src/lib/api/adapters/crew.adapter.ts b/src/lib/api/adapters/crew.adapter.ts index 055b6579..d05515b4 100644 --- a/src/lib/api/adapters/crew.adapter.ts +++ b/src/lib/api/adapters/crew.adapter.ts @@ -12,7 +12,9 @@ import type { CreatePhantomPlayerInput, UpdatePhantomPlayerInput, UpdateMembershipInput, - MemberFilter + MemberFilter, + RosterResponse, + RosterQuery } from '$lib/types/api/crew' /** @@ -63,6 +65,23 @@ export class CrewAdapter extends BaseAdapter { return this.request('/crew/members', { ...options, params }) } + /** + * Get collection roster for crew members (officers only) + * Returns ownership info for specified items across all active crew members + */ + async getRoster(query: RosterQuery, options?: RequestOptions): Promise { + const searchParams = new URLSearchParams() + + query.characterIds?.forEach((id) => searchParams.append('character_ids[]', id)) + query.weaponIds?.forEach((id) => searchParams.append('weapon_ids[]', id)) + query.summonIds?.forEach((id) => searchParams.append('summon_ids[]', id)) + + const queryString = searchParams.toString() + const url = queryString ? `/crew/roster?${queryString}` : '/crew/roster' + + return this.request(url, options) + } + /** * Leave current crew (not available for captain) */ diff --git a/src/lib/types/api/crew.ts b/src/lib/types/api/crew.ts index 0fc4bcc4..0f886462 100644 --- a/src/lib/types/api/crew.ts +++ b/src/lib/types/api/crew.ts @@ -126,3 +126,29 @@ export interface UpdateMembershipInput { retired?: boolean retiredAt?: string } + +// Roster feature types + +export interface RosterItem { + id: string + uncapLevel: number +} + +export interface RosterMember { + userId: string + username: string + role: CrewRole + characters: RosterItem[] + weapons: RosterItem[] + summons: RosterItem[] +} + +export interface RosterResponse { + members: RosterMember[] +} + +export interface RosterQuery { + characterIds?: string[] + weaponIds?: string[] + summonIds?: string[] +}