# EPGP ## `POST /api/epgp/adjustments` **CreateAdjustment** **Request body** Model: {ref}`EpgpAdjustmentCreate ` | Field | Type | Required | Description | |---|---|---|---| | `member_id` | integer | yes | | | `kind` | {ref}`LedgerKind ` | yes | | | `amount` | integer | yes | | | `reason` | string | yes | | **Response `201` — Document created, URL follows** Model: {ref}`EpgpLedgerRow ` | Field | Type | Required | Description | |---|---|---|---| | `id` | string (uuid) | yes | | | `at` | string (date-time) | yes | | | `kind` | {ref}`LedgerKind ` | yes | | | `amount` | integer | yes | | | `decayed` | number | yes | | | `reason` | string | yes | | | `note` | string \| null | yes | | | `character` | string \| null | yes | | | `member_id` | integer \| null | yes | | | `member_name` | string \| null | yes | | | `officer` | string | yes | | | `item_name` | string \| null | yes | | | `voided` | boolean | yes | | ## `GET /api/epgp/characters` **ListCharacters** **Response `200` — Request fulfilled, document follows** Model: {ref}`EpgpCharacterList ` | Field | Type | Required | Description | |---|---|---|---| | `characters` | array of {ref}`EpgpCharacter ` | yes | | ## `PUT /api/epgp/characters/{character_id}` **UpdateCharacter** **Parameters** | Name | In | Type | Required | Description | |---|---|---|---|---| | `character_id` | path | string (uuid) | yes | | **Request body** Model: {ref}`EpgpCharacterUpdate ` | Field | Type | Required | Description | |---|---|---|---| | `member_id` | integer \| null | yes | | | `is_main` | boolean | yes | | **Response `200` — Request fulfilled, document follows** Model: {ref}`EpgpCharacter ` | Field | Type | Required | Description | |---|---|---|---| | `id` | string (uuid) | yes | | | `name` | string | yes | | | `realm` | string | yes | | | `class` | {ref}`WowClass ` \| null | yes | | | `member_id` | integer \| null | yes | | | `member_name` | string \| null | yes | | | `is_main` | boolean | yes | | | `source` | {ref}`CharacterSource ` | yes | | | `last_seen_at` | string (date-time) \| null | yes | | ## `GET /api/epgp/game-import` **GetGameImport** **Response `200` — Request fulfilled, document follows** Model: {ref}`EpgpGameImport ` | Field | Type | Required | Description | |---|---|---|---| | `payload` | string | yes | | | `generated_at` | string (date-time) | yes | | ## `POST /api/epgp/imports` **ImportPayload** **Request body** Model: {ref}`EpgpImportBody ` | Field | Type | Required | Description | |---|---|---|---| | `payload` | string | yes | | **Response `200` — Request fulfilled, document follows** Model: {ref}`EpgpImportResult ` | Field | Type | Required | Description | |---|---|---|---| | `recorder` | string | yes | | | `sessions` | {ref}`ImportCounts ` | yes | | | `encounters` | {ref}`ImportCounts ` | yes | | | `loot` | {ref}`LootImportCounts ` | yes | | | `awards` | {ref}`AwardImportCounts ` | yes | | | `unlinked_characters` | array of string | no | | | `attendance` | {ref}`ImportAttendanceResult ` | yes | | | `conflicts` | array of string | no | | | `roster` | {ref}`RosterImportCounts ` | no | | | `professions` | {ref}`ProfessionImportCounts ` | no | | | `signups` | {ref}`SignupImportCounts ` | no | | | `bank` | {ref}`BankImportCounts ` | no | | | `announcements` | {ref}`AnnouncementImportCounts ` | no | | | `recruits` | {ref}`RecruitImportCounts ` | no | | | `member_notes` | {ref}`MemberNoteImportCounts ` | no | | ## `GET /api/epgp/ledger` **GetLedger** **Parameters** | Name | In | Type | Required | Description | |---|---|---|---|---| | `member_id` | query | integer \| null | no | | | `character` | query | string \| null | no | | | `limit` | query | integer | no | | | `before` | query | string (date-time) \| null | no | | **Response `200` — Request fulfilled, document follows** Model: {ref}`EpgpLedgerPage ` | Field | Type | Required | Description | |---|---|---|---| | `entries` | array of {ref}`EpgpLedgerRow ` | yes | | ## `GET /api/epgp/loot` **GetLoot** **Parameters** | Name | In | Type | Required | Description | |---|---|---|---|---| | `limit` | query | integer | no | | **Response `200` — Request fulfilled, document follows** Model: {ref}`EpgpLootPage ` | Field | Type | Required | Description | |---|---|---|---| | `items` | array of {ref}`EpgpLootRow ` | yes | | ## `GET /api/epgp/member-notes` **ListNotes** **Parameters** | Name | In | Type | Required | Description | |---|---|---|---|---| | `member_id` | query | integer \| null | no | | **Response `200` — Request fulfilled, document follows** Model: {ref}`EpgpMemberNoteList ` | Field | Type | Required | Description | |---|---|---|---| | `notes` | array of {ref}`EpgpMemberNoteRow ` | yes | | ## `GET /api/epgp/progression` **GetProgression** **Response `200` — Request fulfilled, document follows** Model: {ref}`EpgpProgression ` | Field | Type | Required | Description | |---|---|---|---| | `instances` | array of {ref}`EpgpProgressionInstance ` | yes | | ## `GET /api/epgp/recruits` **ListRecruits** **Response `200` — Request fulfilled, document follows** Model: {ref}`EpgpRecruitList ` | Field | Type | Required | Description | |---|---|---|---| | `recruits` | array of {ref}`EpgpRecruitRow ` | yes | | ## `PUT /api/epgp/recruits/{recruit_id}` **UpdateRecruit** **Parameters** | Name | In | Type | Required | Description | |---|---|---|---|---| | `recruit_id` | path | string (uuid) | yes | | **Request body** Model: {ref}`EpgpRecruitUpdate ` | Field | Type | Required | Description | |---|---|---|---| | `status` | {ref}`RecruitStatus ` \| null | no | | | `note` | string \| null | no | | | `checklist` | {ref}`RecruitChecklist ` \| null | no | | **Response `200` — Request fulfilled, document follows** Model: {ref}`EpgpRecruitRow ` | Field | Type | Required | Description | |---|---|---|---| | `id` | string (uuid) | yes | | | `character` | string | yes | | | `class` | {ref}`WowClass ` \| null | no | | | `status` | {ref}`RecruitStatus ` | yes | | | `note` | string \| null | yes | | | `checklist` | {ref}`RecruitChecklist ` | yes | | | `votes` | array of {ref}`ExportRecruitVote ` | yes | | | `member_id` | integer \| null | yes | | | `at` | string (date-time) | yes | | ## `POST /api/epgp/recruits/{recruit_id}/votes` **AddVote** **Parameters** | Name | In | Type | Required | Description | |---|---|---|---|---| | `recruit_id` | path | string (uuid) | yes | | **Request body** Model: {ref}`EpgpRecruitVoteCreate ` | Field | Type | Required | Description | |---|---|---|---| | `vote` | {ref}`RecruitVoteChoice ` | yes | | **Response `201` — Document created, URL follows** Model: {ref}`EpgpRecruitRow ` | Field | Type | Required | Description | |---|---|---|---| | `id` | string (uuid) | yes | | | `character` | string | yes | | | `class` | {ref}`WowClass ` \| null | no | | | `status` | {ref}`RecruitStatus ` | yes | | | `note` | string \| null | yes | | | `checklist` | {ref}`RecruitChecklist ` | yes | | | `votes` | array of {ref}`ExportRecruitVote ` | yes | | | `member_id` | integer \| null | yes | | | `at` | string (date-time) | yes | | ## `GET /api/epgp/roster` **GetRoster** **Response `200` — Request fulfilled, document follows** Model: {ref}`EpgpRoster ` | Field | Type | Required | Description | |---|---|---|---| | `members` | array of {ref}`EpgpRosterRow ` | yes | | ## `PUT /api/epgp/roster/{member_id}` **UpdateRoster** **Parameters** | Name | In | Type | Required | Description | |---|---|---|---|---| | `member_id` | path | integer | yes | | **Request body** Model: {ref}`EpgpRosterUpdate ` | Field | Type | Required | Description | |---|---|---|---| | `raid_status` | {ref}`RaidStatus ` \| null | yes | | **Response `200` — Request fulfilled, document follows** Model: {ref}`EpgpRosterRow ` | Field | Type | Required | Description | |---|---|---|---| | `member_id` | integer | yes | | | `name` | string | yes | | | `raid_status` | {ref}`RaidStatus ` \| null | yes | | | `trial_started_at` | string (date-time) \| null | yes | | ## `GET /api/epgp/standings` **GetStandings** **Response `200` — Request fulfilled, document follows** Model: {ref}`EpgpStandings ` | Field | Type | Required | Description | |---|---|---|---| | `generated_at` | string (date-time) | yes | | | `rules` | {ref}`EpgpRules ` | yes | | | `rows` | array of {ref}`EpgpStandingsRow ` | yes | | ## `GET /api/epgp/sync-tokens` **ListSyncTokens** **Response `200` — Request fulfilled, document follows** Model: {ref}`EpgpSyncTokenList ` | Field | Type | Required | Description | |---|---|---|---| | `tokens` | array of {ref}`EpgpSyncTokenSummary ` | yes | | ## `POST /api/epgp/sync-tokens` **CreateSyncToken** **Request body** Model: {ref}`EpgpSyncTokenCreate ` | Field | Type | Required | Description | |---|---|---|---| | `name` | string | yes | | **Response `201` — Document created, URL follows** Model: {ref}`EpgpSyncTokenCreated ` | Field | Type | Required | Description | |---|---|---|---| | `id` | string (uuid) | yes | | | `name` | string | yes | | | `token` | string | yes | | ## `DELETE /api/epgp/sync-tokens/{token_id}` **RevokeSyncToken** **Parameters** | Name | In | Type | Required | Description | |---|---|---|---|---| | `token_id` | path | string (uuid) | yes | | **Response `204`** — Request fulfilled, nothing follows ## `GET /api/me/characters` **ListMyCharacters** **Response `200` — Request fulfilled, document follows** Model: {ref}`EpgpCharacterList ` | Field | Type | Required | Description | |---|---|---|---| | `characters` | array of {ref}`EpgpCharacter ` | yes | | ## `POST /api/me/characters` **ClaimCharacter** **Request body** Model: {ref}`MyCharacterCreate ` | Field | Type | Required | Description | |---|---|---|---| | `name` | string | yes | | | `realm` | string \| null | no | | | `class` | {ref}`WowClass ` \| null | no | | **Response `201` — Document created, URL follows** Model: {ref}`EpgpCharacter ` | Field | Type | Required | Description | |---|---|---|---| | `id` | string (uuid) | yes | | | `name` | string | yes | | | `realm` | string | yes | | | `class` | {ref}`WowClass ` \| null | yes | | | `member_id` | integer \| null | yes | | | `member_name` | string \| null | yes | | | `is_main` | boolean | yes | | | `source` | {ref}`CharacterSource ` | yes | | | `last_seen_at` | string (date-time) \| null | yes | | ## `DELETE /api/me/characters/{character_id}` **DeleteCharacter** **Parameters** | Name | In | Type | Required | Description | |---|---|---|---|---| | `character_id` | path | string (uuid) | yes | | **Response `204`** — Request fulfilled, nothing follows