sidequest_common.schemas.guild_hub ================================== .. py:module:: sidequest_common.schemas.guild_hub .. autoapi-nested-parse:: Guild hub v2 schemas: the addon export/import v2 sections and the ``/api/guild/*`` HTTP API. ``local://addon-contract-v2.md`` is the source of truth; field names and string prefixes here are binding. Lua json encoders drop nil keys rather than emitting null (see ``sidequest_common.schemas.epgp``), so every nullable contract field here is a pydantic default, not a required key. Attributes ---------- .. autoapisummary:: sidequest_common.schemas.guild_hub.ANNOUNCEMENT_TEXT_MAX sidequest_common.schemas.guild_hub.INACTIVE_AFTER_DAYS sidequest_common.schemas.guild_hub.LEFT_GUILD_AFTER_DAYS sidequest_common.schemas.guild_hub.LEVEL_MILESTONE_STEP sidequest_common.schemas.guild_hub.MAX_ANNOUNCEMENTS_V2 sidequest_common.schemas.guild_hub.MAX_BANK_ENTRIES sidequest_common.schemas.guild_hub.MAX_MEMBER_NOTES_V2 sidequest_common.schemas.guild_hub.MAX_PROFESSION_PAIRS sidequest_common.schemas.guild_hub.MAX_RECIPES_PER_PROFESSION sidequest_common.schemas.guild_hub.MAX_RECRUITS_V2 sidequest_common.schemas.guild_hub.MAX_ROSTER_MEMBERS sidequest_common.schemas.guild_hub.MAX_SIGNUPS_V2 sidequest_common.schemas.guild_hub.NOTE_TEXT_MAX sidequest_common.schemas.guild_hub.RECRUIT_NOTE_MAX Classes ------- .. autoapisummary:: sidequest_common.schemas.guild_hub.AnnouncementImportCounts sidequest_common.schemas.guild_hub.AnnouncementPosted sidequest_common.schemas.guild_hub.AnnouncementPostedResult sidequest_common.schemas.guild_hub.AnnouncementSource sidequest_common.schemas.guild_hub.BankImportCounts sidequest_common.schemas.guild_hub.BankKind sidequest_common.schemas.guild_hub.EpgpMemberNoteList sidequest_common.schemas.guild_hub.EpgpMemberNoteRow sidequest_common.schemas.guild_hub.EpgpRecruitList sidequest_common.schemas.guild_hub.EpgpRecruitRow sidequest_common.schemas.guild_hub.EpgpRecruitUpdate sidequest_common.schemas.guild_hub.EpgpRecruitVoteCreate sidequest_common.schemas.guild_hub.ExportAnnouncement sidequest_common.schemas.guild_hub.ExportBankEntry sidequest_common.schemas.guild_hub.ExportMemberNote sidequest_common.schemas.guild_hub.ExportProfession sidequest_common.schemas.guild_hub.ExportRecipe sidequest_common.schemas.guild_hub.ExportRecruit sidequest_common.schemas.guild_hub.ExportRecruitVote sidequest_common.schemas.guild_hub.ExportRoster sidequest_common.schemas.guild_hub.ExportRosterMember sidequest_common.schemas.guild_hub.ExportSignupV2 sidequest_common.schemas.guild_hub.GameImportBadgeRef sidequest_common.schemas.guild_hub.GameImportCharacter sidequest_common.schemas.guild_hub.GameImportCrafter sidequest_common.schemas.guild_hub.GameImportInactiveMember sidequest_common.schemas.guild_hub.GameImportLedgerEntry sidequest_common.schemas.guild_hub.GameImportLootEntry sidequest_common.schemas.guild_hub.GameImportMember sidequest_common.schemas.guild_hub.GameImportNews sidequest_common.schemas.guild_hub.GameImportOfficerNote sidequest_common.schemas.guild_hub.GameImportOfficerPart sidequest_common.schemas.guild_hub.GameImportOfficerRecruit sidequest_common.schemas.guild_hub.GameImportSheet sidequest_common.schemas.guild_hub.GuildAnnouncementCreate sidequest_common.schemas.guild_hub.GuildAnnouncementRow sidequest_common.schemas.guild_hub.GuildAnnouncementsPage sidequest_common.schemas.guild_hub.GuildBankPage sidequest_common.schemas.guild_hub.GuildBankRow sidequest_common.schemas.guild_hub.GuildBankTotals sidequest_common.schemas.guild_hub.GuildCrafterProfessionCount sidequest_common.schemas.guild_hub.GuildCrafterResult sidequest_common.schemas.guild_hub.GuildCrafterRow sidequest_common.schemas.guild_hub.GuildCrafters sidequest_common.schemas.guild_hub.GuildNewsItem sidequest_common.schemas.guild_hub.GuildNewsPage sidequest_common.schemas.guild_hub.GuildRoster sidequest_common.schemas.guild_hub.GuildRosterCharacter sidequest_common.schemas.guild_hub.GuildRosterMember sidequest_common.schemas.guild_hub.GuildRosterUnlinked sidequest_common.schemas.guild_hub.MemberNoteImportCounts sidequest_common.schemas.guild_hub.NewsKind sidequest_common.schemas.guild_hub.PendingAnnouncement sidequest_common.schemas.guild_hub.PendingAnnouncementsPage sidequest_common.schemas.guild_hub.ProfessionImportCounts sidequest_common.schemas.guild_hub.RecruitChecklist sidequest_common.schemas.guild_hub.RecruitImportCounts sidequest_common.schemas.guild_hub.RecruitStatus sidequest_common.schemas.guild_hub.RecruitVoteChoice sidequest_common.schemas.guild_hub.RosterImportCounts sidequest_common.schemas.guild_hub.SignupImportCounts Module Contents --------------- .. py:class:: AnnouncementImportCounts Bases: :py:obj:`pydantic.BaseModel` Count of new announcement rows inserted by one import. .. py:attribute:: new :type: int :value: 0 .. py:class:: AnnouncementPosted Bases: :py:obj:`pydantic.BaseModel` Body for ``POST /api/guilds/{guild_id}/announcements/{id}/posted`` (bot). .. py:attribute:: message_id :type: int .. py:class:: AnnouncementPostedResult Bases: :py:obj:`pydantic.BaseModel` Response for ``POST /api/guilds/{guild_id}/announcements/{id}/posted`` (bot). .. py:attribute:: message_id :type: int .. py:class:: AnnouncementSource Bases: :py:obj:`enum.StrEnum` Where an announcement was made. Initialize self. See help(type(self)) for accurate signature. .. py:attribute:: GAME :value: 'game' .. py:attribute:: SITE :value: 'site' .. py:class:: BankImportCounts Bases: :py:obj:`pydantic.BaseModel` Count of new bank log rows inserted by one import. .. py:attribute:: new :type: int :value: 0 .. py:class:: BankKind Bases: :py:obj:`enum.StrEnum` What kind of guild bank activity log row this is. Initialize self. See help(type(self)) for accurate signature. .. py:attribute:: BUY_TAB :value: 'buy_tab' .. py:attribute:: DEPOSIT :value: 'deposit' .. py:attribute:: DEPOSIT_MONEY :value: 'deposit_money' .. py:attribute:: MOVE :value: 'move' .. py:attribute:: REPAIR :value: 'repair' .. py:attribute:: WITHDRAW :value: 'withdraw' .. py:attribute:: WITHDRAW_MONEY :value: 'withdraw_money' .. py:class:: EpgpMemberNoteList Bases: :py:obj:`pydantic.BaseModel` Response for ``GET /api/epgp/member-notes`` (officer). .. py:attribute:: notes :type: list[EpgpMemberNoteRow] .. py:class:: EpgpMemberNoteRow Bases: :py:obj:`pydantic.BaseModel` One row of ``GET /api/epgp/member-notes`` (officer). .. py:attribute:: at :type: datetime.datetime .. py:attribute:: character :type: str .. py:attribute:: id :type: uuid.UUID .. py:attribute:: member_id :type: int | None .. py:attribute:: note :type: str .. py:attribute:: officer :type: str .. py:attribute:: voided :type: bool .. py:class:: EpgpRecruitList Bases: :py:obj:`pydantic.BaseModel` Response for ``GET /api/epgp/recruits`` (officer). .. py:attribute:: recruits :type: list[EpgpRecruitRow] .. py:class:: EpgpRecruitRow Bases: :py:obj:`pydantic.BaseModel` One recruit, as returned by ``GET /api/epgp/recruits`` / mutated by ``PUT .../{id}``. .. py:attribute:: at :type: datetime.datetime .. py:attribute:: character :type: str .. py:attribute:: checklist :type: RecruitChecklist .. py:attribute:: id :type: uuid.UUID .. py:attribute:: member_id :type: int | None .. py:attribute:: model_config .. py:attribute:: note :type: str | None .. py:attribute:: status :type: RecruitStatus .. py:attribute:: votes :type: list[ExportRecruitVote] .. py:attribute:: wow_class :type: sidequest_common.schemas.events.WowClass | None .. py:class:: EpgpRecruitUpdate Bases: :py:obj:`pydantic.BaseModel` Body for ``PUT /api/epgp/recruits/{id}`` (officer). Only fields present change. .. py:attribute:: checklist :type: RecruitChecklist | None :value: None .. py:attribute:: note :type: str | None .. py:attribute:: status :type: RecruitStatus | None :value: None .. py:class:: EpgpRecruitVoteCreate Bases: :py:obj:`pydantic.BaseModel` Body for ``POST /api/epgp/recruits/{id}/votes`` (officer). .. py:attribute:: vote :type: RecruitVoteChoice .. py:class:: ExportAnnouncement Bases: :py:obj:`pydantic.BaseModel` One announcement posted in game. .. py:attribute:: at :type: int .. py:attribute:: discord :type: bool :value: False .. py:attribute:: id :type: str .. py:attribute:: officer :type: str .. py:attribute:: text :type: str .. py:class:: ExportBankEntry Bases: :py:obj:`pydantic.BaseModel` One guild bank log row. .. py:attribute:: at :type: int .. py:attribute:: character :type: str | None .. py:attribute:: count :type: int :value: 0 .. py:attribute:: id :type: str .. py:attribute:: item_id :type: int | None :value: None .. py:attribute:: item_name :type: str | None .. py:attribute:: kind :type: BankKind .. py:attribute:: money :type: int :value: 0 .. py:attribute:: tab :type: int | None :value: None .. py:class:: ExportMemberNote Bases: :py:obj:`pydantic.BaseModel` One officer note about a character. .. py:attribute:: at :type: int .. py:attribute:: character :type: str .. py:attribute:: id :type: str .. py:attribute:: note :type: str .. py:attribute:: officer :type: str .. py:attribute:: voided :type: bool :value: False .. py:class:: ExportProfession Bases: :py:obj:`pydantic.BaseModel` One character's profession scan in the export payload. .. py:attribute:: character :type: str .. py:attribute:: max_skill :type: int :value: 0 .. py:attribute:: profession :type: str .. py:attribute:: recipes :type: list[ExportRecipe] .. py:attribute:: scanned_at :type: int .. py:attribute:: skill :type: int :value: 0 .. py:class:: ExportRecipe Bases: :py:obj:`pydantic.BaseModel` One known recipe in a profession scan. .. py:attribute:: id :type: int .. py:attribute:: item_id :type: int | None :value: None .. py:attribute:: name :type: str .. py:class:: ExportRecruit Bases: :py:obj:`pydantic.BaseModel` One recruiting candidate in the export payload. .. py:attribute:: at :type: int .. py:attribute:: character :type: str .. py:attribute:: checklist :type: RecruitChecklist .. py:attribute:: id :type: str .. py:attribute:: model_config .. py:attribute:: note :type: str | None .. py:attribute:: status :type: RecruitStatus .. py:attribute:: votes :type: list[ExportRecruitVote] .. py:attribute:: wow_class :type: GameClass | None .. py:class:: ExportRecruitVote Bases: :py:obj:`pydantic.BaseModel` One officer's vote on a recruit, within the export payload. .. py:attribute:: at :type: int .. py:attribute:: officer :type: str .. py:attribute:: vote :type: RecruitVoteChoice .. py:class:: ExportRoster Bases: :py:obj:`pydantic.BaseModel` The ``roster`` object in the export payload: one sweep, taken at ``taken_at``. .. py:attribute:: members :type: list[ExportRosterMember] .. py:attribute:: taken_at :type: int .. py:class:: ExportRosterMember Bases: :py:obj:`pydantic.BaseModel` One roster row in the export payload's ``roster.members``. .. py:attribute:: character :type: str .. py:attribute:: last_online_hours :type: float :value: 0 .. py:attribute:: level :type: int :value: 0 .. py:attribute:: model_config .. py:attribute:: online :type: bool :value: False .. py:attribute:: rank :type: str .. py:attribute:: rank_index :type: int :value: 0 .. py:attribute:: wow_class :type: GameClass | None .. py:attribute:: zone :type: str .. py:class:: ExportSignupV2 Bases: :py:obj:`pydantic.BaseModel` One in-game sign-up relayed by an officer's addon. .. py:attribute:: at :type: int .. py:attribute:: character :type: str .. py:attribute:: comment :type: str | None .. py:attribute:: event_id :type: uuid.UUID .. py:attribute:: id :type: str .. py:attribute:: model_config .. py:attribute:: role :type: sidequest_common.schemas.events.SignupRole | None :value: None .. py:attribute:: status :type: sidequest_common.schemas.events.SignupStatus .. py:attribute:: wow_class :type: GameClass | None .. py:class:: GameImportBadgeRef Bases: :py:obj:`pydantic.BaseModel` One earned badge's id and display name. .. py:attribute:: id :type: str .. py:attribute:: name :type: str .. py:class:: GameImportCharacter Bases: :py:obj:`pydantic.BaseModel` One of a member's characters in the ``members`` game-import section. .. py:attribute:: is_main :type: bool .. py:attribute:: level :type: int .. py:attribute:: model_config .. py:attribute:: name :type: str .. py:attribute:: wow_class :type: sidequest_common.schemas.events.WowClass | None .. py:class:: GameImportCrafter Bases: :py:obj:`pydantic.BaseModel` One character's profession, recipes as ids (named in the shared ``recipe_names`` table). .. py:attribute:: character :type: str .. py:attribute:: member_id :type: int | None .. py:attribute:: profession :type: str .. py:attribute:: recipes :type: list[int] .. py:attribute:: skill :type: int .. py:class:: GameImportInactiveMember Bases: :py:obj:`pydantic.BaseModel` One inactive member flagged in the officer-only game-import part. .. py:attribute:: last_raid_at :type: int | None .. py:attribute:: last_seen_at :type: int | None .. py:attribute:: member_id :type: int .. py:attribute:: name :type: str .. py:class:: GameImportLedgerEntry Bases: :py:obj:`pydantic.BaseModel` One ledger row in a member's on-demand sheet. .. py:attribute:: amount :type: int .. py:attribute:: at :type: int .. py:attribute:: decayed :type: float .. py:attribute:: kind :type: str .. py:attribute:: note :type: str | None .. py:attribute:: reason :type: str .. py:class:: GameImportLootEntry Bases: :py:obj:`pydantic.BaseModel` One loot row in a member's on-demand sheet. .. py:attribute:: at :type: int .. py:attribute:: gp :type: int .. py:attribute:: item_id :type: int .. py:attribute:: item_name :type: str .. py:attribute:: quality :type: int .. py:attribute:: response :type: str .. py:class:: GameImportMember Bases: :py:obj:`pydantic.BaseModel` One ``members`` row in the game-import payload's public part. .. py:attribute:: attendance_rate :type: float .. py:attribute:: badges :type: list[GameImportBadgeRef] .. py:attribute:: characters :type: list[GameImportCharacter] .. py:attribute:: events_attended :type: int .. py:attribute:: guild_ep :type: int .. py:attribute:: main :type: str | None .. py:attribute:: member_id :type: int .. py:attribute:: model_config .. py:attribute:: name :type: str .. py:attribute:: raid_status :type: str | None .. py:attribute:: rank :type: str | None .. py:attribute:: wow_class :type: sidequest_common.schemas.events.WowClass | None .. py:class:: GameImportNews Bases: :py:obj:`pydantic.BaseModel` One ``news`` row in the game-import payload's public part. .. py:attribute:: at :type: int .. py:attribute:: character :type: str | None .. py:attribute:: id :type: str .. py:attribute:: item_id :type: int | None .. py:attribute:: kind :type: NewsKind .. py:attribute:: quality :type: int | None .. py:attribute:: text :type: str .. py:class:: GameImportOfficerNote Bases: :py:obj:`pydantic.BaseModel` One note in the officer-only game-import part: same shape as the export. .. py:attribute:: at :type: int .. py:attribute:: character :type: str .. py:attribute:: id :type: str .. py:attribute:: note :type: str .. py:attribute:: officer :type: str .. py:attribute:: voided :type: bool .. py:class:: GameImportOfficerPart Bases: :py:obj:`pydantic.BaseModel` The officer-only part of the game-import payload, never broadcast to the whole guild. .. py:attribute:: inactive :type: list[GameImportInactiveMember] .. py:attribute:: member_notes :type: list[GameImportOfficerNote] .. py:attribute:: recruits :type: list[GameImportOfficerRecruit] .. py:class:: GameImportOfficerRecruit Bases: :py:obj:`pydantic.BaseModel` One recruit in the officer-only game-import part: same shape as the export, plus ``member_id``. .. py:attribute:: at :type: int .. py:attribute:: character :type: str .. py:attribute:: checklist :type: RecruitChecklist .. py:attribute:: id :type: str .. py:attribute:: member_id :type: int | None .. py:attribute:: model_config .. py:attribute:: note :type: str | None .. py:attribute:: status :type: RecruitStatus .. py:attribute:: votes :type: list[ExportRecruitVote] .. py:attribute:: wow_class :type: sidequest_common.schemas.events.WowClass | None .. py:class:: GameImportSheet Bases: :py:obj:`pydantic.BaseModel` One member's on-demand sheet: last 15 ledger entries and last 10 loot wins. .. py:attribute:: ledger :type: list[GameImportLedgerEntry] .. py:attribute:: loot :type: list[GameImportLootEntry] .. py:class:: GuildAnnouncementCreate Bases: :py:obj:`pydantic.BaseModel` Body for ``POST /api/guild/announcements`` (officer). .. py:attribute:: discord :type: bool :value: False .. py:attribute:: text :type: str .. py:class:: GuildAnnouncementRow Bases: :py:obj:`pydantic.BaseModel` One row of ``GET /api/guild/announcements`` (public). .. py:attribute:: at :type: datetime.datetime .. py:attribute:: author :type: str .. py:attribute:: id :type: uuid.UUID .. py:attribute:: posted_at :type: datetime.datetime | None .. py:attribute:: source :type: AnnouncementSource .. py:attribute:: text :type: str .. py:class:: GuildAnnouncementsPage Bases: :py:obj:`pydantic.BaseModel` Response for ``GET /api/guild/announcements`` (public), newest first, last 20. .. py:attribute:: items :type: list[GuildAnnouncementRow] .. py:class:: GuildBankPage Bases: :py:obj:`pydantic.BaseModel` Response for ``GET /api/guild/bank`` (member), newest first. .. py:attribute:: rows :type: list[GuildBankRow] .. py:attribute:: totals :type: GuildBankTotals .. py:class:: GuildBankRow Bases: :py:obj:`pydantic.BaseModel` One row of ``GET /api/guild/bank`` (member). .. py:attribute:: at :type: datetime.datetime .. py:attribute:: character :type: str | None .. py:attribute:: count :type: int .. py:attribute:: id :type: uuid.UUID .. py:attribute:: item_id :type: int | None .. py:attribute:: item_name :type: str | None .. py:attribute:: kind :type: BankKind .. py:attribute:: member_name :type: str | None .. py:attribute:: money :type: int .. py:attribute:: tab :type: int | None .. py:class:: GuildBankTotals Bases: :py:obj:`pydantic.BaseModel` Deposit/withdrawal totals over the last 30 days, for ``GET /api/guild/bank``. .. py:attribute:: deposits_30d :type: int .. py:attribute:: withdrawals_30d :type: int .. py:class:: GuildCrafterProfessionCount Bases: :py:obj:`pydantic.BaseModel` How many characters know each profession, for the ``professions`` filter list. .. py:attribute:: crafters :type: int .. py:attribute:: profession :type: str .. py:class:: GuildCrafterResult Bases: :py:obj:`pydantic.BaseModel` One matched recipe and the characters that know it. .. py:attribute:: crafters :type: list[GuildCrafterRow] .. py:attribute:: item_id :type: int | None .. py:attribute:: recipe_id :type: int .. py:attribute:: recipe_name :type: str .. py:class:: GuildCrafterRow Bases: :py:obj:`pydantic.BaseModel` One character that knows a matched recipe, in ``GET /api/guild/crafters``. .. py:attribute:: character :type: str .. py:attribute:: member_id :type: int | None .. py:attribute:: member_name :type: str | None .. py:attribute:: profession :type: str .. py:attribute:: skill :type: int .. py:class:: GuildCrafters Bases: :py:obj:`pydantic.BaseModel` Response for ``GET /api/guild/crafters`` (member). .. py:attribute:: professions :type: list[GuildCrafterProfessionCount] .. py:attribute:: results :type: list[GuildCrafterResult] .. py:class:: GuildNewsItem Bases: :py:obj:`pydantic.BaseModel` One row of ``GET /api/guild/news`` (public). .. py:attribute:: at :type: datetime.datetime .. py:attribute:: character :type: str | None .. py:attribute:: id :type: uuid.UUID .. py:attribute:: item_id :type: int | None .. py:attribute:: kind :type: NewsKind .. py:attribute:: quality :type: int | None .. py:attribute:: text :type: str .. py:class:: GuildNewsPage Bases: :py:obj:`pydantic.BaseModel` Response for ``GET /api/guild/news`` (public), newest first. .. py:attribute:: items :type: list[GuildNewsItem] .. py:class:: GuildRoster Bases: :py:obj:`pydantic.BaseModel` Response for ``GET /api/guild/roster`` (member). .. py:attribute:: members :type: list[GuildRosterMember] .. py:attribute:: taken_at :type: datetime.datetime | None .. py:attribute:: unlinked :type: list[GuildRosterUnlinked] .. py:class:: GuildRosterCharacter Bases: :py:obj:`pydantic.BaseModel` One of a member's characters on ``GET /api/guild/roster``. .. py:attribute:: is_main :type: bool .. py:attribute:: last_seen_at :type: datetime.datetime .. py:attribute:: level :type: int .. py:attribute:: model_config .. py:attribute:: name :type: str .. py:attribute:: wow_class :type: sidequest_common.schemas.events.WowClass | None .. py:attribute:: zone :type: str .. py:class:: GuildRosterMember Bases: :py:obj:`pydantic.BaseModel` One member's row on ``GET /api/guild/roster``, alts grouped under their main. .. py:attribute:: characters :type: list[GuildRosterCharacter] .. py:attribute:: main :type: str | None .. py:attribute:: member_id :type: int .. py:attribute:: name :type: str .. py:attribute:: raid_status :type: str | None .. py:attribute:: rank :type: str | None .. py:class:: GuildRosterUnlinked Bases: :py:obj:`pydantic.BaseModel` One roster-only character with no linked member, on ``GET /api/guild/roster``. .. py:attribute:: last_seen_at :type: datetime.datetime .. py:attribute:: level :type: int .. py:attribute:: model_config .. py:attribute:: name :type: str .. py:attribute:: rank :type: str .. py:attribute:: wow_class :type: sidequest_common.schemas.events.WowClass | None .. py:class:: MemberNoteImportCounts Bases: :py:obj:`pydantic.BaseModel` Counts for the ``member_notes`` section of one import. .. py:attribute:: new :type: int :value: 0 .. py:attribute:: updated :type: int :value: 0 .. py:attribute:: voided :type: int :value: 0 .. py:class:: NewsKind Bases: :py:obj:`enum.StrEnum` What kind of guild news feed item this is. Initialize self. See help(type(self)) for accurate signature. .. py:attribute:: ANNOUNCEMENT :value: 'announcement' .. py:attribute:: BADGE :value: 'badge' .. py:attribute:: BOSS_KILL :value: 'boss_kill' .. py:attribute:: FIRST_KILL :value: 'first_kill' .. py:attribute:: JOINED :value: 'joined' .. py:attribute:: LEVEL :value: 'level' .. py:attribute:: LOOT :value: 'loot' .. py:class:: PendingAnnouncement Bases: :py:obj:`pydantic.BaseModel` One queued Discord announcement, for ``GET /api/guilds/{guild_id}/announcements/pending`` (bot). .. py:attribute:: at :type: datetime.datetime .. py:attribute:: author :type: str .. py:attribute:: id :type: uuid.UUID .. py:attribute:: text :type: str .. py:class:: PendingAnnouncementsPage Bases: :py:obj:`pydantic.BaseModel` Response for ``GET /api/guilds/{guild_id}/announcements/pending`` (bot). .. py:attribute:: items :type: list[PendingAnnouncement] .. py:class:: ProfessionImportCounts Bases: :py:obj:`pydantic.BaseModel` Count of profession rows upserted by one import. .. py:attribute:: updated :type: int :value: 0 .. py:class:: RecruitChecklist Bases: :py:obj:`pydantic.BaseModel` An officer's vetting checklist for one recruit. .. py:attribute:: first_raid :type: bool :value: False .. py:attribute:: gear_check :type: bool :value: False .. py:attribute:: talked :type: bool :value: False .. py:attribute:: vouched :type: bool :value: False .. py:class:: RecruitImportCounts Bases: :py:obj:`pydantic.BaseModel` Counts for the ``recruits`` section of one import. .. py:attribute:: new :type: int :value: 0 .. py:attribute:: updated :type: int :value: 0 .. py:class:: RecruitStatus Bases: :py:obj:`enum.StrEnum` A recruiting candidate's status in the vetting pipeline. Initialize self. See help(type(self)) for accurate signature. .. py:attribute:: ACCEPTED :value: 'accepted' .. py:attribute:: APPLICANT :value: 'applicant' .. py:attribute:: DECLINED :value: 'declined' .. py:attribute:: TRIAL :value: 'trial' .. py:class:: RecruitVoteChoice Bases: :py:obj:`enum.StrEnum` An officer's vote on a recruit. Initialize self. See help(type(self)) for accurate signature. .. py:attribute:: NO :value: 'no' .. py:attribute:: WAIT :value: 'wait' .. py:attribute:: YES :value: 'yes' .. py:class:: RosterImportCounts Bases: :py:obj:`pydantic.BaseModel` Count of roster rows upserted by one import. .. py:attribute:: updated :type: int :value: 0 .. py:class:: SignupImportCounts Bases: :py:obj:`pydantic.BaseModel` Counts for the ``signups`` section of one import. .. py:attribute:: applied :type: int :value: 0 .. py:attribute:: skipped_older :type: int :value: 0 .. py:attribute:: unlinked :type: int :value: 0 .. py:data:: ANNOUNCEMENT_TEXT_MAX :value: 500 .. py:data:: INACTIVE_AFTER_DAYS :value: 14 .. py:data:: LEFT_GUILD_AFTER_DAYS :value: 30 .. py:data:: LEVEL_MILESTONE_STEP :value: 10 .. py:data:: MAX_ANNOUNCEMENTS_V2 :value: 200 .. py:data:: MAX_BANK_ENTRIES :value: 2000 .. py:data:: MAX_MEMBER_NOTES_V2 :value: 500 .. py:data:: MAX_PROFESSION_PAIRS :value: 400 .. py:data:: MAX_RECIPES_PER_PROFESSION :value: 2000 .. py:data:: MAX_RECRUITS_V2 :value: 200 .. py:data:: MAX_ROSTER_MEMBERS :value: 1000 .. py:data:: MAX_SIGNUPS_V2 :value: 500 .. py:data:: NOTE_TEXT_MAX :value: 500 .. py:data:: RECRUIT_NOTE_MAX :value: 500